Агент с инструментами
В конце у вас будет агент: модель сама решает, когда узнать погоду, посчитать или поискать в интернете, а ваш код выполняет эти действия и возвращает ей результат.
Нужно: отдельный ключ fetch_... с лимитом расхода и списком разрешённых моделей (создать), Python 3.10+ и pip install openai.
- 1Сохраните код
Файл
agent.py. Инструменты:get_weather(заглушка вместо сервиса погоды) иcalculate(калькулятор).agent.py""" Агент с инструментами: модель сама решает, какую функцию вызвать. pip install openai python agent.py "Какая погода в Москве и в Сочи? На сколько градусов в Сочи теплее?" """ import ast import json import operator import os import sys from openai import OpenAI MODEL = "deepseek-v4.1-flash" # или "claude-haiku-5-5", "gpt-6-luna" - 2Запуститеbash
export ZUKKO_API_KEY="fetch_ваш_ключ" python agent.py "Какая погода в Москве и в Сочи? На сколько градусов в Сочи теплее?"Модель попросит погоду в двух городах, затем разницу, затем ответит. Каждый вызов печатается.
- 3Добавьте веб-поиск (по желанию)
Вставьте код в
agent.pyпередif __name__ == "__main__":, а вSYSTEMдобавьте «для свежих фактов вызывай web_search».pythonimport urllib.error import urllib.request def web_search(query: str) -> dict: request = urllib.request.Request( "https://api.zukko.pro/v1/web-search", data=json.dumps({"query": query, "max_results": 5}).encode(), headers={ "Authorization": f"Bearer {os.environ['ZUKKO_API_KEY']}", "Content-Type": "application/json", }, ) try:До 10 результатов, около $0.0003–0.0005 за поиск, входит в лимиты ключа. Параметры — POST /v1/web-search.
1Цикл агента
- Отправьте переписку с параметром
tools. - Есть
tool_calls— выполните каждый вызов и верните результат сообщением с рольюtoolи тем жеtool_call_id. Повторите шаг 1. - Нет
tool_calls— вcontentокончательный ответ.
MAX_STEPS и MAX_COST_USD останавливают агента, если он ходит по кругу. Свой инструмент: функция в TOOL_FUNCTIONS и описание в TOOLS.
2Модели
| Модель | Цена за 1 млн токенов, вход / выход |
|---|---|
deepseek-v4.1-flash | $0.03 / $0.10 |
claude-haiku-5-5 | $0.05 / $0.20 |
gpt-6-luna | $0.04 / $0.21 |
Проверены через /v1/chat/completions. В Anthropic SDK и /v1/messages инструменты передаются как в Anthropic API.
3Если не работает
| Что видите | Что сделать |
|---|---|
| Модель отвечает текстом и не вызывает инструмент | Уточните description и инструкцию, возьмите модель из таблицы выше |
400 после ответа на вызов | Ответьте на каждый вызов из tool_calls сообщением tool с его tool_call_id |
| Агент вызывает одно и то же по кругу | Возвращайте из инструмента понятный текст ошибки |
| Модель выдумывает аргументы | Проверяйте их в функции и возвращайте ошибку — модель поправится |
429 key_daily_limit_reached | Сработал лимит ключа — проверьте, не зациклился ли агент |