Python SDK (polylingo)

לקוח פייתון רשמי ל-PolyLingo REST API. משתמש ב-httpx ומספק לקוחות סינכרוניים ואסינכרוניים עם אותם שמות שיטות.

לפרטים גולמיים על HTTP, ראו API reference.


התקנה

pip install polylingo

פייתון: >= 3.9


לקוח סינכרוני

import os
import polylingo

client = polylingo.PolyLingo(
    api_key=os.environ["POLYLINGO_API_KEY"],
    base_url="https://api.usepolylingo.com/v1",  # אופציונלי; ברירת מחדל מוצגת
    timeout=120.0,  # אופציונלי; שניות לכל בקשה (ברירת מחדל 120)
)

result = client.translate(content="# Hello", targets=["es", "fr"], format="markdown")
print(result["translations"]["es"])

client.close()

מנהל הקשר:

with polylingo.PolyLingo(api_key="...") as client:
    print(client.languages())
פרמטרחובהתיאור
api_keyכןמפתח API (Authorization: Bearer …).
base_urlלאקידומת API כולל /v1. ברירת מחדל https://api.usepolylingo.com/v1.
timeoutלאזמן המתנה ב-httpx בשניות. ברירת מחדל 120.0.

לקוח אסינכרוני

import polylingo

async with polylingo.AsyncPolyLingo(api_key="...") as client:
    r = await client.translate(content="Hi", targets=["de"])

השתמש ב-await client.aclose() אם לא משתמשים ב-async with.

שמות השיטות תואמים ללקוח הסינכרוני; כל שיטות הרשת הן async def.


שיטות (סינכרוני ואסינכרוני)

health() / await health()

GET /health

h = client.health()
# async: h = await client.health()

languages() / await languages()

GET /languages

data = client.languages()
langs = data["languages"]

translate(...)

POST /translate

r = client.translate(
    content="# Hello",
    targets=["es", "fr"],
    format="markdown",  # אופציונלי
    source="en",        # אופציונלי
    model="standard",   # אופציונלי: "standard" | "advanced"
)
r["translations"]["es"]
r["usage"]["total_tokens"]

batch(...)

POST /translate/batch

b = client.batch(
    items=[
        {"id": "a", "content": "Hello"},
        {"id": "b", "content": "## Title", "format": "markdown"},
    ],
    targets=["de"],
)
b["results"][0]["translations"]["de"]

usage() / await usage()

GET /usage

u = client.usage()

עבודות — client.jobs

create / await create

POST /jobs — מחזיר את גוף התגובה 202 (job_id, status, …).

job = client.jobs.create(content=long_md, targets=["de", "fr"], format="markdown")
# kwargs מתקבלים גם: client.jobs.create(**{"content": ..., "targets": [...]})

get(job_id) / await get(job_id)

GET /jobs/:id. כאשר status == "completed", התגובות כוללות translations ו-usage ברמה העליונה.

translate(...) — נוחות

מבצע פולינג עד ש-completed או failed, או עד שהזמן נגמר.

done = client.jobs.translate(
    content=long_md,
    targets=["de", "fr", "es"],
    format="markdown",
    poll_interval=10.0,   # שניות בין פולינג; ברירת מחדל 5.0
    timeout=600.0,        # תקציב שניות **כולל**; ברירת מחדל 1200 (20 דקות)
    on_progress=lambda pos: print(f"Queue: {pos}"),
)
done["translations"]["de"]

אסינכרוני:

done = await client.jobs.translate(
    content=long_md,
    targets=["de"],
    poll_interval=2.0,
    timeout=300.0,
)

סטטוסים ב-API: pending, processing, completed, failed.


חריגות

מחלקהמתי
polylingo.PolyLingoErrorבסיס — status, error, הודעת args[0].
polylingo.AuthErrorHTTP 401.
polylingo.RateLimitErrorHTTP 429 — ייתכן ש-retry_after מוגדר (בשניות).
polylingo.JobFailedErrorעבודה שנכשלה, מטען שהושלם שגוי, או פולינג שפג תוקפו — job_id.
import polylingo

try:
    client.translate(content="x", targets=["es"])
except polylingo.AuthError as e:
    print(e.status, e.error)
except polylingo.RateLimitError as e:
    print(e.retry_after)
except polylingo.JobFailedError as e:
    print(e.job_id)
except polylingo.PolyLingoError as e:
    print(e.status, e.error)

תבנית עבודות אסינכרוניות (סיכום)

  1. ידני: jobs.create → לולאה של jobs.get עד מצב סופי.
  2. עזר: jobs.translate עם poll_interval, timeout, ו-on_progress אופציונלי.

מומלץ להשתמש בעבודות לתוכן גדול מאוד שבו translate סינכרוני עלול לפגוע בזמן המתנה של הלקוח או השרת.


טיפוסים

החבילה כוללת py.typed. אובייקטי תגובה הם ערכי dict פשוטים התואמים ל-API; השתמש בהערות בסגנון TypedDict בקוד שלך אם תרצה.


יומן שינויים

0.1.0

  • שחרור ראשוני: PolyLingo סינכרוני, AsyncPolyLingo אסינכרוני, כיסוי מלא של נקודות קצה כולל עזר פולינג jobs.translate.
SDK לפייתון | תיעוד PolyLingo | PolyLingo