0Pricing
AI Agents · Урок

Как работает вызов функций

Разберитесь во всём цикле: модель выбирает инструмент, ваш код запускает его, вы отправляете результат обратно, а модель продолжает работу.

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

Вызов функций: основной принцип

Вызов функций — это протокол, который превращает LLM в агента. Модель выбирает функцию из предоставленного Вами списка, заполняет аргументы, а Вы запускаете эту функцию.

Этот принцип поддерживают OpenAI, Anthropic, Google, Cohere, Mistral и большинство крупных моделей OSS при наличии подходящей донастройки.

Пять шагов обмена

  1. Вы отправляете сообщения и определения инструментов
  2. Модель возвращает либо окончательный ответ, либо вызов инструмента
  3. Вы выполняете инструмент с аргументами модели
  4. Вы добавляете результат как сообщение инструмента
  5. Вы снова вызываете модель с обновлённой историей

Повторяйте шаги 2–5, пока модель не вернёт окончательный ответ.

Шаг 1: определение инструментов

Определения инструментов — это схемы JSON, описывающие каждую функцию:

tools = [{
    'type': 'function',
    'function': {
        'name': 'get_weather',
        'description': 'Current weather for a city',
        'parameters': {
            'type': 'object',
            'properties': {
                'city': {'type': 'string'}
            },
            'required': ['city']
        }
    }
}]
import json
print(json.dumps(tools, indent=2))

Шаг 2: первый вызов модели

Отправьте сообщения и инструменты:

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
    tools=tools,
)
message = response.choices[0].message
print(message.tool_calls)
# [ToolCall(name='get_weather', arguments='{"city": "Paris"}')]

Шаг 3: выполнение инструмента

Передайте управление своей функции на Python:

import json

def get_weather(city: str) -> dict:
    # ...call your weather API...
    return {'city': city, 'temp_c': 18, 'condition': 'cloudy'}

tool_call = message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_weather(**args)

Шаг 4: добавление результата инструмента

Добавьте сообщение инструмента с соответствующим ID:

messages.append(message)  # the assistant message with tool_calls
messages.append({
    'role': 'tool',
    'tool_call_id': tool_call.id,
    'content': json.dumps(result)
})

Шаг 5: второй вызов модели

Снова вызовите модель — теперь у неё есть результат инструмента, и она создаст ответ для пользователя:

final = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    tools=tools,
)
print(final.choices[0].message.content)
# 'It is currently 18 degrees and cloudy in Paris.'

Цикл агента

Оберните это в цикл while: модель может последовательно вызвать несколько инструментов:

while True:
    response = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
    msg = response.choices[0].message
    messages.append(msg)
    if not msg.tool_calls:
        return msg.content  # final answer
    for tc in msg.tool_calls:
        result = dispatch(tc)
        messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})

Параллельные вызовы инструментов

Современные модели возвращают несколько вызовов инструментов в одном ответе. Если это безопасно, запускайте их параллельно:

import asyncio

async def run_tools(tool_calls):
    coros = [dispatch_async(tc) for tc in tool_calls]
    return await asyncio.gather(*coros)

finish_reason: вызовы инструментов

Вместо поиска вызовов инструментов можно также проверить finish_reason:

if response.choices[0].finish_reason == 'tool_calls':
    # the model wants to call tools
    ...
elif response.choices[0].finish_reason == 'stop':
    # done
    ...

Распространённые ошибки

  • Забыть добавить сообщение ассистента перед результатом инструмента
  • Использовать неправильный идентификатор вызова инструмента
  • Отправлять результаты инструментов как сообщения пользователя
  • Позволить циклу выполняться без ограничений — задайте максимальное число шагов

Завершение цикла

Как понять, что агент закончил работу?

Итоги

Вызов функций — самый важный принцип во всём этом курсе. Освойте его, прежде чем двигаться дальше.

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

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

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

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

Разберитесь во всём цикле: модель выбирает инструмент, ваш код запускает его, вы отправляете результат обратно, а модель продолжает работу. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

Сколько времени занимает урок «Как работает вызов функций»?

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

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

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

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

  1. Как работает вызов функций
  2. Определение схем инструментов (JSON Schema)
  3. Выбор инструментов во время выполнения
  4. Возврат результатов модели
← Назад к AI Agents