ДокументаціяІнтеграції
Усі теми

SHVYDKO / Інтеграції

Python через HTTP

Повний приклад на стандартній бібліотеці Python без окремого SDK.

Підготуйте вхідні дані

Збережіть request.json зі сторінки першого запиту. Передайте SHVYDKO_BASE_URL і SHVYDKO_API_KEY через середовище серверного процесу. Приклад використовує json, os та urllib.request зі стандартної бібліотеки.

Запит, статус і відповідь

Приклад навмисно не повторює POST автоматично. Додайте власний обмежений механізм повторів після аналізу HTTP-статусу та ризику повторної обробки.

request.py · Python 3
import json
import os
import urllib.error
import urllib.request

base_url = os.environ["SHVYDKO_BASE_URL"].rstrip("/")
api_key = os.environ["SHVYDKO_API_KEY"]
with open("request.json", encoding="utf-8") as source:
    payload = json.load(source)

request = urllib.request.Request(
    base_url + "/v1/systemone",
    data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + api_key,
        "Content-Type": "application/json",
        "User-Agent": "ShvydkoClient/1.0",
    },
    method="POST",
)

try:
    with urllib.request.urlopen(request, timeout=150) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    # Do not log the API key or the original customer context.
    try:
        detail = json.loads(error.read()).get("detail", "Request failed")
    except (ValueError, AttributeError):
        detail = "Non-JSON error response"
    retry_after = error.headers.get("Retry-After")
    raise SystemExit(
        f"Shvydko HTTP {error.code}: {detail}; Retry-After={retry_after}"
    )
except (urllib.error.URLError, TimeoutError) as error:
    raise SystemExit(
        "Network failure; check Usage before repeating a paid request"
    ) from error

print("request_id:", result["request_id"])
print("team:", result["answers"]["team"]["choice"])
print("input_tokens:", result["usage"]["input_tokens"])
print("cost_usd:", result["usage"]["cost_usd"])

Підключення до застосунку

  • Зберігайте секрет у серверному середовищі, окремо для різних середовищ розробки.
  • Передавайте до бізнес-логіки лише перевірені поля й дозволені категорії.
  • Обмежуйте паралельність відповідно до квоти організації.
  • Зіставляйте request_id зі своїм ID задачі без запису секретів у журнал.

Це прямий HTTP-клієнт Shvydko. Окремий офіційний Python SDK або сумісність усіх сторонніх SDK тут не заявляються.