Merge pull request #397 from ThunderCatXp/main

Completed translation of settings.en.mdx to the russian and translation of function_calling.ru.mdx
pull/399/head
Elvis Saravia 3 months ago committed by GitHub
commit 0907a6186f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,3 +1,144 @@
# Function Calling with LLMs
# Вызов функций с помощью 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)
This page needs a translation! Feel free to contribute a translation by clicking the `Edit this page` button on the right.

@ -2,10 +2,18 @@
При работе с промптами вы взаимодействуете с LLM с помощью API или непосредственно. Вы можете настроить несколько параметров, чтобы получить различные результаты для ваших промптов.
**Температура** - Вкратце, чем ниже значение `температуры`, тем более детерминированными будут результаты в смысле того, что будет выбрано самое вероятное следующее токен. Увеличение температуры может привести к большей случайности, что способствует более разнообразным или творческим результатам. Вы фактически увеличиваете веса других возможных токенов. В плане применения, для задач, связанных с ответами на вопросы на основе фактов, рекомендуется использовать более низкое значение температуры, чтобы стимулировать более точные и краткие ответы. Для генерации стихов или других творческих задач может быть полезно увеличить значение температуры.
**Температура** Вкратце, чем ниже значение `температуры`, тем более детерминированными будут результаты в смысле того, что будет выбран самый вероятный следующий токен. Увеличение температуры может привести к большей случайности, что способствует более разнообразным или творческим результатам. Вы фактически увеличиваете веса других возможных токенов. В плане применения, для задач, связанных с ответами на вопросы на основе фактов, рекомендуется использовать более низкое значение температуры, чтобы стимулировать более точные и краткие ответы. Для генерации стихов или других творческих задач может быть полезно увеличить значение температуры.
**Top_p** - Аналогично, с помощью `top_p`, техники сэмплирования с использованием температуры, называемой сэмплированием ядра, вы можете контролировать, насколько детерминированной будет модель в генерации ответа. Если вы ищете точные и фактические ответы, установите низкое значение. Если вы ищете более разнообразные ответы, увеличьте значение.
**Top_p** Аналогично, с помощью `top_p`, техники сэмплирования с использованием температуры, называемой сэмплированием ядра, вы можете контролировать, насколько детерминированной будет модель в генерации ответа. Если вы ищете точные и фактические ответы, установите низкое значение. Если вы ищете более разнообразные ответы, увеличьте значение. Общая рекомендация заключается в том, чтобы изменять только один параметр, а не оба.
Общая рекомендация заключается в том, чтобы изменять только один параметр, а не оба.
**Максимальная длина** — Вы можете управлять количеством токенов, генерируемых моделью, регулируя максимальную длину. Указание максимальной длины помогает предотвратить длинные или ненужные ответы и контролировать затраты.
Перед тем, как перейти к некоторым простым примерам, имейте в виду, что ваши результаты могут отличаться в зависимости от версии LLM, которую вы используете.
**Стоп-последовательности** — это строка, которая останавливает модель от генерации токенов. Указание последовательности остановки — это еще один способ контролировать длину и структуру ответа модели. Например, вы можете указать модели генерировать списки, содержащие не более 10 элементов, добавив «11» в качестве стоп-последовательности.
**Штраф за частоту** — `Штраф за частоту` накладывает штраф на следующий токен, пропорциональный тому, сколько раз этот токен уже появлялся в ответе и подсказке. Чем выше штраф за частоту, тем меньше вероятность того, что слово появится снова. Этот параметр уменьшает повторение слов в ответе модели, назначая более высокий штраф за лексемы, которые кажутся более выраженными. Эта настройка уменьшает повторение слов в ответе модели, назначая более высокий штраф за токены, которые появляются чаще.
**Штраф за наличие** — `Штраф за наличие` также применяет штраф к повторяющимся токенам, но, в отличие от штрафа за частоту, штраф одинаков для всех повторяющихся токенов. Токен, который появляется дважды, и токен, который появляется 10 раз, наказываются одинаково. Эта настройка останавливает модель от слишком частого повторения фразы в ответе. Если вы хотите, чтобы модель генерировала разнообразный или креативный текст, вы можете использовать более высокий штраф за наличе. Или, если вам нужно, чтобы модель оставалась сосредоточенной, попробуйте использовать более низкий штраф за наличиие.
Как и в случае с `температурой` и `top_p`, рекомендуется — изменить штраф за частоту или присутствие, но не то и другое одновременно.
Перед тем, как перейти к некоторым простым примерам, имейте в виду, что ваши результаты могут отличаться в зависимости от версии LLM, которую вы используете.

Loading…
Cancel
Save