@@ -229,9 +229,7 @@ async def plugin_ls(self, event: AstrMessageEvent):
229229 async def plugin_off (self , event : AstrMessageEvent , plugin_name : str = None ):
230230 """禁用插件"""
231231 if DEMO_MODE :
232- event .set_result (
233- MessageEventResult ().message ("演示模式下无法禁用插件。" )
234- )
232+ event .set_result (MessageEventResult ().message ("演示模式下无法禁用插件。" ))
235233 return
236234 if not plugin_name :
237235 event .set_result (
@@ -246,9 +244,7 @@ async def plugin_off(self, event: AstrMessageEvent, plugin_name: str = None):
246244 async def plugin_on (self , event : AstrMessageEvent , plugin_name : str = None ):
247245 """启用插件"""
248246 if DEMO_MODE :
249- event .set_result (
250- MessageEventResult ().message ("演示模式下无法启用插件。" )
251- )
247+ event .set_result (MessageEventResult ().message ("演示模式下无法启用插件。" ))
252248 return
253249 if not plugin_name :
254250 event .set_result (
@@ -263,9 +259,7 @@ async def plugin_on(self, event: AstrMessageEvent, plugin_name: str = None):
263259 async def plugin_get (self , event : AstrMessageEvent , plugin_repo : str = None ):
264260 """安装插件"""
265261 if DEMO_MODE :
266- event .set_result (
267- MessageEventResult ().message ("演示模式下无法安装插件。" )
268- )
262+ event .set_result (MessageEventResult ().message ("演示模式下无法安装插件。" ))
269263 return
270264 if not plugin_repo :
271265 event .set_result (
@@ -1304,12 +1298,36 @@ async def decorate_llm_req(self, event: AstrMessageEvent, req: ProviderRequest):
13041298 ) and not req .contexts :
13051299 req .contexts [:0 ] = begin_dialogs
13061300
1307- if quote and quote .message_str :
1301+ if quote :
1302+ sender_info = ""
13081303 if quote .sender_nickname :
13091304 sender_info = f"(Sent by { quote .sender_nickname } )"
1310- else :
1311- sender_info = ""
1312- req .system_prompt += f"\n User is quoting the message{ sender_info } : { quote .message_str } , please consider the context."
1305+ message_str = quote .message_str or "[Empty Text]"
1306+ req .system_prompt += (
1307+ f"\n User is quoting a message{ sender_info } .\n "
1308+ f"Here are the information of the quoted message: Text Content: { message_str } .\n "
1309+ )
1310+ image_seg = None
1311+ if quote .chain :
1312+ for comp in quote .chain :
1313+ if isinstance (comp , Image ):
1314+ image_seg = comp
1315+ break
1316+ if image_seg :
1317+ try :
1318+ if prov := self .context .get_using_provider (
1319+ event .unified_msg_origin
1320+ ):
1321+ llm_resp = await prov .text_chat (
1322+ prompt = "Please describe the image content." ,
1323+ image_urls = [await image_seg .convert_to_file_path ()],
1324+ )
1325+ if llm_resp .completion_text :
1326+ req .system_prompt += (
1327+ f"Image Caption: { llm_resp .completion_text } \n "
1328+ )
1329+ except BaseException as e :
1330+ logger .error (f"处理引用图片失败: { e } " )
13131331
13141332 if self .ltm :
13151333 try :
0 commit comments