fix(assistant): align resource tools with application services

This commit is contained in:
huanghuoguoguo
2026-09-16 22:37:02 +08:00
parent e82d71029e
commit 48140fbfd4
4 changed files with 44 additions and 6 deletions
@@ -253,7 +253,8 @@ class AssistantService:
await self._save(context, conversation, 'running')
try:
result = await execute_tool(self.ap, context, func['name'], json.loads(func['arguments'] or '{}'))
except Exception:
except Exception as exc:
self.ap.logger.warning('Management assistant tool %s failed (%s)', func['name'], type(exc).__name__)
self._append_result(
conversation,
call,
@@ -89,13 +89,18 @@ async def execute_tool(ap, context, name: str, arguments: dict):
args = validate_call(context, name, arguments).model_dump(mode='json')
if name == 'list_resources':
readers = {
'models': ap.model_service.get_llm_models,
'embedding_models': ap.model_service.get_embedding_models,
'models': ap.llm_model_service.get_llm_models,
'embedding_models': ap.embedding_models_service.get_embedding_models,
'pipelines': ap.pipeline_service.get_pipelines,
'knowledge_bases': ap.knowledge_service.get_knowledge_bases,
'knowledge_engines': ap.knowledge_service.list_knowledge_engines,
}
return redact_secrets(await readers[args['kind']](context))
resources = await readers[args['kind']](context)
if args['kind'] != 'knowledge_engines':
# Lists discover resources; get_pipeline / get_knowledge_schema supply configuration details.
fields = ('uuid', 'name', 'description', 'abilities', 'knowledge_engine_plugin_id')
resources = [{key: item[key] for key in fields if key in item} for item in resources]
return {'total': len(resources), 'items': redact_secrets(resources)}
if name == 'get_pipeline':
return await ap.pipeline_service.get_pipeline(context, args['pipeline_uuid'])
if name == 'get_knowledge_schema':