OpenAI недавно представила ряд замечательных обновлений своего API, которые привели пользователей в трепет. Среди этих обновлений функция Вызов функции выделяется как наиболее важная. Используя эту функцию вызова функции, модель теперь обладает способностью определять подходящую функцию для вызова для решения конкретных проблем. Эта необычная функция ранее была эксклюзивной для Langchain, но теперь доступна через OpenAI.

Эта статья направлена ​​на подробное изучение функции вызова функций, обеспечивая всестороннее понимание ее природы и возможностей. Мы начнем с того, что дадим точное определение возможности вызова функции. Впоследствии мы углубимся в различные приложения и сценарии, в которых эта функция окажется бесценной. Наконец, чтобы проиллюстрировать практическую реализацию функции вызова функции, мы представим вам серию примеров из реальной жизни, из которых вы можете черпать вдохновение. К концу этой статьи вы будете иметь четкое представление о функции вызова функции и ее огромном потенциале.

1. Функция вызова функции?

OpenAI недавно расширил свой API, представив ряд новых функций, среди которых функция вызовов функций выделяется как значительное обновление. Благодаря интеграции функции вызова функций разработчики теперь могут определять функции как для моделей gpt-4–0613, так и для моделей gpt-3.5-turbo-0613. Поступая таким образом, разработчики могут разумно указать модели на создание объекта JSON, который включает в себя необходимые аргументы для интеллектуального выполнения этих функций. Это дает разработчикам больший контроль и гибкость при использовании API и его возможностей.

Включение вызова функций представляет собой новый и надежный подход к беспрепятственной интеграции возможностей GPT с внешними инструментами и API. Этот прорыв позволяет разработчикам создавать широкий спектр приложений с использованием API OpenAI. Последние итерации моделей подверглись тщательной тонкой настройке, что позволяет им эффективно распознавать ситуации, когда требуется вызов функции на основе пользовательского ввода. Кроме того, модели были оптимизированы для генерации ответов JSON, соответствующих указанной сигнатуре функции.

В дополнение к этим улучшениям вызов функций также позволяет разработчикам получать структурированные выходные данные модели. Эта функция обеспечивает структурированный и организованный формат для получения соответствующей информации, повышая удобство использования и эффективность API в широком диапазоне приложений. Сочетание интеллектуального вызова функций и возможности получать ответы со структурированными данными открывает перед разработчиками новые возможности для использования возможностей моделей OpenAI и создания инновационных решений.

2. Варианты использования вызова функций

Функция вызова функций считается самым значительным обновлением OpenAI API с момента его создания, предлагая разработчикам широкий спектр мощных возможностей для улучшения их приложений. Давайте рассмотрим некоторые из возможностей:

  1. Чат-боты. С помощью функции вызова функций разработчики могут создавать чат-ботов, которые используют внешние инструменты для ответа на вопросы. Например, такой запрос, как «Напишите Ане по электронной почте, чтобы узнать, не хочет ли она выпить кофе в следующую пятницу», можно преобразовать в вызов функции, такой как send_email(to: string, body: string). Точно так же такие вопросы, как «Какая погода в Бостоне?» можно обработать вызовом функции get_current_weather(location: string, unit: 'celsius' | 'fahrenheit').
  2. Преобразование естественного языка в вызовы API или запросы к базе данных. Функция вызовов функций позволяет преобразовывать естественный язык в вызовы API или запросы к базе данных. Например, такой вопрос, как «Кто входит в первую десятку моих клиентов в этом месяце?» может быть преобразован во внутренний вызов API, например get_customers_by_revenue(start_date: string, end_date: string, limit: int). Точно так же такие запросы, как «Сколько заказов разместила компания Acme, Inc. в прошлом месяце?» могут быть переведены в SQL-запросы с помощью sql_query(query: string).
  3. Извлечение структурированных данных из текста. Используя функцию вызова функций, разработчики могут извлекать структурированные данные из текстового содержимого. Например, определение функции с именем extract_people_data(people: [{name: string, birthday: string, location: string}]) позволит извлекать всех людей, упомянутых в статье Википедии, включая их имена, дни рождения и местонахождение.

