ДокументацияАгент с инструментами

Агент с инструментами

СценарииПродвинутый25 мин

В конце у вас будет агент: модель сама решает, когда узнать погоду, посчитать или поискать в интернете, а ваш код выполняет эти действия и возвращает ей результат.

Нужно: отдельный ключ fetch_... с лимитом расхода и списком разрешённых моделей (создать), Python 3.10+ и pip install openai.

  1. 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. 2
    Запустите
    bash
    export ZUKKO_API_KEY="fetch_ваш_ключ"
    python agent.py "Какая погода в Москве и в Сочи? На сколько градусов в Сочи теплее?"

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

  3. 3
    Добавьте веб-поиск (по желанию)

    Вставьте код в agent.py перед if __name__ == "__main__":, а в SYSTEM добавьте «для свежих фактов вызывай web_search».

    python
    import 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Цикл агента

  1. Отправьте переписку с параметром tools.
  2. Есть tool_calls — выполните каждый вызов и верните результат сообщением с ролью tool и тем же tool_call_id. Повторите шаг 1.
  3. Нет 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Сработал лимит ключа — проверьте, не зациклился ли агент
Агент с инструментами · Документация Zukko