Функция, вызываемая в Azure Databricks
Внимание
Эта функция доступна в общедоступной предварительной версии и поддерживается в:
- API модели Foundation с оплатой за каждый токен
- Подготовленная пропускная способность модели Foundation API
- Обслуживание конечных точек, обслуживающих внешние модели
В этой статье описывается вызов функций и его использование в рамках рабочих процессов создания приложений ИИ. Вызов функций Databricks совместим с OpenAI и доступен только во время работы модели в рамках API-интерфейсов модели Foundation и обслуживания конечных точек, которые служат внешним моделям.
Что такое вызов функции?
Вызов функций позволяет управлять выходными данными LLM, поэтому они создают структурированные ответы более надежно. При использовании вызова функции вы описываете функции в вызове API, описывая аргументы функции с помощью схемы JSON. Сам LLM не вызывает эти функции, а создает объект JSON, который пользователи могут использовать для вызова функций в коде.
Для вызова функции в Databricks ниже приведена базовая последовательность шагов.
- Вызовите модель с помощью отправленного запроса и набора функций, определенных в параметре
tools
. - Модель решает, следует ли вызывать определенные функции. При вызове функции содержимое является объектом JSON строк, которые соответствуют пользовательской схеме.
- Синтаксируйте строки в формате JSON в коде и вызовите функцию с предоставленными аргументами, если они существуют.
- Снова вызовите модель, добавив структурированный ответ в качестве нового сообщения. Структура ответа определяется функциями, которые вы ранее предоставили
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 функциях. - Для поддержки подготовленной пропускной способности вызов функции поддерживается только в новых конечных точках. Невозможно добавить вызов функции в ранее созданные конечные точки.
Пример записной книжки
Дополнительные примеры вызовов функций см. в следующей записной книжке.