Spaces:
Running
Running
| #!/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 | |