MCPcopy
hub / github.com/AstrBotDevs/AstrBot / _select_provider

Function _select_provider

astrbot/core/astr_main_agent.py:218–247  ·  view source on GitHub ↗

Select chat provider for the event.

(
    event: AstrMessageEvent, plugin_context: Context
)

Source from the content-addressed store, hash-verified

216
217
218def _select_provider(
219 event: AstrMessageEvent, plugin_context: Context
220) -> Provider | None:
221 """Select chat provider for the event."""
222 sel_provider = event.get_extra("selected_provider")
223 if sel_provider and isinstance(sel_provider, str):
224 provider = plugin_context.get_provider_by_id(sel_provider)
225 if provider is None:
226 logger.error("未找到指定的提供商: %s。", sel_provider)
227 _set_llm_error_message(
228 event,
229 f"LLM 请求失败:未找到指定的提供商 `{sel_provider}`。请检查提供商配置或重新选择可用模型。",
230 )
231 return None
232 if not isinstance(provider, Provider):
233 logger.error(
234 "选择的提供商类型无效(%s),跳过 LLM 请求处理。", type(provider)
235 )
236 _set_llm_error_message(
237 event,
238 f"LLM 请求失败:选择的提供商类型无效({type(provider).__name__}),已跳过本次请求。",
239 )
240 return None
241 return provider
242 try:
243 return plugin_context.get_using_provider(umo=event.unified_msg_origin)
244 except ValueError as exc:
245 logger.error("Error occurred while selecting provider: %s", exc)
246 _set_llm_error_message(event, f"LLM 请求失败:{exc}")
247 return None
248
249
250async def _get_session_conv(

Callers 1

build_main_agentFunction · 0.85

Calls 5

_set_llm_error_messageFunction · 0.85
get_extraMethod · 0.45
get_provider_by_idMethod · 0.45
errorMethod · 0.45
get_using_providerMethod · 0.45

Tested by

no test coverage detected