Dosyalar ve Yüklemeler
Kalıcı Dosyaları oluşturun, listeleyin, indirin ve silin ya da çok parçalı Yükleme Parçalarından bir Dosya oluşturun.
Files API; değiştirilemez, hesap kapsamlı user_data, batch ve batch_output File’larını depolar ve depolama URL’leri yerine kalıcı File ID’leri döndürür. Yeniden kullanılabilir bir File kaynağı kabul eden bir API’de File ID kullanın; uygulamanızın depolanan baytların tam olarak alınmasına ihtiyaç duyduğu durumlarda ise içerik uç noktasını kullanın.
Bir yükleme akışı seçin
- Tek bir çok parçalı istekten Dosya oluşturmak için
POST /v1/fileskullanın. Tamamlanmış biruser_dataDosyası en fazla52,428,800bayt içerebilir. - Doğrudan toplu giriş için
purpose=batchilePOST /v1/fileskullanın; en fazla95,000,000bayt desteklenir. - Son Dosyayı oluşturmadan önce Parçaları göndermek için Uploads API’sini
kullanın. Her Parça en fazla
67,108,864bayt içerebilir; tamamlanmış biruser_dataDosyası52,428,800bayt, tamamlanmış birbatchDosyası ise209,715,200bayt ile sınırlıdır. Tamamlanmamış bir Yükleme bir saat sonra sona erer. - Etkin Dosyalar ve devam eden rezervasyonlar,
5,368,709,120baytlık Hesap depolama sınırını paylaşır.
POST /api/v1/files, bir geçici URL döndüren ayrı bir geçici yükleme akışıdır. SDK files.create ve CLI runapi files create bu akışı kullanmaya devam eder. Kalıcı bir File nesnesi gerektiğinde files.createFile veya files.create_file ya da CLI runapi files create-file kullanın.
Bir isteğin kimliğini doğrulayın
Dosyalar ve Yüklemeler, standart bir RunAPI API anahtarı kullanır. Bunu Bearer token olarak gönderin:
export RUNAPI_API_KEY="runapi_..."
Her Dosya, Yükleme, Parça ve içerik isteği, kimliği doğrulanmış Hesap kapsamındadır. Başka bir Hesaba ait kimlik, söz konusu kaynağın var olup olmadığını açıklamadan 404 döndürür.
Uyumlu bir istemciyle Dosya oluşturun
OpenAI uyumlu bir istemciyi RunAPI /v1 temel URL’sine yönlendirin. RunAPI’ye özgü istek alanı gerekmez:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["RUNAPI_API_KEY"],
base_url="https://runapi.ai/v1",
)
with open("knowledge.pdf", "rb") as source:
file = client.files.create(file=source, purpose="user_data")
metadata = client.files.retrieve(file.id)
client.files.content(file.id).write_to_file("knowledge-copy.pdf")
client.files.delete(file.id)
Döndürülen File hiçbir zaman depolama tanımlayıcısı, arka uç veya taşıyıcı URL içermez.
API başvurusu
- Kalıcı Files API, File nesnesini ve oluşturma, listeleme, alma, içerik ve silme işlemlerini kapsar.
- Uploads API, Upload nesnesini ve oluşturma, parça ekleme, tamamlama ve iptal etme işlemlerini kapsar.
- Batches API, Moderasyon Toplu İşlemi oluşturma, durum, listeleme ve iptal etme işlemlerini kapsar.
Bir Toplu İşte Moderasyon çalıştır
Her satırda bir moderasyon isteği olacak şekilde JSONL girdi Dosyası oluşturun. Her satır uyumlu Toplu İş şeklini kullanır: custom_id, method, /v1/moderations olarak ayarlanmış url ve moderasyon modelini ile girdiyi içeren bir body. purpose=batch olan bir Dosya en fazla 50.000 istek içerebilir. Toplu İş kapasitesi şu anda 24h tamamlanma penceresiyle /v1/moderations uç noktasını kabul etmektedir.
INPUT_FILE_ID=$(curl -sS https://runapi.ai/v1/files \
-H "Authorization: Bearer $RUNAPI_API_KEY" \
-F purpose=batch \
-F [email protected] | jq -r .id)
BATCH_ID=$(curl -sS https://runapi.ai/v1/batches \
-H "Authorization: Bearer $RUNAPI_API_KEY" \
-H "Content-Type: application/json" \
-d "$(jq -n --arg file "$INPUT_FILE_ID" '{input_file_id:$file,endpoint:"/v1/moderations",completion_window:"24h"}')" \
| jq -r .id)
curl -sS "https://runapi.ai/v1/batches/$BATCH_ID" \
-H "Authorization: Bearer $RUNAPI_API_KEY"
İşleri listelemek için GET /v1/batches kullanın; durum terminal olana kadar GET /v1/batches/{batch_id} isteğini tekrarlayın ya da hâlâ çalışıyorken POST
/v1/batches/{batch_id}/cancel çağrısı yapın. Tamamlanan çıktı ve hata JSONL’leri batch_output Dosyaları olarak sunulur; meta verilerini GET /v1/files/{file_id} ile, tam baytları ise GET
/v1/files/{file_id}/content ile alın.
Çok Parçalı Yükleme yaşam döngüsü
Son bayt sayısı, dosya adı, MIME türü ve purpose=user_data ile bir Yükleme oluşturun. Bir veya daha fazla Parça ekleyin, ardından kimliklerini bileşim sırasında complete‘e iletin. Tamamlama, bitmiş Dosyasıyla birlikte Yüklemeyi döndürür.
UPLOAD_ID=$(curl -sS https://runapi.ai/v1/uploads \
-H "Authorization: Bearer $RUNAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{"bytes":1048576,"filename":"archive.bin","mime_type":"application/octet-stream","purpose":"user_data"}' \
| jq -r .id)
PART_ID=$(curl -sS "https://runapi.ai/v1/uploads/$UPLOAD_ID/parts" \
-H "Authorization: Bearer $RUNAPI_API_KEY" \
-F [email protected] | jq -r .id)
curl -sS "https://runapi.ai/v1/uploads/$UPLOAD_ID/complete" \
-H "Authorization: Bearer $RUNAPI_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"part_ids\":[\"$PART_ID\"]}"
Tamamlanmamış bir Yüklemeyi POST /v1/uploads/{upload_id}/cancel ile iptal edin. Aynı tamamlama niyetini veya iptali tekrarlamak güvenlidir; başka bir terminal sonucu zaten kazanmışsa rakip tamamlama, iptal veya süre sonu 409
upload_state_conflict döndürür.
CLI ve SDK kaynakları
CLI tüm yaşam döngüsünü ortaya koyar:
runapi files create-file knowledge.pdf
runapi files list --order desc
runapi files retrieve file_123
runapi files content file_123 --output knowledge-copy.pdf
runapi files delete file_123
runapi uploads create --bytes 1048576 --filename archive.bin --mime-type application/octet-stream
runapi uploads add-part upload_123 archive.part-01
runapi uploads complete upload_123 --part-id part_123
runapi uploads cancel upload_123
Her Sağlayıcı İstemcisi files ve uploads kaynaklarını kullanıma sunar. JavaScript ve PHP createFile / deleteFile / addPart; Python ve Ruby create_file / delete_file / add_part; Go CreateFile / DeleteFile / AddPart; Java createFile / deleteFile / addPart kullanır. List, retrieve, content, create, complete ve cancel işlemleri her dilin normal adlandırma kuralını izler. Paket kurulumu için bkz. SDK’lar.
Yaşam döngüsü davranışı
Dosya içeriği değiştirilemez. Dosyayı silmek, onu etkin listelerden hemen kaldırır ve depolama temizliğini zamanlar. Yükleme tamamlama işlemi Parçaları yalnızca belirtilen sırayla birleştirir ve başarılı bir tamamlama tek bir Dosya oluşturur. Belirsiz bir tamamlama yanıtını yeniden denerken orijinal Parça kimliği sırasını koruyun.