Все статьи
Статья
7 августа 2026 г.8 мин

Ядро агента: рассуждения плюс инструменты — на примере Grok 4.6 и открытых моделей

Модель с рассуждениями и вызовом функций — удобная основа для агента. Собираем минимальный цикл tool-calling на base_url Yenisei и выбираем модель под него.

Никита Барсуков


Ядро агента: рассуждения плюс инструменты

Агент — это модель, которая в цикле решает, что делать дальше, вызывает инструменты и учитывает их результаты. Чтобы это работало, от модели нужны две вещи одновременно: аккуратные рассуждения и надёжный вызов функций. Grok 4.6 от xAI часто приводят как пример такого сочетания.

В каталоге Yenisei Grok нет, но то же сочетание есть у открытых моделей: Kimi K2 Thinking (kimi-k2-thinking), DeepSeek V4 Pro (deepseek-pro), GLM 5.3 (glm-5.3). На них и соберём цикл.

Почему здесь важны рассуждения

У многих агентов слабое место — выбор, какой инструмент и когда вызвать. Модель без нормальных рассуждений хватается за первый попавшийся вызов, зацикливается или бросает задачу на середине. Модель с рассуждениями сначала прикидывает план, потом действует, и цикл сходится быстрее.

Минимальный цикл tool-calling

Определяем инструмент по OpenAI-совместимой схеме и отдаём модели:

from openai import OpenAI
import json
client = OpenAI(base_url="https://api.yenisei.ru/v1", api_key="YENISEI_KEY")
MODEL = "kimi-k2-thinking"
tools = [{
"type": "function",
"function": {
"name": "get_order_status",
"description": "Вернуть статус заказа по его номеру",
"parameters": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"],
},
},
}]
messages = [{"role": "user", "content": "Что с моим заказом A-4417?"}]
resp = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
msg = resp.choices[0].message
if msg.tool_calls:
call = msg.tool_calls[0]
args = json.loads(call.function.arguments)
result = lookup_order(args["order_id"]) # ваша функция
messages.append(msg)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result, ensure_ascii=False),
})
final = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
print(final.choices[0].message.content)

Что легко сломать

  • Слишком много инструментов сразу. Дайте модели 30 функций — и она начнёт путаться. Держите набор минимальным, группируйте похожее.
  • Мутные описания. description — это часть промпта. «Получить данные» — плохо; «Вернуть статус заказа по его номеру» — хорошо.
  • Нет ограничителя цикла. Всегда ставьте лимит на число итераций, иначе агент на редком случае может крутиться бесконечно и жечь бюджет.
  • Игнор ошибок инструмента. Если функция вернула ошибку, положите её текст в role: tool — хорошая модель, как правило, сама предложит обходной путь.

Какую модель взять

  • Kimi K2 Thinking — показывает ход рассуждений и уверенно вызывает функции; хороший выбор для агента с ветвлениями.
  • DeepSeek V4 Pro — рассуждения, инструменты и контекст до миллиона токенов: длинная история вызовов помещается в окно целиком.
  • GLM 5.3 — сильна на многошаговых агентных сценариях, окно тоже очень длинное.

Если же агент по сути линейный — «принял запрос, вызвал один API, вернул ответ» — флагман с рассуждениями избыточен. Такой цикл дешевле собрать на DeepSeek V4 Flash (deepseek-flash) или GLM 5.3 Flash (glm-5.3-flash) и не платить за размышления там, где выбор очевиден.

Длинный контекст тут ещё и страховка: история диалога с результатами всех вызовов помещается в окно, и агенту не приходится «забывать» первые шаги посреди задачи.