agentum-cloud-sdk
Типизированный async-клиент для Agentum Cloud — облака ваших документов с поиском и ответами на естественном языке (RAG). Загружаете файлы (PDF, DOCX, изображения, аудио), а затем ищете по ним и задаёте вопросы — ИИ отвечает с ссылками на источники.
Тонкая обёртка над httpx поверх REST /v1. Полные type hints, py.typed.
Установка
pip install agentum-cloud-sdk
Обновление до свежей версии: pip install -U agentum-cloud-sdk.
Требуется Python 3.13+.
Токен
- Войдите в приложение app.agentums.ru (через Яндекс).
- Настройки → API-токены → Создать — скопируйте токен
ak_…(показывается один раз).
Токен привязан к вашему аккаунту и подписке. Держите его в секрете (как пароль); если скомпрометирован — отзовите в настройках и создайте новый.
Быстрый старт
import asyncio
from agentum_cloud import AgentumClient
async def main() -> None:
async with AgentumClient(
base_url="https://api.cloud.agentums.ru",
api_key="ak_ваш_токен",
) as cloud:
# Загрузить документ
with open("contract.pdf", "rb") as f:
obj = await cloud.upload("contract.pdf", f.read())
# Дождаться, пока документ проиндексируется
await cloud.wait_until_ready(obj.id)
# Спросить — ответ с цитатами из ваших файлов
answer = await cloud.ask("Какой срок действия договора?")
print(answer.answer)
if answer.primary: # закреплённый главный файл под запрос («найди X» → вот он)
print(f" главный файл: {answer.primary.filename}")
for c in answer.citations:
print(f" источник: {c.filename}")
# Продолжить разговор: вернув session_id, получаем ответ с оглядкой на сказанное.
# Без него «а подробнее?» ушло бы на сервер отдельным диалогом и отвечалось с нуля.
more = await cloud.ask("а подробнее?", session_id=answer.session_id)
print(more.answer)
asyncio.run(main())
Агентный режим (стрим)
agent_chat возвращает поток событий: агент сам решает, какими инструментами
воспользоваться (поиск, конвертация, перевод, сборка PDF), и по пути шлёт токены ответа.
from contextlib import aclosing
from agentum_cloud import AgentumClient
async def main() -> None:
async with AgentumClient(base_url="https://api.cloud.agentums.ru", api_key="ak_…") as cloud:
# aclosing обязателен: только он закроет HTTP-ответ, если выйти из цикла через break
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}]")
elif ev.type == "paused":
# Опасное действие ждёт подтверждения — стрим на этом закончился
await confirm(cloud, ev)
break
Форма стрима — два правила, которые легко нарушить:
paused— конец стрима. Событияdoneне будет: агент упёрся в опасный инструмент (удаление, перезапись файла) и ждёт решения. Продолжают ран черезagent_continue, передавая решения по всем инструментам из события одним вызовом — не упомянутый инструмент молча не выполнится.error— не конец стрима. Кадр с ошибкой не прерывает ран: за ним могут прийти ещё токены иdone. Выходить из цикла поerror— потерять хвост ответа.
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)
session_id из start/done продолжает диалог: agent_chat(..., session_id=sid). История
доступна через list_chats() / get_chat(id); у агентных сессий kind == "agent", и их id
можно передать обратно в agent_chat как session_id.
Что умеет
Клиент покрывает продуктовый контракт /v1 целиком. Ниже — по разделам; полное описание
каждого метода лежит в его докстроке (help(cloud.имя_метода)).
Файлы. upload · add_link (страница или видео по URL) · upload_archive ·
wait_until_ready · list_objects / list_objects_page (у второго ещё и total) ·
get_object · rename_object · update_enrichment · reprocess_object ·
save_to_cloud · корзина: delete_object (soft) → restore_object /
delete_object_permanent / empty_trash.
Имена. Облако предлагает имя и папку, а решает пользователь: accept_folder,
apply_ai_name, restore_name, lock_name.
Содержимое. get_content (временная ссылка) · get_raw / get_thumbnail /
get_page_image (байты через API — у них наш CORS) · get_text_content · save_content
(с base_version — защита от гонки редакторов) · list_revisions / restore_revision ·
черновики (get_draft / save_draft / delete_draft) · get_summary · translate.
Преобразования. convert_targets → convert · pdf_op (15 операций) · image_op ·
assemble_pdf · zip_objects · reorganize. Все асинхронные: возвращают task_id,
готовность — соответствующий *_status, все они дают один JobStatus.
Осмысление. summarize · suggested_questions · protocol_questions →
build_protocol (протокол встречи отдельным файлом) · диаризация: diarize,
get_diarization, get_transcript, rename_speakers (он же энроллмент голоса),
list_voice_profiles.
Поиск и ответы. search (вектор + полнотекст + имя с расширением) · ask
(session_id продолжает разговор, object_ids сужает до конкретных файлов) · chat
(без агента и инструментов) · extract_attachment (текст файла без сохранения) ·
classify_intent · command · rewrite · transcribe · generate_document.
Агент. agent_chat / agent_continue (стрим, см. выше) · agent_status ·
agent_task · память: list_agent_memory, forget_agent_memory, clear_agent_memory ·
роли: list_agent_profiles, activate_agent_profile, create_agent_profile.
Организация. Папки (list_collections, create_collection, update_collection,
move_object, set_primary_object) · темы (list_themes, create_theme) · публичные
ссылки (create_share, list_shares, revoke_share и чтение по токену: get_shared,
list_shared_objects, get_shared_raw, upload_to_share) · скрытая зона
(unlock_hidden → hidden_token= в списках и поиске).
Дела. Поручения (list_tasks, update_task) · уведомления (list_notifications,
mark_notifications_read) · календарь (list_events, create_event, agenda,
create_calendar_feed, import_ics).
Аккаунт и расход. get_usage / get_usage_history / get_usage_breakdown /
get_quota · get_settings / update_settings · list_models · get_referral ·
свои LLM и хранилище (save_llm_integration, save_s3_integration, test_integration,
migrate_storage) · свои Telegram-боты (list_bots, create_bot, list_bot_chats,
list_bot_subscribers) · health / health_deep.
Все методы — корутины, кроме agent_chat/agent_continue: они возвращают асинхронный
генератор, так что await не нужен — сразу async for (внутри aclosing).
Клиент — async-context-manager (async with).
Заметки
- Данные изолированы по аккаунту: токен видит только файлы вашего аккаунта. Файлы, загруженные через Telegram-бота, доступны здесь же после привязки бота к аккаунту.
- Базовый URL прода —
https://api.cloud.agentums.ru. - Загрузка асинхронна.
uploadотвечаетstatus="pending"до обработки: искать по содержимому сразу после загрузки бесполезно, дождитесьwait_until_ready. - Список по умолчанию прячет четыре класса файлов — удалённые, вложения чата,
заметки и скрытые. «Файл загрузился, но его нет» почти всегда объясняется этим:
посмотрите
list_objects(trashed=True). - Ретраи осторожные, и это осознанно.
504не повторяется (это дедлайн сервера — повтор лишь сожжёт токены), неидемпотентный POST не перезапускается по таймауту ответа, агентный стрим идёт мимо ретраев вовсе. Автоматически повторяется только запрос, который заведомо не дошёл до сервера. - Вне SDK намеренно остались браузерные потоки входа, вебхуки чужих систем и управление
аккаунтом с биллингом — они живут на сессии приложения, а не на
ak_-токене.
Лицензия
MIT — см. LICENSE.
Metadata
Release files for agentum-cloud-sdk 0.1.601
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| agentum_cloud_sdk-0.1.601.tar.gz | 64.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| agentum_cloud_sdk-0.1.601-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 158.7 kB
Release files / agentum_cloud_sdk-0.1.601.tar.gz
| Download URL | agentum_cloud_sdk-0.1.601.tar.gz |
|---|---|
| Size | 64.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
15090584f478fd38681abe34af8aeccf7766588fd333a34d81e4bebfcb7b6edc
|
|
BLAKE2b-256 checksum How to use checksums |
17663f603321a7774643ef85817a8c80c8af93c6fde61cccccf77cded33c0073
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.11
|
Release files / agentum_cloud_sdk-0.1.601-py3-none-any.whl
| Download URL | agentum_cloud_sdk-0.1.601-py3-none-any.whl |
|---|---|
| Size | 94.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c4bd1bdb04c37a97583024277ba235f154303184753ff26e4d26990e465ff79e
|
|
BLAKE2b-256 checksum How to use checksums |
2d9125e8ac6f07e282de895efe1b195ba66d83e7740af7f12594de81fb580e1b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.11
|
Security for agentum-cloud-sdk 0.1.601
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.