备份
This commit is contained in:
+41
-1
@@ -1,5 +1,5 @@
|
||||
# LiteLLM Azure Container Apps 生产配置
|
||||
# 支持 Taiji AI Cloud 和 OpenRouter 模型供应商
|
||||
# 支持 Taiji AI Cloud、OpenRouter、XMind 和 Databricks 模型供应商
|
||||
# 自动生成 - 包含所有模型的显式配置
|
||||
|
||||
# =============================================================================
|
||||
@@ -4696,6 +4696,45 @@ model_list:
|
||||
model_info:
|
||||
disable_background_health_check: true
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Databricks 模型(Anthropic Messages API 兼容)
|
||||
# 总计: 4 个模型
|
||||
# 端点: https://adb-7405604858124224.4.azuredatabricks.net/serving-endpoints/anthropic/v1/messages
|
||||
# 请求头: Authorization: Bearer {api_key}
|
||||
# 注意: 使用 Anthropic Messages API 格式
|
||||
# -------------------------------------------------------------------------
|
||||
- model_name: databricks/claude-haiku-4-5
|
||||
litellm_params:
|
||||
model: anthropic/databricks-claude-haiku-4-5
|
||||
api_base: https://adb-7405604858124224.4.azuredatabricks.net/serving-endpoints/anthropic/v1
|
||||
api_key: os.environ/DATABRICKS_TOKEN
|
||||
model_info:
|
||||
disable_background_health_check: true
|
||||
|
||||
- model_name: databricks/claude-opus-4-5
|
||||
litellm_params:
|
||||
model: anthropic/databricks-claude-opus-4-5
|
||||
api_base: https://adb-7405604858124224.4.azuredatabricks.net/serving-endpoints/anthropic/v1
|
||||
api_key: os.environ/DATABRICKS_TOKEN
|
||||
model_info:
|
||||
disable_background_health_check: true
|
||||
|
||||
- model_name: databricks/claude-sonnet-4-5
|
||||
litellm_params:
|
||||
model: anthropic/databricks-claude-sonnet-4-5
|
||||
api_base: https://adb-7405604858124224.4.azuredatabricks.net/serving-endpoints/anthropic/v1
|
||||
api_key: os.environ/DATABRICKS_TOKEN
|
||||
model_info:
|
||||
disable_background_health_check: true
|
||||
|
||||
- model_name: databricks/claude-opus-4-1
|
||||
litellm_params:
|
||||
model: anthropic/databricks-claude-opus-4-1
|
||||
api_base: https://adb-7405604858124224.4.azuredatabricks.net/serving-endpoints/anthropic/v1
|
||||
api_key: os.environ/DATABRICKS_TOKEN
|
||||
model_info:
|
||||
disable_background_health_check: true
|
||||
|
||||
# =============================================================================
|
||||
# 路由器设置
|
||||
# =============================================================================
|
||||
@@ -4726,6 +4765,7 @@ router_settings:
|
||||
# - REDIS_SSL: 是否启用 Redis SSL(true/false)
|
||||
# - TAIJI_API_KEY: Taiji AI Cloud API 密钥
|
||||
# - OPENROUTER_API_KEY: OpenRouter API 密钥
|
||||
# - DATABRICKS_TOKEN: Databricks Personal Access Token (PAT)
|
||||
# - XMIND_API_KEY_OPENAI: XMind OpenAI 兼容 API 密钥(默认: 6b761f38b4bf4c829390d82a43f8f32f)
|
||||
# - XMIND_API_KEY_ANTHROPIC: XMind Anthropic 兼容 API 密钥(默认: 9b123e68b3734856a6983fa229a1f94d)
|
||||
# - XMIND_API_KEY_VERTEX_AI: XMind Vertex AI 兼容 API 密钥(默认: 854a5b589db44fb0a08c988dd2dd57f8)
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,65 @@
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from typing import Any, Dict, List
|
||||
|
||||
import requests
|
||||
|
||||
# Required: export DATABRICKS_TOKEN with a valid Databricks PAT before running.
|
||||
DATABRICKS_TOKEN = "dapied25006cd5ec824b138dfa5e82e2630c" #User1
|
||||
|
||||
if not DATABRICKS_TOKEN:
|
||||
raise RuntimeError("Set DATABRICKS_TOKEN with a valid Databricks PAT.")
|
||||
|
||||
# Optional: override DATABRICKS_BASE_URL to point at your workspace host.
|
||||
BASE_URL = os.environ.get(
|
||||
"DATABRICKS_BASE_URL",
|
||||
"https://adb-7405604858124224.4.azuredatabricks.net",
|
||||
)
|
||||
ENDPOINT = f"{BASE_URL.rstrip('/')}/serving-endpoints/anthropic/v1/messages"
|
||||
# Adjust DEFAULT_MODEL if your workspace exposes a different deployed model name.
|
||||
DEFAULT_MODEL = "databricks-claude-sonnet-4-5"
|
||||
|
||||
|
||||
def build_payload(prompt: str, model: str, max_tokens: int) -> Dict[str, Any]:
|
||||
return {
|
||||
"model": model,
|
||||
"max_tokens": max_tokens,
|
||||
"messages": [{"role": "user", "content": prompt}],
|
||||
}
|
||||
|
||||
|
||||
def call_message_api(
|
||||
prompt: str, model: str = DEFAULT_MODEL, max_tokens: int = 500
|
||||
) -> Dict[str, Any]:
|
||||
payload = build_payload(prompt, model, max_tokens)
|
||||
headers = {
|
||||
"Authorization": f"Bearer {DATABRICKS_TOKEN}",
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
response = requests.post(ENDPOINT, headers=headers, json=payload, timeout=30)
|
||||
response.raise_for_status()
|
||||
return response.json()
|
||||
|
||||
|
||||
def extract_text(content: Any) -> str:
|
||||
if isinstance(content, list):
|
||||
text_blocks: List[str] = []
|
||||
for block in content:
|
||||
if isinstance(block, dict) and block.get("type") == "text":
|
||||
text_blocks.append(str(block.get("text", "")))
|
||||
if text_blocks:
|
||||
return "\n".join(text_blocks)
|
||||
return str(content)
|
||||
|
||||
|
||||
def main(argv: List[str]) -> None:
|
||||
prompt = " ".join(argv) if argv else "What is an LLM agent?"
|
||||
result = call_message_api(prompt)
|
||||
content = result.get("content")
|
||||
output = extract_text(content)
|
||||
print(output or json.dumps(result, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv[1:])
|
||||
@@ -0,0 +1,110 @@
|
||||
[
|
||||
{
|
||||
"model": "databricks-claude-haiku-4-5",
|
||||
"status": "success",
|
||||
"response": {
|
||||
"model": "claude-haiku-4-5-20251001",
|
||||
"id": "msg_bdrk_019rU8d2HJVgDz7LT2MSz3z9",
|
||||
"type": "message",
|
||||
"role": "assistant",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Hello! 2 + 2 = 4."
|
||||
}
|
||||
],
|
||||
"stop_reason": "end_turn",
|
||||
"stop_sequence": null,
|
||||
"usage": {
|
||||
"input_tokens": 16,
|
||||
"cache_creation_input_tokens": 0,
|
||||
"cache_read_input_tokens": 0,
|
||||
"cache_creation": {
|
||||
"ephemeral_5m_input_tokens": 0,
|
||||
"ephemeral_1h_input_tokens": 0
|
||||
},
|
||||
"output_tokens": 16
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "databricks-claude-opus-4-5",
|
||||
"status": "success",
|
||||
"response": {
|
||||
"model": "claude-opus-4-5-20251101",
|
||||
"id": "msg_bdrk_01B3qYeKwWRkCkvhLLErQzUr",
|
||||
"type": "message",
|
||||
"role": "assistant",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Hello! 2+2 equals 4."
|
||||
}
|
||||
],
|
||||
"stop_reason": "end_turn",
|
||||
"stop_sequence": null,
|
||||
"usage": {
|
||||
"input_tokens": 16,
|
||||
"cache_creation_input_tokens": 0,
|
||||
"cache_read_input_tokens": 0,
|
||||
"cache_creation": {
|
||||
"ephemeral_5m_input_tokens": 0,
|
||||
"ephemeral_1h_input_tokens": 0
|
||||
},
|
||||
"output_tokens": 14
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "databricks-claude-sonnet-4-5",
|
||||
"status": "success",
|
||||
"response": {
|
||||
"model": "claude-sonnet-4-5-20250929",
|
||||
"id": "msg_bdrk_01UhJcpUBwPKqPpgz7SuerbV",
|
||||
"type": "message",
|
||||
"role": "assistant",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Hello! 2 + 2 = 4"
|
||||
}
|
||||
],
|
||||
"stop_reason": "end_turn",
|
||||
"stop_sequence": null,
|
||||
"usage": {
|
||||
"input_tokens": 16,
|
||||
"cache_creation_input_tokens": 0,
|
||||
"cache_read_input_tokens": 0,
|
||||
"cache_creation": {
|
||||
"ephemeral_5m_input_tokens": 0,
|
||||
"ephemeral_1h_input_tokens": 0
|
||||
},
|
||||
"output_tokens": 15
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"model": "databricks-claude-opus-4-1",
|
||||
"status": "success",
|
||||
"response": {
|
||||
"model": "claude-opus-4-1-20250805",
|
||||
"id": "msg_bdrk_01W344zBQvnZpLh1YUi2yeYF",
|
||||
"type": "message",
|
||||
"role": "assistant",
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "2 + 2 = 4"
|
||||
}
|
||||
],
|
||||
"stop_reason": "end_turn",
|
||||
"stop_sequence": null,
|
||||
"usage": {
|
||||
"input_tokens": 16,
|
||||
"cache_creation_input_tokens": 0,
|
||||
"cache_read_input_tokens": 0,
|
||||
"output_tokens": 13
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user