amazonq2api / query_amazon_models.py
liuzhao521
Update app.py and add model discovery tools
f12ea8b
#!/usr/bin/env python3
"""
直接查询 Amazon Q 服务来获取支持的模型
"""
import requests
import json
import time
from replicate import send_chat_request
def get_available_models_from_amazon_q():
"""尝试通过特殊查询获取 Amazon Q 支持的模型"""
# 尝试不同的查询方式来获取模型信息
test_queries = [
"你支持哪些模型?",
"有哪些可用的模型?",
"列出所有支持的模型名称",
"What models are available?",
"List all supported models",
"Show model options",
"model list",
"models",
"help"
]
print("🔍 通过查询尝试获取 Amazon Q 支持的模型信息")
print("=" * 60)
# 这里需要一个有效的 access token,我们先尝试从现有账号获取
try:
# 检查是否有可用账号
accounts_response = requests.get("http://localhost:8000/v2/accounts", timeout=10)
if accounts_response.status_code != 200:
print("❌ 无法获取账号信息")
return
accounts = accounts_response.json()
enabled_accounts = [acc for acc in accounts if acc.get("enabled", False)]
if not enabled_accounts:
print("❌ 没有可用的账号")
return
account = enabled_accounts[0]
access_token = account.get("accessToken")
if not access_token:
# 尝试刷新 token
print("🔄 刷新 access token...")
refresh_response = requests.post(f"http://localhost:8000/v2/accounts/{account['id']}/refresh", timeout=10)
if refresh_response.status_code == 200:
updated_account = refresh_response.json()
access_token = updated_account.get("accessToken")
if not access_token:
print("❌ 无法获取 access token")
return
print(f"✅ 获取到 access token,开始查询...")
# 对每个查询进行测试
for i, query in enumerate(test_queries, 1):
print(f"\n[{i}/{len(test_queries)}] 查询: {query}")
print("-" * 40)
try:
text, _, tracker = send_chat_request(
access_token,
[{"role": "user", "content": query}],
model=None, # 不指定模型,使用默认
stream=False,
timeout=(10, 30)
)
if text:
print(f"响应: {text[:200]}...")
# 检查响应中是否包含模型信息
model_keywords = ["model", "claude", "anthropic", "sonnet", "haiku", "opus"]
found_models = []
for keyword in model_keywords:
if keyword.lower() in text.lower():
found_models.append(keyword)
if found_models:
print(f"🔍 发现模型相关关键词: {', '.join(found_models)}")
else:
print("❌ 无响应")
except Exception as e:
print(f"❌ 查询失败: {e}")
time.sleep(1) # 避免请求过快
except Exception as e:
print(f"❌ 获取模型信息失败: {e}")
def test_model_variations():
"""测试模型名称的变体"""
# 基于已知可用的 claude-sonnet-4,测试可能的变体
variations = [
"claude-sonnet-4",
"Claude-Sonnet-4",
"CLAUDE-SONNET-4",
"sonnet-4",
"claude-4-sonnet",
"claude-4",
"sonnet4",
"anthropic-sonnet-4",
"anthropic-claude-sonnet-4",
]
print("\n🧪 测试模型名称变体")
print("=" * 40)
for model in variations:
try:
text, _, tracker = send_chat_request(
"dummy_token", # 这里会被替换为真实 token
[{"role": "user", "content": "test"}],
model=model,
stream=False,
timeout=(5, 15)
)
if text:
print(f"✅ {model} - 可用")
else:
print(f"❌ {model} - 不可用")
except Exception as e:
print(f"❌ {model} - 错误: {str(e)[:50]}")
time.sleep(0.5)
if __name__ == "__main__":
get_available_models_from_amazon_q()
# test_model_variations() # 暂时不运行,因为需要有效token