Hub documentation
API uç noktaları olarak Spaces
API uç noktaları olarak Spaces
Hugging Face üzerindeki her Gradio Space, otomatik olarak bir API uç noktası olarak kullanılabilir hale gelir. Python, JavaScript veya herhangi bir HTTP istemcisi üzerinden çağrılabilir. Bir Space'i tarayıcınızda kullanabiliyorsanız, onu bir API olarak da çağırabilirsiniz.
Hızlı başlangıç
Python istemcisini yükleyin ve herhangi bir herkese açık Space'i çağırın:
pip install --upgrade gradio_client
from gradio_client import Client
client = Client("abidlabs/en2fr", token="hf_...")
result = client.predict("Hello, world!", api_name="/predict")
print(result) # "Bonjour, le monde!"Kullanılabilir API uç noktalarını görüntüle
Her Gradio Space'in altbilgisinde bir “Use via API” bağlantısı bulunur. Şunu görmek için tıklayın:
- Tüm kullanılabilir uç noktalar ve adları
- Parametre türleri ve açıklamaları
- Python ve JavaScript için otomatik oluşturulan kod parçacıkları
- Arayüz etkileşimlerinizden kod üreten bir API Kaydedici
Her Space ayrıca bir OpenAPI spesifikasyonunu şu adreste sunar:
https://<space-subdomain>.hf.space/gradio_api/openapi.jsonÖrneğin: https://abidlabs-en2fr.hf.space/gradio_api/openapi.json
Bu, tam API şemasını anlamak ve onu kendi uygulamalarınıza entegre etmek için kullanışlıdır.
Ayrıca uç noktaları programatik olarak da inceleyebilirsiniz:
from gradio_client import Client
client = Client("abidlabs/whisper", token="hf_...")
client.view_api() # Prints all endpoints with parametersPython istemcisi
Kurulum
pip install --upgrade gradio_client
Python 3.10+ gerektirir.
Bir Uzaya Bağlan
from gradio_client import Client
# Public Space
client = Client("username/space-name")
# Private Space (requires token)
client = Client("username/private-space", token="hf_xxxxx")Hugging Face tokenınızı https://huggingface.co/settings/tokens adresinden alabilirsiniz. Özel Spaces için READ izinlerine sahip bir token gereklidir.
Tahminler Yapın
Senkron (engelleyici):
result = client.predict("Hello", api_name="/predict")Asenkron (engellemeyen):
job = client.submit("Hello", api_name="/predict")
# Do other work...
result = job.result() # Get result when readyDosyaları Yönet
Herhangi bir dosya girişi için handle_file() kullanın:
from gradio_client import Client, handle_file
client = Client("abidlabs/whisper", token="hf_...")
# From local file
result = client.predict(audio=handle_file("audio.wav"), api_name="/predict")
# From URL
result = client.predict(audio=handle_file("https://example.com/audio.wav"), api_name="/predict")İş Durumunu İzle
job = client.submit("Hello", api_name="/predict")
# Check status
status = job.status()
print(f"Queue position: {status.rank}, ETA: {status.eta}")
# Check if complete
if job.done():
result = job.result()
# Cancel a pending job
job.cancel()Akış/Üretici Uç Noktaları
Çoklu çıktı üreten uç noktalar için:
job = client.submit(prompt="Write a story", api_name="/generate")
# Iterate over streaming outputs
for output in job:
print(output)JavaScript istemcisi
Kurulum
npm i @gradio/client
Veya CDN üzerinden kullanın:
<script type="module">
import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js";
</script>Bağlan ve Tahmin Et
import { Client } from "@gradio/client";
const app = await Client.connect("abidlabs/en2fr", { token: "hf_..." });
const result = await app.predict("/predict", ["Hello"]);
console.log(result.data);Dosyaları Yönet
import { Client, handle_file } from "@gradio/client";
const app = await Client.connect("abidlabs/whisper", { token: "hf_..." });
const result = await app.predict("/predict", [
handle_file("https://example.com/audio.wav")
]);Sonuçları Akıt
const job = app.submit("/predict", ["Hello"]);
for await (const message of job) {
if (message.type === "data") {
console.log("Result:", message.data);
}
if (message.type === "status") {
console.log("Queue position:", message.position);
}
}REST API (curl)
Herhangi bir istemci kütüphanesi olmadan Gradio Spaces'i doğrudan HTTP üzerinden de çağırabilirsiniz.
Kuyruk Tabanlı API (Önerilen)
Çoğu Space iki aşamalı bir süreç kullanır:
1. Adım: Talebinizi gönderin
curl -X POST "https://abidlabs-en2fr.hf.space/gradio_api/call/predict" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $HF_TOKEN" \
-d '{"data": ["Hello, world"]}'Yanıt:
{"event_id": "abc123"}Adım 2: Sonucu alın
curl -N "https://abidlabs-en2fr.hf.space/gradio_api/call/predict/abc123" \
-H "Authorization: Bearer $HF_TOKEN"Yanıt (Sunucu Tarafından Gönderilen Olaylar):
event: complete
data: ["Bonjour, le monde!"]Özel Spaces için Authorization başlığı zorunludur ve herkese açık Spaces üzerinde daha iyi hız sınırları sağlar.
ZeroGPU Uzayları
ZeroGPU Spaces, hesap türünüze dayalı kullanım kotalarına sahiptir:
| Hesap Türü | Dahili Günlük GPU Kontenjanı |
|---|---|
| Kimlik doğrulanmamış | 2 dakika |
| Ücretsiz hesap | 5 dakika |
| PRO hesabı | 40 dakika |
Token ile kimlik doğrulaması yaptığınızda, hesabınızın GPU kotası tüketilir. Kimlik doğrulanmamış istekler, daha sıkı sınırlara sahip ortak bir havuzu kullanır.
PRO, Team ve Enterprise kullanıcıları, GPU süresi için 10 dakikaya $1 oranıyla ön ödemeli krediler kullanarak günlük kota limitlerinin ötesine geçebilir.
Günlük 40 dakikalık GPU kotası, daha yüksek kuyruk önceliği ve kredilerle kotanızı genişletme yeteneği için PRO'ya abone olabilirsiniz.
Yaygın kalıplar
FastAPI Entegrasyonu
from fastapi import FastAPI
from gradio_client import Client, handle_file
app = FastAPI()
client = Client("abidlabs/whisper", token="hf_...")
@app.post("/transcribe/")
async def transcribe(file_url: str):
result = client.predict(audio=handle_file(file_url), api_name="/predict")
return {"transcription": result}Yeniden Denemelerle Hata Yönetimi
import time
from gradio_client import Client
def predict_with_retry(client, *args, max_retries=3, **kwargs):
for attempt in range(max_retries):
try:
return client.predict(*args, **kwargs)
except Exception as e:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # Exponential backoff
else:
raise
client = Client("username/space", token="hf_...")
result = predict_with_retry(client, "input", api_name="/predict")Bir Uzaydan Başka Bir Uzaya Çağrı
Kendi Gradio uygulamanızdan bir ZeroGPU Space'ini çağırdığınızda, kullanıcının kimlik doğrulamasını iletin:
import gradio as gr
from gradio_client import Client
def process(prompt, request: gr.Request):
x_ip_token = request.headers.get('x-ip-token', '')
client = Client("owner/zerogpu-space", headers={"x-ip-token": x_ip_token})
return client.predict(prompt, api_name="/predict")
demo = gr.Interface(fn=process, inputs="text", outputs="text")
demo.launch()Anlamsal arama ile Spaces bul
Binlerce Gradio Spaces mevcut olduğundan, belirli bir görev için bir tane bulmak isteyebilirsiniz:
curl -s "https://huggingface.co/api/spaces/semantic-search?q=text+to+speech&sdk=gradio"Bu, Space'leri anlamsal benzerliğe göre sıralar; Space kimliği, beğeniler ve kısa açıklama gibi meta verileri içerir. API sunan Space'leri filtrelemek için sdk=gradio parametresini kullanın.
Daha fazla bilgi edinin
- Gradio Python İstemcisi Kılavuzu
- Gradio JavaScript İstemcisi Kılavuzu
- curl ile Gradio Uygulamalarına Sorgu Gönderme
- Spaces ZeroGPU