İçeriğe geç
Geliştirici Kaynakları
Geliştirici Kaynakları

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/files kullanın. Tamamlanmış bir user_data Dosyası en fazla 52,428,800 bayt içerebilir.
  • Doğrudan toplu giriş için purpose=batch ile POST /v1/files kullanın; en fazla 95,000,000 bayt desteklenir.
  • Son Dosyayı oluşturmadan önce Parçaları göndermek için Uploads API’sini kullanın. Her Parça en fazla 67,108,864 bayt içerebilir; tamamlanmış bir user_data Dosyası 52,428,800 bayt, tamamlanmış bir batch Dosyası ise 209,715,200 bayt ile sınırlıdır. Tamamlanmamış bir Yükleme bir saat sonra sona erer.
  • Etkin Dosyalar ve devam eden rezervasyonlar, 5,368,709,120 baytlı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:

SHELL
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:

PYTHON
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.

SHELL
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.

SHELL
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:

SHELL
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.