Поделиться через


Функция, вызываемая в Azure Databricks

Внимание

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

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

Что такое вызов функции

Вызов функций позволяет управлять выходными данными LLM, поэтому они generate структурированные ответы более надежно. При использовании вызова функции вы описываете функции в вызове API, описывая аргументы функции с помощью JSON schema. Сам LLM не вызывает эти функции, а создает объект JSON, который пользователи могут использовать для вызова функций в коде.

Для вызова функции в Databricks ниже приведена базовая последовательность шагов.

  1. Вызовите модель с помощью отправленного запроса и set функций, определенных в параметре tools.
  2. Модель решает, следует ли вызывать определенные функции. При вызове функции содержимое представляет собой объект JSON, состоящий из строк, которые соответствуют вашим пользовательским schema.
  3. Синтаксируйте строки в формате JSON в коде и вызовите функцию с предоставленными аргументами, если они существуют.
  4. Снова вызовите модель, добавив структурированный ответ в качестве нового сообщения. Структура ответа определяется функциями, которые вы ранее предоставили tools. Отсюда модель суммирует результаты и отправляет ее пользователю.

Когда следует использовать вызов функции

Ниже приведены примеры вариантов использования для вызова функций:

  • Создайте помощников, которые могут отвечать на вопросы, вызывая другие API. Например, можно определить такие send_email(to: string, body: string) функции или current_weather(location: string, unit: 'celsius' | 'fahrenheit').
  • Определение и использование вызовов API на основе естественного языка. Как принять заявление: "Кто мои лучшие клиенты?" и делает это в вызов API с именем get_customers(min_revenue: int, created_before: string, limit: int) и вызовом этого API.

Для пакетного вывода или задач обработки данных, таких как преобразование неструктурированных данных в структурированные данные. Databricks рекомендует использовать структурированные выходные данные.

Поддерживаемые модели

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

  • Сведения о моделях, предоставляемых API-интерфейсами модели Foundation, см. в разделе об ограничениях api модели Foundation для доступности регионов.
  • Сведения о моделях, предоставляемых внешними моделями, см. в разделе "Доступность регионов" для доступности регионов.

Внимание

Начиная с 11 декабря 2024 года, Meta-Llama-3.3-70B-Instruct заменяет поддержку Meta-Llama-3.1-70B-Instruct в API Foundation Model на платформах, оплачиваемых за токен.

Внимание

Meta Llama 3.3 лицензируется в соответствии с лицензией LLAMA 3.3 Community License, Copyright © Meta Platforms, Inc. Все права защищены. Клиенты несут ответственность за соблюдение условий этой лицензии и Политики допустимого использования Ллама 3.3 .

Meta Llama 3.1 лицензирован в соответствии с лицензией сообщества LLAMA 3.1, © Meta Platform, Inc. Все права зарезервированы. Клиенты отвечают за обеспечение соответствия применимым лицензиям модели.

Модель Доступно с помощью функции обслуживания моделей Примечания.
Meta-Llama-3.3-70B-Instruct API-интерфейсы модели foundation Поддерживается для рабочих нагрузок с оплатой за токен и подготовленных рабочих нагрузок пропускной способности.
Meta-Llama-3.1-405B-Instruct API-интерфейсы модели foundation Поддерживается для рабочих нагрузок с оплатой за токен и подготовленных рабочих нагрузок пропускной способности.
Мета-Ллома-3.1-8B-Instruct API-интерфейсы модели foundation Поддерживается только для подготовленных рабочих нагрузок пропускной способности.
gpt-4o Внешние модели
gpt-4o-2024-08-06 Внешние модели
gpt-4o-2024-05-13 Внешние модели
gpt-4o-mini Внешние модели

Использование вызовов функций

Чтобы использовать вызов функции с созданным приложением ИИ, необходимо предоставить функцию parameters и a description.

Поведение tool_choice по умолчанию для ."auto" Это позволяет модели решать, какие функции следует вызывать и вызывать ли они.

Поведение по умолчанию можно настроить в зависимости от варианта использования. Ниже приведены параметры.

  • Set tool_choice: "required". В этом сценарии модель всегда вызывает одну или несколько функций. Модель выбирает функцию или функции для вызова.
  • Set tool_choice: {"type": "function", "function": {"name": "my_function"}}. В этом сценарии модель вызывает только определенную функцию.
  • Set tool_choice: "none", чтобы отключить вызов функции и использовать модель только generate сообщение с пользователем.

Ниже приведен один пример поворота с помощью пакета SDK OpenAI и его tools параметра. Дополнительные сведения о синтаксисе см. в задаче чата.

Внимание

Во время общедоступной предварительной версии функция, вызываемая databricks, оптимизирована для вызова одной функции поворота.

import os
import json
from openai import OpenAI

DATABRICKS_TOKEN = os.environ.get('YOUR_DATABRICKS_TOKEN')
DATABRICKS_BASE_URL = os.environ.get('YOUR_DATABRICKS_BASE_URL')

client = OpenAI(
  api_key=DATABRICKS_TOKEN,
  base_url=DATABRICKS_BASE_URL
  )

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"
            ]
          }
        }
      }
    }
  }
]

messages = [{"role": "user", "content": "What is the current temperature of Chicago?"}]

response = client.chat.completions.create(
    model="databricks-meta-llama-3-3-70b-instruct",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

print(json.dumps(response.choices[0].message.model_dump()['tool_calls'], indent=2))

JSON schema

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

Следующие ключи определения вызова функции не поддерживаются:

  • Регулярные выражения, использующие pattern.
  • Сложные композиции и проверки с вложенными элементами или schema, с использованием: anyOf, oneOf, allOf, prefixItemsили $ref.
  • Списки типов, за исключением специального случая [type, “null”]where одного типа в list является допустимым типом JSON, а другой — "null"

Кроме того, применяются следующие ограничения:

  • Максимальное количество ключей, указанных в schema JSON, равно 16.
  • API-интерфейсы модели Foundation не применяют ограничения длины или размера для объектов и массивов.
    • Это включает такие ключевые слова, как maxProperties, minPropertiesи maxLength.
  • Вложенная схема JSON приведет к снижению качества. Если возможно, попробуйте развернуть JSON schema для получения лучших результатов.

Использование маркеров

Внедрение запросов и другие методы используются для повышения качества вызовов инструментов. Это влияет на количество входных и выходных маркеров, потребляемых моделью, что в свою очередь приводит к последствиям выставления счетов. Чем больше инструментов вы используете, тем больше увеличивается число входных маркеров.

Ограничения

Ниже приведены ограничения для вызова функций во время общедоступной предварительной версии:

  • Текущее решение для вызова функции оптимизировано для вызовов функции одного поворота. Вызов функции с несколькими поворотами поддерживается во время предварительной версии, но находится в процессе разработки.
  • Параллельные вызовы функций не поддерживаются.
  • Максимальное число функций, которые можно определить в tools 32 функциях.
  • Для поддержки подготовленной пропускной способности вызов функции поддерживается только в новых конечных точках. Невозможно добавить вызов функции в ранее созданные конечные точки.

Пример записной книжки

Дополнительные примеры вызовов функций см. в следующей записной книжке.

Пример записной книжки для вызова функций

Get записная книжка