/
githubmirror
/
Prompt-Engineering-Guide
Обзор
Документация
Войти
/
githubmirror
/
Prompt-Engineering-Guide
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
pages/applications/function_calling.ru.mdx
143 строки
11 KB
ThunderCat
Update function_calling.ru.mdx
17 фев 2024, 13:16
Не верифицирован
17 фев 2024, 13:16
35f1240
Код
Авторство
О чём код?
# Вызов функций с помощью LLM import {Cards, Card} from 'nextra-theme-docs' import {CodeIcon} from 'components/icons' ## Начало работы с вызовом функций Вызов функций — это возможность надежно подключать 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: ```python 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 объект, содержащий аргументы, необходимые для вызова функции. Вот несколько фрагментов кода, как этого добиться. Вы могли бы определить функцию завершения следующим образом: ```python 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 ``` Вот как вы могли бы составить вопрос пользователя: ```python messages = [ { "role": "user", "content": "What is the weather like in London?" } ] ``` Наконец, вы можете вызвать метод `get_completion` выше и передать как `сообщения`, так и `инструменты`: ```python response = get_completion(messages, tools=tools) ``` Объект `response` содержит следующее: ```python 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: <Cards> <Card icon={<CodeIcon />} title="Function Calling with OpenAI APIs" href="https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-function-calling.ipynb" /> </Cards> ## Вызов функций с помощью LLM с открытым исходным кодом Дополнительные заметки о вызове функций с помощью LLM с открытым исходным кодом появятся скоро. ## Варианты использования вызова функций Ниже приведен список случаев использования, которые могут извлечь выгоду из возможности вызова функций LLM: - **Диалоговые агенты**: вызов функций можно использовать для создания сложных диалоговых агентов или чат-ботов, которые отвечают на сложные вопросы, вызывая внешние API или внешнюю базу знаний и предоставляя более релевантные и полезные ответы. - **Понимание естественного языка**: он может преобразовывать естественный язык в структурированные данные JSON, извлекать структурированные данные из текста и выполнять такие задачи, как распознавание именованных объектов, анализ настроений и извлечение ключевых слов. - **Решение математических задач**: вызовы функций можно использовать для определения пользовательских функций для решения сложных математических задач, требующих нескольких шагов и различных типов сложных вычислений. - **Интеграция API**: его можно использовать для эффективной интеграции LLM с внешними API для получения данных или выполнения действий на основе входных данных. Это может быть полезно для создания системы контроля качества или творческого помощника. В общем, вызов функций может преобразовать естественный язык в действительные вызовы API. - **Извлечение информации**: вызовы функций можно эффективно использовать для извлечения конкретной информации из заданных входных данных, например для получения соответствующих новостей или ссылок из статьи. ## Использованная литература - [Fireworks Raises the Quality Bar with Function Calling Model and API Release](https://blog.fireworks.ai/fireworks-raises-the-quality-bar-with-function-calling-model-and-api-release-e7f49d1e98e9) - [Benchmarking Agent Tool Use and Function Calling](https://blog.langchain.dev/benchmarking-agent-tool-use/) - [Function Calling](https://ai.google.dev/docs/function_calling) - [Interacting with APIs](https://python.langchain.com/docs/use_cases/apis) - [OpenAI's Function Calling](https://platform.openai.com/docs/guides/function-calling) - [How to call functions with chat models](https://cookbook.openai.com/examples/how_to_call_functions_with_chat_models) - [Pushing ChatGPT's Structured Data Support To Its Limits](https://minimaxir.com/2023/12/chatgpt-structured-data/) - [Math Problem Solving with Function Calling](https://github.com/svpino/openai-function-calling/blob/main/sample.ipynb)