/
Вопросы и ответы
/
Промт-инжиниринг
/

Что такое function calling и в чем отличие от обычного промта?

Что такое function calling и в чем отличие от обычного промта?

17 дней назад

Никита Вихров

Ответы

0

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

Такой подход нужен, когда ответ модели должен сразу превращаться в действие в вашей системе: создать заявку, записать заказ, отправить письмо, обновить запись в базе.

Когда это лучше обычного текстового ответа

  1. Когда важен строгий формат данных.
  2. Когда нужно проверять входные параметры до выполнения действия.
  3. Когда ошибка в формате может привести к сбою в бизнес-логике.
  4. Когда нужно снизить количество ручного разбора текста.

Пример

Ниже модель получает задачу "создай обращение в поддержку" и возвращает структуру, которую можно безопасно проверить и выполнить.

import json
from openai import OpenAI

client = OpenAI()

инструменты = [
    {
        "type": "function",
        "function": {
            "name": "create_support_ticket",
            "description": "Создает обращение в поддержке",
            "parameters": {
                "type": "object",
                "properties": {
                    "title": {"type": "string"},
                    "priority": {
                        "type": "string",
                        "enum": ["низкий", "средний", "высокий"]
                    }
                },
                "required": ["title", "priority"],
                "additionalProperties": False
            }
        }
    }
]

ответ = client.chat.completions.create(
    model="gpt-4.1",
    messages=[
        {"role": "user", "content": "Создай обращение: ошибка 500 на входе, приоритет высокий"}
    ],
    tools=инструменты
)

вызов = ответ.choices[0].message.tool_calls[0]
параметры = json.loads(вызов.function.arguments)

# Проверка до реального действия
допустимые_приоритеты = {"низкий", "средний", "высокий"}
if параметры["priority"] not in допустимые_приоритеты:
    raise ValueError("Недопустимый приоритет")

# Здесь — ваш код работы с системой заявок
print(вызов.function.name)   # create_support_ticket
print(параметры)             # {'title': '...', 'priority': 'высокий'}

17 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845