0Pricing
Learn AI with Python · Урок

Вызов функций и использование инструментов с LLM

Определение инструментов в виде схемы JSON, обработка tool_calls в ответе, выполнение и возврат результатов

«Вызов функций и использование инструментов с LLM» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Что такое вызов функций

Вызов функций (также называемый использованием инструментов) позволяет LLM запрашивать выполнение функции в Вашем коде. Модель сама ничего не выполняет — она возвращает структурированный запрос со словами: «вызовите эту функцию с такими аргументами». Ваша программа выполняет функцию и передаёт результат обратно.

Так LLM получают актуальные данные, выполняют вычисления или запускают реальные действия.

Описание инструмента

Вы передаёте модели список инструментов. У каждого инструмента есть name, description и parameters, заданные в виде схемы JSON. Описание особенно важно: по нему модель решает, когда инструмент подходит.

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "City name"}
            },
            "required": ["city"]
        }
    }
}]

Схема JSON для параметров

Поле parameters соответствует стандартной схеме JSON. Вы объявляете объект со свойствами properties, каждое из которых имеет тип type и описание, а также массив required. Так Вы точно указываете модели, какие аргументы нужно сформировать.

"parameters": {
    "type": "object",
    "properties": {
        "city": {"type": "string"},
        "units": {"type": "string", "enum": ["celsius", "fahrenheit"]}
    },
    "required": ["city"]
}

Передача инструментов модели

Передайте список tools в chat.completions.create(). Теперь модель может ответить текстом OR вызовом инструмента — это зависит от запроса пользователя.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Weather in Tokyo?"}],
    tools=tools
)

Обнаружение вызова инструмента

Когда модели нужен инструмент, ответ содержит message.tool_calls, а не обычный текст. Проверьте, существует ли этот список, прежде чем считать ответ обычным.

msg = response.choices[0].message

if msg.tool_calls:
    print("Model wants to call a tool")
else:
    print(msg.content)

Разбор аргументов

Каждый вызов инструмента содержит function.name и function.arguments. Аргументы приходят в виде строки JSON, поэтому перед использованием разберите их с помощью json.loads().

import json

call = msg.tool_calls[0]
name = call.function.name
args = json.loads(call.function.arguments)
print(name, args)  # get_weather {"city": "Tokyo"}

Выполнение функции

Теперь выполните настоящую функцию Python в YOUR коде, передав ей разобранные аргументы. LLM лишь решает, что вызвать; настоящую работу выполняет Ваш код.

def get_weather(city):
    return {"city": city, "temp_c": 18, "condition": "Cloudy"}

result = get_weather(**args)

Возврат результата модели

Отправьте результат обратно, чтобы модель могла составить ответ на естественном языке. Добавьте исходное сообщение ассистента, затем сообщение с ролью tool, содержащее результат и соответствующий tool_call_id.

messages.append(msg)  # the assistant tool-call message
messages.append({
    "role": "tool",
    "tool_call_id": call.id,
    "content": json.dumps(result)
})

Формирование окончательного ответа

Снова вызовите модель с обновлённым списком messages. Теперь, получив результат инструмента, она сформирует понятный итоговый ответ для пользователя.

final = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    tools=tools
)
print(final.choices[0].message.content)

Полный цикл использования инструментов

Полный цикл выглядит так: (1) отправить инструменты, (2) получить от модели вызов инструмента, (3) разобрать аргументы, (4) выполнить функцию, (5) вернуть результат в сообщении инструмента, (6) получить ответ от модели. Модель может запросить несколько вызовов инструментов, прежде чем завершить работу, поэтому выполняйте цикл, пока tool_calls не станет пустым.

Управление выбором инструмента

Используйте параметр tool_choice, чтобы направлять поведение модели. Значение "auto" (по умолчанию) позволяет модели выбирать самостоятельно, "none" запрещает инструменты, а передача имени конкретного инструмента принудительно вызывает именно эту функцию. Это полезно, когда необходимо гарантировать структурированный вывод.

response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    tools=tools,
    tool_choice={"type": "function", "function": {"name": "get_weather"}}
)

Быстрая проверка

Проверьте, насколько хорошо Вы поняли использование инструментов.

Повторение: вызов функций

Вы определили инструменты с именем, описанием и параметрами в виде схемы JSON, а затем передали их модели. Вы обнаруживали tool_calls, разбирали function.arguments с помощью json.loads(), выполняли настоящую функцию и возвращали результат в сообщении с ролью tool и соответствующим tool_call_id.

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

Часто задаваемые вопросы

Урок «Вызов функций и использование инструментов с LLM» бесплатный?

Да — полный текст урока «Вызов функций и использование инструментов с LLM» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Вызов функций и использование инструментов с LLM»?

Определение инструментов в виде схемы JSON, обработка tool_calls в ответе, выполнение и возврат результатов Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Вызов функций и использование инструментов с LLM»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. API OpenAI: chat.completions и потоковая передача
  2. API Anthropic Claude в Python
  3. Вызов функций и использование инструментов с LLM
  4. Проектирование промптов для продуктивных приложений с LLM
← Назад к Learn AI with Python