feat: 异步风格插件方法注册器

This commit is contained in:
RockChinQ
2024-03-20 15:09:47 +08:00
parent fa823de6b0
commit 52a7c25540
9 changed files with 210 additions and 9 deletions
+12 -2
View File
@@ -5,6 +5,7 @@ import traceback
from ...core import app, entities as core_entities
from . import entities
from ...plugin import context as plugin_context
class ToolManager:
@@ -28,6 +29,15 @@ class ToolManager:
return function
return None
async def get_function_and_plugin(self, name: str) -> typing.Tuple[entities.LLMFunction, plugin_context.BasePlugin]:
"""获取函数和插件
"""
for plugin in self.ap.plugin_mgr.plugins:
for function in plugin.content_functions:
if function.name == name:
return function, plugin
return None, None
async def get_all_functions(self) -> list[entities.LLMFunction]:
"""获取所有函数
"""
@@ -68,7 +78,7 @@ class ToolManager:
try:
function = await self.get_function(name)
function, plugin = await self.get_function_and_plugin(name)
if function is None:
return None
@@ -79,7 +89,7 @@ class ToolManager:
**parameters
}
return await function.func(**parameters)
return await function.func(plugin, **parameters)
except Exception as e:
self.ap.logger.error(f'执行函数 {name} 时发生错误: {e}')
traceback.print_exc()