Hub documentation

API uç noktaları olarak Spaces

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 parameters

Python 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 ready

Dosyaları 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 hesap5 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

Update on GitHub