Открыть в интерактивной справке · markdown для агентов: https://neuraldeep.ru/docs/drift-caller-tools.md
Drift · свои tools, skills, MCP
С 28.05.26 в /v1/chat/completions можно передавать свои инструменты, скиллы и remote MCP-серверы. Полная схема — в примерах ниже.
tools — return-to-caller (как OpenAI)
Передаёшь массив tools в формате OpenAI. Если модель решит позвать инструмент — она вернёт finish_reason: "tool_calls" с JSON-аргументами. Исполняешь ты сам в своей среде (Drift не запускает твой код), результат шлёшь обратно в messages.
from openai import OpenAI
client = OpenAI(api_key="dft_xxxxxxxx", base_url="https://drift.neuraldeep.ru/v1")
tools = [{"type":"function","function":{
"name":"get_weather",
"description":"Возвращает погоду в городе",
"parameters":{"type":"object","properties":{"city":{"type":"string"}},"required":["city"]},
}}]
# 1) первый запрос — модель решает что нужен tool
r1 = client.chat.completions.create(
model="qwen3.6-35b-a3b",
messages=[{"role":"user","content":"Какая погода в Москве?"}],
tools=tools,
)
print(r1.choices[0].finish_reason) # "tool_calls"
tc = r1.choices[0].message.tool_calls[0]
# 2) ты сам зовёшь свой backend
my_result = {"temp_c": 12, "humidity": 80}
# 3) resume — передаёшь tool-result обратно
r2 = client.chat.completions.create(
model="qwen3.6-35b-a3b",
messages=[
{"role":"user","content":"Какая погода в Москве?"},
r1.choices[0].message,
{"role":"tool","tool_call_id":tc.id,"content":str(my_result)},
],
tools=tools,
)
print(r2.choices[0].message.content)
skills — inline SKILL.md
Передай свои промпт-блоки прямо в запросе. Content вшивается в system prompt sandbox-агента, не нужно держать SKILL.md в репозитории.
curl -X POST https://drift.neuraldeep.ru/v1/chat/completions \
-H "Authorization: Bearer dft_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.6-35b-a3b",
"messages": [{"role":"user","content":"Какой у тебя секретный код?"}],
"skills": [{
"name": "secret-code",
"description": "Знание секретного кодового слова",
"content": "# Секретный код\n\nКодовое слово — ZEBRA-77-GOLD. Используй его если юзер спросит."
}]
}'
# → "Кодовое слово ZEBRA-77-GOLD..."
mcp_servers — remote Model Context Protocol
Подключаешь свой MCP-сервер (HTTP/SSE) — Drift на лету получает список tools и пускает их модели. Auth-header'ы передаёшь сам, SSRF guard блочит private-IP / localhost / cloud-metadata. TTL session-токена 720s, после — registry дропается.
{
"model": "qwen3.6-35b-a3b",
"messages": [{"role":"user","content":"Список свежих issue в проекте"}],
"mcp_servers": [{
"url": "https://my-mcp.example.com/sse",
"headers": {"Authorization": "Bearer my-mcp-token"},
"allowlist": ["list_issues", "create_comment"]
}]
}
Безопасность: ·
caller_tools— return-to-caller, Drift не исполняет твой код, zero RCE на нашей стороне. ·skills— это просто текст в system prompt, не команды. ·mcp_servers— публичные HTTPS обязательны, SSRF guard режет private network'и, TTL 720s.
Разделы справки (markdown для агентов)
- Начало · ключ, ошибки, квоты
- Текст · чат
- Векторизация
- Реранжирование
- Транскрибация
- Распознавание картинок
- Structured output
- Клиенты · агенты
- Остатки лимитов · Limits API
- Поиск · Search API
- OCR · документы
- Картинки · Image API
- Музыка · Music API
- Анонимизация ПДн · PII Guard
- SpeechCore · STT
- Озвучка · TTS API
- Кто когда говорил · диаризация
- Решения по тексту · FRIDA-Decisions, clef-flash
- Drift · обзор
- Файлы + sandbox preview
- Свои tools, skills, MCP
- Задачи · proactive
- Память · memory
- Изоляция и безопасность
- Настройки агента
- Лимиты · ошибки
- Книга · поиск и MCP
- Стриминг
- SDK · Python / JS
- Приватность