Skip to content
Open
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
52 changes: 51 additions & 1 deletion packages/astrbot/process_llm_request.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,58 @@ async def process_llm_request(self, event: AstrMessageEvent, req: ProviderReques
self._ensure_persona(req, cfg)

# image caption
# 只有当前 provider 不支持图像时才使用图像转述
if img_cap_prov_id and req.image_urls:
await self._ensure_img_caption(req, cfg, img_cap_prov_id)
current_provider = self.ctx.get_using_provider(
umo=event.unified_msg_origin
)
provider_supports_image = False

logger.debug(f"[IMG Caption] 当前 provider: {current_provider}")

if current_provider:
try:
provider_id = current_provider.meta().id
logger.debug(f"[IMG Caption] Provider ID: {provider_id}")

# 从配置中查找当前 provider 的配置
full_cfg = self.ctx.get_config(umo=event.unified_msg_origin)
providers_list = full_cfg.get("provider", [])
logger.debug(
f"[IMG Caption] 配置中的 provider 数量: {len(providers_list)}"
)
logger.debug(
f"[IMG Caption] 所有 provider IDs: {[p.get('id') for p in providers_list]}"
)

for provider_cfg in providers_list:
if provider_cfg.get("id") == provider_id:
modalities = provider_cfg.get("modalities", [])
logger.debug(
f"[IMG Caption] 找到 provider 配置,modalities: {modalities}"
)
if "image" in modalities:
provider_supports_image = True
logger.debug(
"[IMG Caption] Provider 支持图像能力,跳过图像转述"
)
break
else:
logger.debug(
f"[IMG Caption] 未找到 provider_id={provider_id} 的配置"
)
except Exception as e:
logger.warning(f"[IMG Caption] 获取 provider 信息失败: {e}")
else:
logger.debug("[IMG Caption] 当前没有 provider")

if not provider_supports_image:
logger.debug("[IMG Caption] 当前 provider 不支持图像,启用图像转述")
await self._ensure_img_caption(req, cfg, img_cap_prov_id)
else:
logger.debug(
"[IMG Caption] 当前 provider 支持图像,直接传递图片 URL"
)

# quote message processing
# 解析引用内容
Expand Down