3. Практические примеры

Чтобы использовать API OpenAI для получения сегодняшней погоды в определенном городе, вы можете выполнить следующие действия:

Шаг 1

Выполните вызов API с функциями и пользовательским вводом.

Запрос

curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {"role": "user", "content": "What is the weather like in Boston?"}
  ],
  "functions": [
    {
      "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"]
      }
    }
  ]
}'

В этом примере мы делаем POST-запрос к конечной точке API OpenAI, указав модель как «gpt-3.5-turbo-0613». Мы включаем сообщение пользователя с вопросом о погоде в Бостоне. Кроме того, мы определяем функцию под названием «get_current_weather» с необходимыми параметрами, такими как «местоположение» (город и штат) и «единица измерения» (либо «цельсий», либо «фаренгейт»).

Ответ

Выполнив вызов API с предоставленным запросом, вы получите ответ, подобный следующему:

{
  "id": "chatcmpl-123",
  "...": "...",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "function_call": {
        "name": "get_current_weather",
        "arguments": "{ \"location\": \"Boston, MA\"}"
      }
    },
    "finish_reason": "function_call"
  }]
}

В ответе критической частью является поле «выбор». Он содержит массив возможных ответов модели. Здесь ответ модели указывает на вызов функции с именем «get_current_weather» и соответствующими аргументами, указывающими местоположение как «Бостон, Массачусетс».

Шаг 2

Сторонний API: используйте ответ модели для вызова вашего API.

Запрос

curl https://weatherapi.com/...

Ответ

{ "temperature": 22, "unit": "celsius", "description": "Sunny" }

Шаг 3

OpenAI API: отправьте ответ обратно в модель для подведения итогов.

Запрос

curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {"role": "user", "content": "What is the weather like in Boston?"},
    {"role": "assistant", "content": null, "function_call": {"name": "get_current_weather", "arguments": "{ \"location\": \"Boston, MA\"}"}},
    {"role": "function", "name": "get_current_weather", "content": "{\"temperature\": "22", \"unit\": \"celsius\", \"description\": \"Sunny\"}"}
  ],
  "functions": [
    {
      "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"]
      }
    }
  ]
}'

Ответ

{
  "id": "chatcmpl-123",
  ...
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "The weather in Boston is currently sunny with a temperature of 22 degrees Celsius.",
    },
    "finish_reason": "stop"
  }]
}

Заключение

Функция вызова функций, представленная в OpenAI API, знаменует собой важную веху в использовании возможностей моделей искусственного интеллекта. Это позволяет разработчикам беспрепятственно интегрировать внешние инструменты и API, выполнять интеллектуальные вызовы функций и получать выходные структурированные данные. Это обновление открывает множество возможностей для создания инновационных приложений, таких как чат-боты, которые взаимодействуют с внешними системами, преобразуют естественный язык в API или запросы к базе данных и извлекают структурированные данные из неструктурированного текста.

Вы можете дополнительно прочитать по адресу:

Используя функцию вызова функций, разработчики могут открыть новые уровни гибкости и эффективности, расширяя возможности своих приложений и обеспечивая превосходное взаимодействие с пользователем. Возможность связывать модели GPT с внешними инструментами и API-интерфейсами посредством вызовов функций предоставляет разработчикам замечательные возможности для создания более мощных, интеллектуальных и контекстно-зависимых приложений с использованием API OpenAI.

Если вам понравилась статья и вы хотите выразить свою поддержку, не забудьте:

  • 👏 Аплодисменты (50 хлопков), чтобы привлечь внимание
  • 👥 Следуйте за мной на Medium, чтобы быть в курсе моих последних материалов.
  • 📰 Ознакомьтесь с другими статьями в моем Medium Profile
  • 🔔 Свяжитесь со мной в LinkedIn, Twitter и GitHub