Перейти к содержимому

Python SDK

Окно терминала
pip install agentum-cloud-sdk

Тонкая обёртка над httpx поверх REST /v1: полные type hints, py.typed, все методы — корутины. Клиент открывается как async-контекст:

async with AgentumClient(base_url="https://api.cloud.agentums.ru", api_key="ak_…") as cloud:
...

Покрытие контракта проверяется тестом на нашей стороне: маршрут, у которого нет метода в клиенте, роняет сборку. Отставание SDK от API — не то, что вы узнаёте первым.

Файлы. upload · add_link (страница или видео по URL) · upload_archive · wait_until_ready · list_objects / list_objects_page · get_object · rename_object · reprocess_object · корзина: delete_objectrestore_object / delete_object_permanent / empty_trash.

Содержимое. get_content (временная ссылка) · get_raw / get_thumbnail / get_page_image (байты через API — у них наш CORS) · get_text_content · save_contentbase_version — защита от гонки редакторов) · list_revisions / restore_revision · черновики · get_summary · translate.

Преобразования. convert_targetsconvert · pdf_op (15 операций) · image_op · assemble_pdf · zip_objects · reorganize.

Осмысление. summarize · suggested_questions · protocol_questionsbuild_protocol · диаризация: diarize, get_diarization, get_transcript, rename_speakers.

Поиск и ответы. search · ask · chat · extract_attachment · classify_intent · command · rewrite · transcribe · generate_document.

Агент. agent_chat / agent_continue · agent_status · agent_task · память · роли.

Организация. Папки · темы · публичные ссылки · скрытая зона.

Дела. Поручения · уведомления · календарь.

Аккаунт. get_usage / get_quota · get_settings · list_models · свои LLM и хранилище · свои Telegram-боты · health.

Описание каждого метода — в его докстроке: help(cloud.ask).

agent_chat возвращает асинхронный генератор, а не корутину: await не нужен, сразу async for — и обязательно внутри aclosing.

from contextlib import aclosing
async with aclosing(cloud.agent_chat("собери все счета за июнь в один PDF")) as stream:
async for ev in stream:
if ev.type == "token":
print(ev.delta, end="", flush=True)
elif ev.type == "tool_start":
print(f"\n[{ev.name}]")

aclosing не украшение: только он закроет HTTP-ответ, если выйти из цикла через break.

async def confirm(cloud, ev) -> None:
decisions = [(t.tool_call_id, input(f"{t.name} {t.args}? [y/n] ") == "y") for t in ev.tools]
async with aclosing(
cloud.agent_continue(run_id=ev.run_id, session_id=ev.session_id, decisions=decisions)
) as stream:
async for ev in stream:
if ev.type == "token":
print(ev.delta, end="", flush=True)

Браузерные потоки входа, вебхуки чужих систем и управление аккаунтом с биллингом. Они живут на сессии приложения, а не на ak_-токене, и клиентскому коду недоступны в принципе.