Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion packages/astrbot/process_llm_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,18 @@ async def _request_img_caption(
f"Cannot get image caption because provider `{provider_id}` is not exist.",
)

def _select_provider(self, event: AstrMessageEvent):
"""选择使用的 LLM 提供商"""
sel_provider = event.get_extra("selected_provider")
_ctx = self.ctx
if sel_provider and isinstance(sel_provider, str):
provider = _ctx.get_provider_by_id(sel_provider)
if not provider:
logger.error(f"未找到指定的提供商: {sel_provider}。")
return provider

return _ctx.get_using_provider(umo=event.unified_msg_origin)

async def process_llm_request(self, event: AstrMessageEvent, req: ProviderRequest):
"""在请求 LLM 前注入人格信息、Identifier、时间、回复内容等 System Prompt"""
cfg: dict = self.ctx.get_config(umo=event.unified_msg_origin)[
Expand Down Expand Up @@ -165,7 +177,14 @@ async def process_llm_request(self, event: AstrMessageEvent, req: ProviderReques
await self._ensure_persona(req, cfg, event.unified_msg_origin)

# image caption
if img_cap_prov_id and req.image_urls:
if (
img_cap_prov_id
and req.image_urls
and "image"
not in self._select_provider(event).provider_config.get(
"modalities", ["image"]
)
):
await self._ensure_img_caption(req, cfg, img_cap_prov_id)

# quote message processing
Expand Down