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