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


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

Внимание

Эта функция доступна в общедоступной предварительной версии и поддерживается в:

  • API модели Foundation с оплатой за каждый токен
  • Подготовленная пропускная способность модели Foundation API
  • Обслуживание конечных точек, обслуживающих внешние модели

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

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

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

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

  1. Вызовите модель с помощью отправленного запроса и набора функций, определенных в параметре tools.
  2. Модель решает, следует ли вызывать определенные функции. При вызове функции содержимое является объектом JSON строк, которые соответствуют пользовательской схеме.
  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 рекомендует использовать структурированные выходные данные.

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

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

  • Сведения о моделях, предоставляемых 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 Внешние модели
claude-3-5-sonnet-latest Внешние модели Поставщик антропных моделей
claude-3-5-haiku-latest Внешние модели Поставщик антропических моделей
klaud-3-5-opus-latest Внешние модели Поставщик антропических моделей
claude-3-5-sonnet-20241022 Внешние модели Поставщик антропических моделей. Эта модель поддерживает вызов инструментов с помощью использования компьютера (бета-версия).
claude-3-5-haiku-202410222 Внешние модели Поставщик антропных моделей
claude-3-5-sonnet-20240620 Внешние модели Поставщик антропических моделей
claude-3-haiku-20240307 Внешние модели Поставщик антропных моделей
claude-3-opus-20240229 Внешние модели Поставщик антропических моделей
claude-3-sonnet-20240229 Внешние модели Поставщик антропных моделей
claude-3-5-sonnet-20241022-v2:0 Внешние модели Поставщик антропических моделей Bedrock. Эта модель поддерживает вызов инструментов, используя компьютер (бета-версия), .
claude-3-5-haiku-20241022-v1:0 Внешние модели Поставщик антропических моделей Бедрок
claude-3-5-sonnet-20240620-v1:0 Внешние модели Поставщик антропических моделей Бедрок
claude-3-sonnet-20240229-v1:0 Внешние модели Поставщик антропических моделей Бедрок
claude-3-opus-20240229-v1:0 Внешние модели Поставщик антропических моделей Бедрок

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

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

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

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

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

Ниже приведен один пример поворота с помощью пакета 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))

Этот параметр также поддерживает Computer Use (бета) для моделей, предоставляемых Anthropic и Amazon Bedrock для Anthropic. Для средств, относящихся к Anthropic, включая использование компьютера, используйте следующий синтаксис для вызова инструмента:


"tools": [
  {
    "type": # Specify tool type here,
    "function": {
      # Required parameters for the tool type
    }
  }
]

Схема JSON

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

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

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

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

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

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

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

Ограничения

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

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

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

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

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

Получите записную книжку