Compare commits

...

1 Commits

Author SHA1 Message Date
Junyan Qin (Chin)
cd68760c75 Fix/runner bugs (#1388)
* fix: bugs in runners

* fix: model entity of exists conversation is None after changed runner
2025-05-12 18:21:08 +08:00
3 changed files with 14 additions and 16 deletions

View File

@@ -30,12 +30,14 @@ class PreProcessor(stage.PipelineStage):
stage_inst_name: str, stage_inst_name: str,
) -> entities.StageProcessResult: ) -> entities.StageProcessResult:
"""处理""" """处理"""
selected_runner = query.pipeline_config['ai']['runner']['runner']
session = await self.ap.sess_mgr.get_session(query) session = await self.ap.sess_mgr.get_session(query)
# 非 local-agent 时llm_model 为 None # 非 local-agent 时llm_model 为 None
llm_model = ( llm_model = (
await self.ap.model_mgr.get_model_by_uuid(query.pipeline_config['ai']['local-agent']['model']) await self.ap.model_mgr.get_model_by_uuid(query.pipeline_config['ai']['local-agent']['model'])
if query.pipeline_config['ai']['runner'] == 'local-agent' if selected_runner == 'local-agent'
else None else None
) )
@@ -43,17 +45,18 @@ class PreProcessor(stage.PipelineStage):
query, query,
session, session,
query.pipeline_config['ai']['local-agent']['prompt'], query.pipeline_config['ai']['local-agent']['prompt'],
llm_model,
) )
conversation.use_llm_model = llm_model
# 设置query # 设置query
query.session = session query.session = session
query.prompt = conversation.prompt.copy() query.prompt = conversation.prompt.copy()
query.messages = conversation.messages.copy() query.messages = conversation.messages.copy()
query.use_llm_model = conversation.use_llm_model query.use_llm_model = llm_model
if query.pipeline_config['ai']['runner'] == 'local-agent': if selected_runner == 'local-agent':
query.use_funcs = ( query.use_funcs = (
conversation.use_funcs if query.use_llm_model.model_entity.abilities.__contains__('tool_call') else None conversation.use_funcs if query.use_llm_model.model_entity.abilities.__contains__('tool_call') else None
) )
@@ -68,9 +71,7 @@ class PreProcessor(stage.PipelineStage):
# Check if this model supports vision, if not, remove all images # Check if this model supports vision, if not, remove all images
# TODO this checking should be performed in runner, and in this stage, the image should be reserved # TODO this checking should be performed in runner, and in this stage, the image should be reserved
if query.pipeline_config['ai']['runner'][ if selected_runner == 'local-agent' and not query.use_llm_model.model_entity.abilities.__contains__('vision'):
'runner'
] == 'local-agent' and not query.use_llm_model.model_entity.abilities.__contains__('vision'):
for msg in query.messages: for msg in query.messages:
if isinstance(msg.content, list): if isinstance(msg.content, list):
for me in msg.content: for me in msg.content:
@@ -86,9 +87,9 @@ class PreProcessor(stage.PipelineStage):
content_list.append(llm_entities.ContentElement.from_text(me.text)) content_list.append(llm_entities.ContentElement.from_text(me.text))
plain_text += me.text plain_text += me.text
elif isinstance(me, platform_message.Image): elif isinstance(me, platform_message.Image):
if query.pipeline_config['ai']['runner'][ if selected_runner != 'local-agent' or query.use_llm_model.model_entity.abilities.__contains__(
'runner' 'vision'
] != 'local-agent' or query.use_llm_model.model_entity.abilities.__contains__('vision'): ):
if me.base64 is not None: if me.base64 is not None:
content_list.append(llm_entities.ContentElement.from_image_base64(me.base64)) content_list.append(llm_entities.ContentElement.from_image_base64(me.base64))

View File

@@ -121,7 +121,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
user=f'{query.session.launcher_type.value}_{query.session.launcher_id}', user=f'{query.session.launcher_type.value}_{query.session.launcher_id}',
conversation_id=cov_id, conversation_id=cov_id,
files=files, files=files,
timeout=self.pipeline_config['ai']['dify-service-api']['timeout'], timeout=120,
): ):
self.ap.logger.debug('dify-chat-chunk: ' + str(chunk)) self.ap.logger.debug('dify-chat-chunk: ' + str(chunk))
@@ -184,7 +184,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
response_mode='streaming', response_mode='streaming',
conversation_id=cov_id, conversation_id=cov_id,
files=files, files=files,
timeout=self.pipeline_config['ai']['dify-service-api']['timeout'], timeout=120,
): ):
self.ap.logger.debug('dify-agent-chunk: ' + str(chunk)) self.ap.logger.debug('dify-agent-chunk: ' + str(chunk))
@@ -276,7 +276,7 @@ class DifyServiceAPIRunner(runner.RequestRunner):
inputs=inputs, inputs=inputs,
user=f'{query.session.launcher_type.value}_{query.session.launcher_id}', user=f'{query.session.launcher_type.value}_{query.session.launcher_id}',
files=files, files=files,
timeout=self.pipeline_config['ai']['dify-service-api']['timeout'], timeout=120,
): ):
self.ap.logger.debug('dify-workflow-chunk: ' + str(chunk)) self.ap.logger.debug('dify-workflow-chunk: ' + str(chunk))
if chunk['event'] in ignored_events: if chunk['event'] in ignored_events:

View File

@@ -4,7 +4,6 @@ import asyncio
from ...core import app, entities as core_entities from ...core import app, entities as core_entities
from ...provider import entities as provider_entities from ...provider import entities as provider_entities
from ...provider.modelmgr import entities as model_entities
class SessionManager: class SessionManager:
@@ -42,7 +41,6 @@ class SessionManager:
query: core_entities.Query, query: core_entities.Query,
session: core_entities.Session, session: core_entities.Session,
prompt_config: list[dict], prompt_config: list[dict],
llm_model: model_entities.LLMModelInfo,
) -> core_entities.Conversation: ) -> core_entities.Conversation:
"""获取对话或创建对话""" """获取对话或创建对话"""
@@ -64,7 +62,6 @@ class SessionManager:
conversation = core_entities.Conversation( conversation = core_entities.Conversation(
prompt=prompt, prompt=prompt,
messages=[], messages=[],
use_llm_model=llm_model,
use_funcs=await self.ap.tool_mgr.get_all_functions( use_funcs=await self.ap.tool_mgr.get_all_functions(
plugin_enabled=True, plugin_enabled=True,
), ),