Вызов функций с помощью LLM
Начало работы с вызовом функций
Вызов функций — это возможность надежно подключать LLM к внешним инструментам, чтобы обеспечить эффективное использование инструментов и взаимодействие с внешними API.
LLM, такие как GPT-4 и GPT-3.5, были точно настроены, чтобы определять, когда необходимо вызвать функцию, а затем выводить JSON, содержащий аргументы для вызова функции. Функции, вызываемые при вызове, будут действовать как инструменты в вашем ИИ приложении, и вы можете определить более одной функции в одном запросе.
Вызов функций — это важная возможность для создания чат-ботов или агентов на базе LLM, которым необходимо получать контекст для LLM или взаимодействовать с внешними инструментами путем преобразования естественного языка в вызовы API.
Вызов функций позволяет разработчикам создавать:
- диалоговые агенты, которые могут эффективно использовать внешние инструменты для ответов на вопросы. Например, запрос «Какая погода в Белизе?» будет преобразовано в вызов функции, такой как
get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')
- Решения на базе LLM для извлечения и маркировки данных (например, извлечение имен людей из статьи в Википедии).)
- приложения, которые могут помочь преобразовать естественный язык в вызовы API или запросы к базе данных.
- диалоговые механизмы поиска знаний, которые взаимодействуют с базой знаний
В этом руководстве мы покажем, как предлагать моделям, таким как GPT-4, и моделям с открытым исходным кодом, выполнять вызов функций для различных сценариев использования.
Вызов функций с помощью GPT-4
В качестве простого примера предположим, что мы попросили модель проверить погоду в данном месте.
Один только LLM не сможет ответить на этот запрос, поскольку он был обучен на наборе данных. Способ решения этой проблемы — объединить LLM с внешним инструментом. Вы можете использовать возможности вызова функций модели, чтобы определить функцию для вызова вместе с ее аргументами, а затем вернуть ответ. Ниже приведен простой пример того, как этого можно добиться с помощью API OpenAI.
Допустим, пользователь задает модели следующий вопрос:
What is the weather like in London?
Чтобы обработать этот запрос с помощью вызова функции, первым шагом является определение функции погоды или набора функций, которые вы будете передавать как часть запроса API OpenAI:
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
},
}
]
Функция get_current_weather
возвращает текущую погоду в заданном месте. Когда вы передаете это определение функции как часть запроса, оно фактически не выполняет функцию, а просто возвращает JSON объект, содержащий аргументы, необходимые для вызова функции. Вот несколько фрагментов кода, как этого добиться.
Вы могли бы определить функцию завершения следующим образом:
def get_completion(messages, model="gpt-3.5-turbo-1106", temperature=0, max_tokens=300, tools=None):
response = openai.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
tools=tools
)
return response.choices[0].message
Вот как вы могли бы составить вопрос пользователя:
messages = [
{
"role": "user",
"content": "What is the weather like in London?"
}
]
Наконец, вы можете вызвать метод get_completion
выше и передать как сообщения
, так и инструменты
:
response = get_completion(messages, tools=tools)
Объект response
содержит следующее:
ChatCompletionMessage(content=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='...', function=Function(arguments='{"location":"London","unit":"celsius"}', name='get_current_weather'), type='function')])
В частности, объект аргументы
содержит важные аргументы, извлеченные моделью и необходимые для выполнения запроса.
Затем вы можете вызвать внешний API погоды для получения фактической погоды. Получив информацию о погоде, вы можете передать ее обратно в модель, чтобы обобщить окончательный ответ с учетом исходного вопроса пользователя
Блокноты
Вот блокнот с простым примером, демонстрирующим, как использовать вызов функций с OpenAI API:
Вызов функций с помощью LLM с открытым исходным кодом
Дополнительные заметки о вызове функций с помощью LLM с открытым исходным кодом появятся скоро.
Варианты использования вызова функций
Ниже приведен список случаев использования, которые могут извлечь выгоду из возможности вызова функций LLM:
-
Диалоговые агенты: вызов функций можно использовать для создания сложных диалоговых агентов или чат-ботов, которые отвечают на сложные вопросы, вызывая внешние API или внешнюю базу знаний и предоставляя более релевантные и полезные ответы.
-
Понимание естественного языка: он может преобразовывать естественный язык в структурированные данные JSON, извлекать структурированные данные из текста и выполнять такие задачи, как распознавание именованных объектов, анализ настроений и извлечение ключевых слов.
-
Решение математических задач: вызовы функций можно использовать для определения пользовательских функций для решения сложных математических задач, требующих нескольких шагов и различных типов сложных вычислений.
-
Интеграция API: его можно использовать для эффективной интеграции LLM с внешними API для получения данных или выполнения действий на основе входных данных. Это может быть полезно для создания системы контроля качества или творческого помощника. В общем, вызов функций может преобразовать естественный язык в действительные вызовы API.
-
Извлечение информации: вызовы функций можно эффективно использовать для извлечения конкретной информации из заданных входных данных, например для получения соответствующих новостей или ссылок из статьи.
Использованная литература
- Fireworks Raises the Quality Bar with Function Calling Model and API Release (opens in a new tab)
- Benchmarking Agent Tool Use and Function Calling (opens in a new tab)
- Function Calling (opens in a new tab)
- Interacting with APIs (opens in a new tab)
- OpenAI's Function Calling (opens in a new tab)
- How to call functions with chat models (opens in a new tab)
- Pushing ChatGPT's Structured Data Support To Its Limits (opens in a new tab)
- Math Problem Solving with Function Calling (opens in a new tab)