Hub documentation

مساحات كنقاط نهاية للواجهات البرمجية

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

مساحات كنقاط نهاية للواجهات البرمجية

كل مساحة Gradio على Hugging Face متاحة تلقائيًا كنقطة نهاية API. يمكنك استدعاؤها من Python أو JavaScript أو أي عميل HTTP. إذا كان بإمكانك استخدام مساحة في متصفحك، فيمكنك استدعاؤها كـ API.

البدء السريع

قم بتثبيت عميل Python واستدعاء أي مساحة عامة:

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!"

عرض نقاط النهاية المتاحة للواجهة البرمجية

تحتوي كل مساحة Gradio على رابط “Use via API” في التذييل. انقر عليه لعرض:

  • جميع نقاط النهاية المتاحة وأسمائها
  • أنواع المعاملات ووصفاتها
  • مقاطع أكواد مولّدة تلقائيًا بلغة بايثون وجافاسكربت
  • سجّال واجهة برمجة التطبيقات الذي يولّد الشيفرة من تفاعلاتك مع الواجهة

تعرض كل مساحة أيضًا مواصفة OpenAPI على:

https://<space-subdomain>.hf.space/gradio_api/openapi.json

على سبيل المثال: https://huggingface.co/proxy/abidlabs-en2fr.hf.space/gradio_api/openapi.json

يُفيد هذا في فهم مخطط واجهة برمجة التطبيقات بالكامل وتكامله في تطبيقاتك الخاصة.

يمكنك أيضًا فحص نقاط النهاية برمجياً:

from gradio_client import Client

client = Client("abidlabs/whisper", token="hf_...")
client.view_api()  # Prints all endpoints with parameters

عميل Python

التثبيت

pip install --upgrade gradio_client

يتطلب Python 3.10 أو أحدث.

الاتصال بمساحة

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 الخاص بك من https://huggingface.co/settings/tokens. بالنسبة إلى مساحات خاصة، تحتاج إلى رمز يتمتع بصلاحيات READ.

إنشاء تنبؤات

مزامنة (حاصرة):

result = client.predict("Hello", api_name="/predict")

غير متزامن (غير حاسم):

job = client.submit("Hello", api_name="/predict")
# Do other work...
result = job.result()  # Get result when ready

التعامل مع الملفات

استخدم handle_file() لأي مدخلات ملفات:

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")

مراقبة حالة المهمة

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()

نقاط النهاية للبث/المولّد

بالنسبة إلى نقاط النهاية التي تُنتج مخرجات متعددة:

job = client.submit(prompt="Write a story", api_name="/generate")

# Iterate over streaming outputs
for output in job:
    print(output)

عميل JavaScript

التثبيت

npm i @gradio/client

أو استخدم عبر CDN:

<script type="module">
  import { Client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js";
</script>

الاتصال والتنبؤ

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);

التعامل مع الملفات

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")
]);

بث النتائج

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 (curl)

يمكنك أيضًا استدعاء Gradio Spaces مباشرة عبر HTTP دون الحاجة إلى أي مكتبة عميل.

واجهة برمجة التطبيقات القائمة على الطابور (موصى بها)

تعتمد معظم المساحات على عملية من خطوتين:

الخطوة 1: إرسال طلبك

curl -X POST "https://huggingface.co/proxy/abidlabs-en2fr.hf.space/gradio_api/call/predict" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $HF_TOKEN" \
  -d '{"data": ["Hello, world"]}'

الاستجابة:

{"event_id": "abc123"}

الخطوة 2: الحصول على النتيجة

curl -N "https://huggingface.co/proxy/abidlabs-en2fr.hf.space/gradio_api/call/predict/abc123" \
  -H "Authorization: Bearer $HF_TOKEN"

الاستجابة (أحداث يرسلها الخادم):

event: complete
data: ["Bonjour, le monde!"]

يُعد ترويسة Authorization إلزامية للمساحات الخاصة، كما تمنح حدود معدل استخدام أفضل للمساحات العامة.

مساحات ZeroGPU

تخضع مساحات ZeroGPU لحصص استخدام تعتمد على نوع حسابك:

نوع الحسابحصة GPU اليومية المضمنة
غير مصادقدقيقتان
حساب مجاني5 دقائق
حساب PRO40 دقيقة

عندما تُوثّق باستخدام رمزك، يتم استهلاك حصة وحدات المعالجة الرسومية (GPU) الخاصة بحسابك. أما الطلبات غير الموثّقة فتستخدم مجمّعًا مشتركًا يخضع لقيود أكثر صرامة.

يمكن للمستخدمين من فئات PRO وTeam وEnterprise تجاوز الحصة اليومية المضمنة لديهم باستخدام الرصيد المسبق الدفع بمعدل 1 دولار مقابل 10 دقائق من وقت وحدة المعالجة الرسومية (GPU).

يمكنك الاشتراك في PRO للحصول على حصة يومية من وحدة معالجة الرسوميات (GPU) لمدة 40 دقيقة، وأولوية أعلى في قائمة الانتظار، وإمكانية توسيع حصتك باستخدام الرصيد.

أنماط شائعة

تكامل FastAPI

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}

معالجة الأخطاء مع إعادة المحاولة

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")

استدعاء مساحات من مساحة أخرى

عند استدعاء مساحة ZeroGPU من تطبيق Gradio الخاص بك، قم بتحويل مصادقة المستخدم:

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()

العثور على مساحات (Spaces) عبر البحث الدلالي

مع وجود آلاف من مساحات Gradio المتاحة، قد ترغب أحيانًا في العثور على مساحة لمهمة معينة:

curl -s "https://huggingface.co/api/spaces/semantic-search?q=text+to+speech&sdk=gradio"

يعيد هذا الأمر قائمة بـ Spaces مرتبة حسب الصلة الدلالية، مع بيانات وصفية تشمل معرّف Space، وعدد الإعجابات، ووصفًا مختصرًا. استخدم معامل sdk=gradio لتصفية Spaces التي تعرض واجهة برمجة تطبيقات (API).

اعرف المزيد

Update on GitHub