| name | provider-manager |
| description | 管理和切换 AstrBot 的 LLM 模型提供商 |
| version | 2.0.0 |
| author | AstrBot Community |
| requires_admin | true |
| requires_computer_use | true |
Provider Manager
管理 LLM 模型提供商的查看和切换。
使用场景
- "现在用什么模型?" / "当前是哪个提供商?"
- "有哪些可用的模型?"
- "切换到 deepseek 模型" / "帮我换成 claude"
可用工具
1. 列出所有提供商
async def list_providers(context):
try:
providers = context.get_llm_providers()
if not providers:
return "没有配置任何 LLM 提供商。"
lines = ["🤖 可用的 LLM 提供商:\n"]
for p in providers:
name = p.get("name", "unknown")
model = p.get("model", "")
enabled = p.get("enabled", False)
status = "✅可用" if enabled else "❌禁用"
lines.append(f"- [{status}] **{name}**: {model}")
return "\n".join(lines)
except Exception as e:
return f"❌ 列出提供商失败:{e}"
event = globals().get('event')
if not event.is_admin():
print("❌ 错误:仅管理员可用")
import sys; sys.exit(1)
context = globals().get('context')
result = await list_providers(context)
print(result)
2. 查看当前提供商
async def get_current_provider(context):
try:
current = context.get_current_llm_provider()
if not current:
return "未设置当前 LLM 提供商。"
name = current.get("name", "unknown")
model = current.get("model", "")
return f"🤖 当前使用的提供商:**{name}**\n模型:{model}"
except Exception as e:
return f"❌ 获取当前提供商失败:{e}"
result = await get_current_provider(context)
print(result)
3. 切换提供商
async def switch_provider(context, provider_name: str, umo: str):
try:
success = await context.switch_llm_provider(provider_name, umo)
if success:
return f"✅ 已切换到提供商「{provider_name}」。"
else:
return f"❌ 切换失败:提供商「{provider_name}」不存在或不可用。"
except Exception as e:
return f"❌ 切换失败:{e}"
umo = event.unified_msg_origin
result = await switch_provider(context, provider_name="<提供商名>", umo=umo)
print(result)
注意事项
- 切换提供商会影响当前会话的后续对话
- 不同提供商的能力和配额可能不同
- 确保目标提供商已正确配置 API Key