Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается вызов функций и его использование в рамках рабочих процессов создания приложений ИИ. Вызов функций 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 для доступности регионов.
- Для моделей, предоставленных внешними источниками, см. раздел Доступность в регионах для информации о доступности в регионах.
Внимание
Meta-Llama-3.1-405B-Instruct будет снят, как указано ниже. Ознакомьтесь с моделями, снятыми с производства для получения рекомендаций по выбору модели замены и миграции в процессе вывода из эксплуатации.
- Начиная с 15 февраля 2026 г. эта модель недоступна для рабочих нагрузок с оплатой за токен.
- Начиная с 15 мая 2026 г. эта модель недоступна для рабочих нагрузок с предварительно выделенной пропускной способностью.
Начиная с 11 декабря 2024 года, Meta-Llama-3.3-70B-Instruct заменяет поддержку Meta-Llama-3.1-70B-Instruct в API Foundation Model на платформах, оплачиваемых за токен.
| Модель | Доступно с помощью функции сервинга моделей | Примечания. |
|---|---|---|
| Клод-Соннет-4.5 | API-интерфейсы базовой модели | Поддерживается для конечных точек с оплатой за токен. |
| Клод-Хайку-4.5 | API-интерфейсы базовой модели | Поддерживается для конечных точек с оплатой за токен. |
| Qwen3-Next 80B A3B Instruct (бета-версия) | API-интерфейсы базовой модели | Поддерживается для конечных точек с оплатой за токен. |
| GPT OSS 20B | API-интерфейсы базовой модели | Поддерживается на конечных точках с оплатой за каждый токен и подготовленной пропускной способностью. |
| GPT OSS 120B | API-интерфейсы базовой модели | Поддерживается на конечных точках с оплатой за каждый токен и подготовленной пропускной способностью. |
| Gemma-3-12B | API-интерфейсы базовой модели | Поддерживается на конечных точках с оплатой за каждый токен и подготовленной пропускной способностью. |
| Клод-Соннет-4 | API-интерфейсы базовой модели | Поддерживается для конечных точек с оплатой за токен. |
| Клод-Опус-4.5 | API-интерфейсы базовой модели | Поддерживается для конечных точек с оплатой за токен. |
| Клод-Опус-4.1 | API-интерфейсы базовой модели | Поддерживается для конечных точек с оплатой за токен. |
| claude-3-7-Sonnet | API-интерфейсы базовой модели | Поддерживается для конечных точек с оплатой за токен. |
| Meta-Llama-4-Maverick | API-интерфейсы базовой модели | Поддерживается для рабочих нагрузок с оплатой за каждый токен и рабочих нагрузок с выделенным пропускным режимом. |
| Meta-Llama-3.3-70B-Instruct | API-интерфейсы базовой модели | Поддерживается для рабочих нагрузок с оплатой за каждый токен и рабочих нагрузок с выделенным пропускным режимом. |
| Meta-Llama-3.1-405B-Instruct | API-интерфейсы базовой модели | Поддерживается для рабочих нагрузок с оплатой за каждый токен и рабочих нагрузок с выделенным пропускным режимом. |
| Мета-Ллома-3.1-8B-Instruct | API-интерфейсы базовой модели | Поддерживается для рабочих нагрузок с оплатой за каждый токен и рабочих нагрузок с выделенным пропускным режимом. |
| 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 и description.
По умолчанию tool_choice ведет себя как "auto". Это позволяет модели решать, какие функции следует вызывать и следует ли их вызывать.
Поведение по умолчанию можно настроить в зависимости от варианта использования. Вот ваши варианты.
- Задайте
tool_choice: "required". В этом сценарии модель всегда вызывает одну или несколько функций. Модель выбирает функцию или функции для вызова. - Задайте
tool_choice: {"type": "function", "function": {"name": "my_function"}}. В этом сценарии модель вызывает только определенную функцию. - Установите
tool_choice: "none", чтобы отключить вызов функции и создать только сообщение, предназначенное для пользователя.
Ниже приведен один пример поворота с помощью пакета SDK OpenAI и его tools параметра. Дополнительные сведения о синтаксисе см. в API завершения чата .
Внимание
Во время общественного предварительного просмотра вызов функций на 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))
Этот параметр также поддерживает использование компьютера (бета-версия) для моделей Claude.
Схема 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, чтобы улучшить результаты.
Использование токенов
Внедрение запросов и другие методы используются для повышения качества вызовов инструментов. Это влияет на количество входных и выходных маркеров, потребляемых моделью, что в свою очередь приводит к последствиям выставления счетов. Чем больше инструментов вы используете, тем больше увеличивается число входных маркеров.
Ограничения
Ниже приведены ограничения для вызова функций во время общедоступной предварительной версии:
- Для многоэтапной функции, вызывающей Databricks, рекомендует поддерживаемые модели Claude.
- При использовании Llama 4 Maverick текущее решение для вызова функции оптимизировано для вызовов одной функции поворота. Поддерживается многоэтапный вызов функции в предварительной версии, но всё ещё разрабатывается.
- Параллельные вызовы функций не поддерживаются.
- Максимальное число функций, которые можно определить в
tools, составляет 32. - Для поддержки пропускной способности с выделением ресурсов вызов функций поддерживается только на новых конечных точках. Нельзя добавить вызов функции в уже существующие точки доступа.
Пример записной книжки
Дополнительные примеры вызовов функций см. в следующей записной книжке.