Открыть в интерактивной справке · markdown для агентов: https://neuraldeep.ru/docs/drift-api.md

Drift · персональный агент через API

Drift — наш self-hosted AI-агент с памятью, sandbox'ом, скиллами и Google/Telegram-интеграциями. Обычно ты с ним общаешься на neuraldeep.ru/driftagent или через Telegram-бота. Но можно ходить и через публичный API — из curl, Python-SDK, Cursor/Cline/Continue, своих ботов или CI.

Доступ: только при оплаченном Drift (Starter / Pro). Trial и admin-grant — нет. Лимиты: наследуются от тарифа Hub-аккаунта (RPM / parallel / session / week — см. limits ниже). Source-метка: каждый запрос через API стампится как source=api — видно в логах кабинета и админки (web / api / telegram / scheduler).

1 · Выпустить токен

Открой Dashboard → секция «🤖 Drift API tokens» → «+ создать токен». Имя — для своих заметок («cursor», «my-bot», etc.). Plaintext значение (dft_*) показывается один раз при создании — скопируй сразу. Лимит 5 активных токенов на юзера. Отозвать можно в любой момент кнопкой «отозвать».

2 · Отправить сообщение

OpenAI-совместимый /v1/chat/completions. Внутри запускается ReAct-агент с тулзами (sandbox shell, web-search, Google, etc.) — ответ может прилететь не сразу, агент может крутить несколько итераций. Stream через stream: true рекомендуется для длинных задач.

curl https://drift.neuraldeep.ru/v1/chat/completions \
  -H "Authorization: Bearer dft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-120b",
    "messages": [
      {"role": "user", "content": "Что у меня запланировано на завтра?"}
    ]
  }'
curl -N https://drift.neuraldeep.ru/v1/chat/completions \
  -H "Authorization: Bearer dft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-120b",
    "messages": [{"role":"user","content":"Прочитай мой MEMORY.md и пересскажи кратко"}],
    "stream": true
  }'

# event-stream возвращает:
#   data: {"choices":[{"delta":{"content":"..."}}],...}
#   data: [DONE]
from openai import OpenAI

# base_url указывает на Drift, токен — личный dft_*
client = OpenAI(
    api_key="dft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    base_url="https://drift.neuraldeep.ru/v1",
)

# Non-stream
r = client.chat.completions.create(
    model="gpt-oss-120b",  # или qwen3.6-35b-a3b — две основные LLM Hub'а
    messages=[{"role": "user", "content": "Запиши в память: проект Y стартует 1 июня"}],
)
print(r.choices[0].message.content)

# Stream
stream = client.chat.completions.create(
    model="gpt-oss-120b",
    messages=[{"role": "user", "content": "Покажи список моих файлов и пересскажи MEMORY.md"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Поле model — это какой upstream LLM использовать внутри агента: gpt-oss-120b (131k ctx, длинный reasoning, рекомендуется по умолчанию) или qwen3.6-35b-a3b (256k ctx, нативные tool-calls). Если не указать — fallback на gpt-oss-120b. Не передавай весь history в messages — Drift сам поднимает память из своей БД, иначе будет дубль. Шли только последний user-промпт.

3 · Управлять чатами (conversations)

По умолчанию все сообщения идут в один дефолтный чат юзера. Если хочешь разделять контексты (например, рабочий и личный) — создавай chat'ы явно и передавай conversation_id.

# список своих чатов
curl https://drift.neuraldeep.ru/v1/conversations \
  -H "Authorization: Bearer dft_..."

# создать новый
curl -X POST https://drift.neuraldeep.ru/v1/conversations \
  -H "Authorization: Bearer dft_..." \
  -H "Content-Type: application/json" \
  -d '{"title": "Project X — research"}'
# → {"id": 1234, "title": "Project X — research", ...}

# отправить сообщение в конкретный чат
curl -X POST https://drift.neuraldeep.ru/v1/chat/completions \
  -H "Authorization: Bearer dft_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-oss-120b",
    "messages": [{"role":"user","content":"Какой статус по project X?"}],
    "conversation_id": 1234
  }'

# удалить чат
curl -X DELETE https://drift.neuraldeep.ru/v1/conversations/1234 \
  -H "Authorization: Bearer dft_..."

4 · Прочитать историю

curl "https://drift.neuraldeep.ru/v1/history?conversation_id=1234&limit=50" \
  -H "Authorization: Bearer dft_..."
# → {"messages":[{"id":..., "role":"user|assistant", "content":"...", "created_at":..., "source":"api"}, ...]}

Поле source в каждом сообщении показывает откуда оно пришло: web (neuraldeep.ru/driftagent), api (этот endpoint), telegram (бот), scheduler (фоновая задача по расписанию). Используй его если у тебя смешанные источники и нужно фильтровать.

Что НЕ поддерживается

· редактирование/regenerate сообщений (только append) · · branching (forks) · · webhook'и события · · multi-image в одном сообщении (один — да, через /v1/files/upload)

Свои tools / skills / MCP-серверы — поддерживается с 28.05.26. См. раздел «🔌 Свои tools, skills, MCP» ниже: можно передавать caller-tools (return-to-caller pattern), inline SKILL.md и подключать remote MCP-серверы прямо в запросе.

Разделы справки (markdown для агентов)