重要
此功能在 Beta 版中。 帐户管理员可以从帐户控制台 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版。
本页介绍如何使用支持的 API 查询 Unity AI 网关 终结点。
要求
- 已为您的账户启用 Unity AI 网关预览版。 请参阅 Manage Azure Databricks 预览版。
- Unity AI 网关支持的区域中的Azure Databricks工作区。
- 为工作区启用 Unity 目录。 请参阅为 Unity Catalog 启用工作区。
支持的 API 和集成
Unity AI 网关支持以下 API 和集成:
- 统一 API:与 OpenAI 兼容的接口,用于在Azure Databricks上查询模型。 从不同的提供程序无缝切换模型,而无需更改查询每个模型的方式。
- 原生 API:特定于提供商的接口,用于开发者访问最新的模型和提供商特定的功能。
- 编码代理:将编码代理与 Unity AI 网关集成,将集中式治理和监视添加到 AI 辅助的开发工作流。 请参阅 与编码代理集成。
- Databricks 应用上的代理:在 Databricks 应用上创作和部署 AI 代理,以便通过 Unity AI 网关路由 LLM 流量。 请参阅 步骤 4。使用 Unity AI 网关管理 Databricks 应用上的代理的 LLM 使用情况。
使用统一 API 查询终结点
统一 API 提供与 OpenAI 兼容的接口,用于在Azure Databricks上查询模型。 使用统一 API 在不同提供程序的模型之间无缝切换,而无需更改代码。
MLflow 聊天完成 API
MLflow 聊天完成功能 API
Python
from openai import OpenAI
import os
DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url="https://<workspace-url>/ai-gateway/mlflow/v1"
)
chat_completion = client.chat.completions.create(
messages=[
{"role": "user", "content": "Hello!"},
{"role": "assistant", "content": "Hello! How can I assist you today?"},
{"role": "user", "content": "What is Databricks?"},
],
model="<ai-gateway-endpoint>",
max_tokens=256
)
print(chat_completion.choices[0].message.content)
REST API
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"model": "<ai-gateway-endpoint>",
"max_tokens": 256,
"messages": [
{"role": "user", "content": "Hello!"},
{"role": "assistant", "content": "Hello! How can I assist you today?"},
{"role": "user", "content": "What is Databricks?"}
]
}' \
https://<workspace-url>/ai-gateway/mlflow/v1/chat/completions
将 <workspace-url> 替换为Azure Databricks工作区 URL,并将 <ai-gateway-endpoint> 替换为 Unity AI 网关终结点名称。
MLflow 嵌入 API
MLflow 嵌入 API
Python
from openai import OpenAI
import os
DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url="https://<workspace-url>/ai-gateway/mlflow/v1"
)
embeddings = client.embeddings.create(
input="What is Databricks?",
model="<ai-gateway-endpoint>"
)
print(embeddings.data[0].embedding)
REST API
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"model": "<ai-gateway-endpoint>",
"input": "What is Databricks?"
}' \
https://<workspace-url>/ai-gateway/mlflow/v1/embeddings
将 <workspace-url> 替换为Azure Databricks工作区 URL,并将 <ai-gateway-endpoint> 替换为 Unity AI 网关终结点名称。
管理API
监督程序 API
监督程序 API (/mlflow/v1/responses) 是一个 OpenResponses 兼容的供应商无关 API, 在 Beta 阶段用于构建代理。 帐户管理员可以从 “预览 ”页启用访问权限。 请参阅 Manage Azure Databricks 预览版。 跨提供程序选择代理用例的最佳模型,而无需更改代码。
Python
from openai import OpenAI
import os
DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url="https://<workspace-url>/ai-gateway/mlflow/v1"
)
response = client.responses.create(
model="<ai-gateway-endpoint>",
input=[{"role": "user", "content": "What is Databricks?"}]
)
print(response.output_text)
REST API
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"model": "<ai-gateway-endpoint>",
"input": [
{"role": "user", "content": "What is Databricks?"}
]
}' \
https://<workspace-url>/ai-gateway/mlflow/v1/responses
将 <workspace-url> 替换为Azure Databricks工作区 URL,并将 <ai-gateway-endpoint> 替换为 Unity AI 网关终结点名称。
使用本机 API 查询终结点
原生 API 提供特定于提供程序的接口,用于在 Azure Databricks 上查询模型。 使用本机 API 来访问特定提供程序的最新功能。
OpenAI 响应 API
OpenAI 响应 API
Python
from openai import OpenAI
import os
DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')
client = OpenAI(
api_key=DATABRICKS_TOKEN,
base_url="https://<workspace-url>/ai-gateway/openai/v1"
)
response = client.responses.create(
model="<ai-gateway-endpoint>",
max_output_tokens=256,
input=[
{
"role": "user",
"content": [{"type": "input_text", "text": "Hello!"}]
},
{
"role": "assistant",
"content": [{"type": "output_text", "text": "Hello! How can I assist you today?"}]
},
{
"role": "user",
"content": [{"type": "input_text", "text": "What is Databricks?"}]
}
]
)
print(response.output)
REST API
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"model": "<ai-gateway-endpoint>",
"max_output_tokens": 256,
"input": [
{
"role": "user",
"content": [{"type": "input_text", "text": "Hello!"}]
},
{
"role": "assistant",
"content": [{"type": "output_text", "text": "Hello! How can I assist you today?"}]
},
{
"role": "user",
"content": [{"type": "input_text", "text": "What is Databricks?"}]
}
]
}' \
https://<workspace-url>/ai-gateway/openai/v1/responses
将 <workspace-url> 替换为Azure Databricks工作区 URL,并将 <ai-gateway-endpoint> 替换为 Unity AI 网关终结点名称。
Anthropic 消息 API
人类消息 API
Python
import anthropic
import os
DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')
client = anthropic.Anthropic(
api_key="unused",
base_url="https://<workspace-url>/ai-gateway/anthropic",
default_headers={
"Authorization": f"Bearer {DATABRICKS_TOKEN}",
},
)
message = client.messages.create(
model="<ai-gateway-endpoint>",
max_tokens=256,
messages=[
{"role": "user", "content": "Hello!"},
{"role": "assistant", "content": "Hello! How can I assist you today?"},
{"role": "user", "content": "What is Databricks?"},
],
)
print(message.content[0].text)
REST API
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"model": "<ai-gateway-endpoint>",
"max_tokens": 256,
"messages": [
{"role": "user", "content": "Hello!"},
{"role": "assistant", "content": "Hello! How can I assist you today?"},
{"role": "user", "content": "What is Databricks?"}
]
}' \
https://<workspace-url>/ai-gateway/anthropic/v1/messages
将 <workspace-url> 替换为Azure Databricks工作区 URL,并将 <ai-gateway-endpoint> 替换为 Unity AI 网关终结点名称。
Google Gemini API
Google Gemini API
Python
from google import genai
from google.genai import types
import os
DATABRICKS_TOKEN = os.environ.get('DATABRICKS_TOKEN')
client = genai.Client(
api_key="databricks",
http_options=types.HttpOptions(
base_url="https://<workspace-url>/ai-gateway/gemini",
headers={
"Authorization": f"Bearer {DATABRICKS_TOKEN}",
},
),
)
response = client.models.generate_content(
model="<ai-gateway-endpoint>",
contents=[
types.Content(
role="user",
parts=[types.Part(text="Hello!")],
),
types.Content(
role="model",
parts=[types.Part(text="Hello! How can I assist you today?")],
),
types.Content(
role="user",
parts=[types.Part(text="What is Databricks?")],
),
],
config=types.GenerateContentConfig(
max_output_tokens=256,
),
)
print(response.text)
REST API
curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "Hello!"}]
},
{
"role": "model",
"parts": [{"text": "Hello! How can I assist you today?"}]
},
{
"role": "user",
"parts": [{"text": "What is Databricks?"}]
}
],
"generationConfig": {
"maxOutputTokens": 256
}
}' \
https://<workspace-url>/ai-gateway/gemini/v1beta/models/<ai-gateway-endpoint>:generateContent
将 <workspace-url> 替换为Azure Databricks工作区 URL,并将 <ai-gateway-endpoint> 替换为 Unity AI 网关终结点名称。
后续步骤
-
监督程序 API (Beta) - 通过托管工具运行多轮代理工作流
/mlflow/v1/responses
步骤 4. 通过 Unity AI 网关治理你在 Databricks 应用上的代理对 LLM 的使用 — 通过 Unity AI 网关从 Databricks 应用上的代理路由 LLM 调用