diff --git a/pkg/discover/engine.py b/pkg/discover/engine.py index 2f6b29b7..297e6515 100644 --- a/pkg/discover/engine.py +++ b/pkg/discover/engine.py @@ -187,6 +187,9 @@ class ComponentDiscoveryEngine: if name == 'ComponentTemplate': continue components[name] = self.load_blueprint_comp_group(component, owner) + + self.ap.logger.debug(f'Components: {components}') + return blueprint_manifest, components diff --git a/pkg/provider/modelmgr/modelmgr.py b/pkg/provider/modelmgr/modelmgr.py index 7aa6b99f..e8c231c5 100644 --- a/pkg/provider/modelmgr/modelmgr.py +++ b/pkg/provider/modelmgr/modelmgr.py @@ -4,7 +4,7 @@ import aiohttp from . import entities, requester from ...core import app - +from ...discover import engine from . import token from .requesters import bailianchatcmpl, chatcmpl, anthropicmsgs, moonshotchatcmpl, deepseekchatcmpl, ollamachat, giteeaichatcmpl, volcarkchatcmpl, xaichatcmpl, zhipuaichatcmpl, lmstudiochatcmpl, siliconflowchatcmpl, volcarkchatcmpl @@ -16,6 +16,8 @@ class ModelManager: ap: app.Application + requester_components: list[engine.Component] + model_list: list[entities.LLMModelInfo] requesters: dict[str, requester.LLMAPIRequester] @@ -38,14 +40,21 @@ class ModelManager: async def initialize(self): + self.requester_components = self.ap.discover.get_components_by_kind('LLMAPIRequester') + # 初始化token_mgr, requester for k, v in self.ap.provider_cfg.data['keys'].items(): self.token_mgrs[k] = token.TokenManager(k, v) - for api_cls in requester.preregistered_requesters: + # for api_cls in requester.preregistered_requesters: + # api_inst = api_cls(self.ap) + # await api_inst.initialize() + # self.requesters[api_inst.name] = api_inst + for component in self.requester_components: + api_cls = component.get_python_component_class() api_inst = api_cls(self.ap) await api_inst.initialize() - self.requesters[api_inst.name] = api_inst + self.requesters[component.metadata.name] = api_inst # 尝试从api获取最新的模型信息 try: diff --git a/pkg/provider/modelmgr/requester.py b/pkg/provider/modelmgr/requester.py index cf29bd4d..147a97c4 100644 --- a/pkg/provider/modelmgr/requester.py +++ b/pkg/provider/modelmgr/requester.py @@ -10,18 +10,6 @@ from . import entities as modelmgr_entities from ..tools import entities as tools_entities -preregistered_requesters: list[typing.Type[LLMAPIRequester]] = [] - -def requester_class(name: str): - - def decorator(cls: typing.Type[LLMAPIRequester]) -> typing.Type[LLMAPIRequester]: - cls.name = name - preregistered_requesters.append(cls) - return cls - - return decorator - - class LLMAPIRequester(metaclass=abc.ABCMeta): """LLM API请求器 """ diff --git a/pkg/provider/modelmgr/requesters/anthropicmsgs.py b/pkg/provider/modelmgr/requesters/anthropicmsgs.py index 72301efd..c977a9f2 100644 --- a/pkg/provider/modelmgr/requesters/anthropicmsgs.py +++ b/pkg/provider/modelmgr/requesters/anthropicmsgs.py @@ -16,7 +16,6 @@ from ...tools import entities as tools_entities from ....utils import image -@requester.requester_class("anthropic-messages") class AnthropicMessages(requester.LLMAPIRequester): """Anthropic Messages API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/bailianchatcmpl.py b/pkg/provider/modelmgr/requesters/bailianchatcmpl.py index cce003bd..8f6b258c 100644 --- a/pkg/provider/modelmgr/requesters/bailianchatcmpl.py +++ b/pkg/provider/modelmgr/requesters/bailianchatcmpl.py @@ -7,7 +7,6 @@ from .. import requester from ....core import app -@requester.requester_class("bailian-chat-completions") class BailianChatCompletions(chatcmpl.OpenAIChatCompletions): """阿里云百炼大模型平台 ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/chatcmpl.py b/pkg/provider/modelmgr/requesters/chatcmpl.py index cdd8e032..7bf83377 100644 --- a/pkg/provider/modelmgr/requesters/chatcmpl.py +++ b/pkg/provider/modelmgr/requesters/chatcmpl.py @@ -20,7 +20,6 @@ from ...tools import entities as tools_entities from ....utils import image -@requester.requester_class("openai-chat-completions") class OpenAIChatCompletions(requester.LLMAPIRequester): """OpenAI ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/deepseekchatcmpl.py b/pkg/provider/modelmgr/requesters/deepseekchatcmpl.py index 7b8c9ca8..f6453a19 100644 --- a/pkg/provider/modelmgr/requesters/deepseekchatcmpl.py +++ b/pkg/provider/modelmgr/requesters/deepseekchatcmpl.py @@ -7,7 +7,6 @@ from ... import entities as llm_entities from ...tools import entities as tools_entities -@requester.requester_class("deepseek-chat-completions") class DeepseekChatCompletions(chatcmpl.OpenAIChatCompletions): """Deepseek ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/giteeaichatcmpl.py b/pkg/provider/modelmgr/requesters/giteeaichatcmpl.py index d737f235..4beb6ba8 100644 --- a/pkg/provider/modelmgr/requesters/giteeaichatcmpl.py +++ b/pkg/provider/modelmgr/requesters/giteeaichatcmpl.py @@ -14,7 +14,6 @@ from ...tools import entities as tools_entities from .. import entities as modelmgr_entities -@requester.requester_class("gitee-ai-chat-completions") class GiteeAIChatCompletions(chatcmpl.OpenAIChatCompletions): """Gitee AI ChatCompletions API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/lmstudiochatcmpl.py b/pkg/provider/modelmgr/requesters/lmstudiochatcmpl.py index 7ec89b2e..d2a9bcb7 100644 --- a/pkg/provider/modelmgr/requesters/lmstudiochatcmpl.py +++ b/pkg/provider/modelmgr/requesters/lmstudiochatcmpl.py @@ -7,7 +7,6 @@ from .. import requester from ....core import app -@requester.requester_class("lmstudio-chat-completions") class LmStudioChatCompletions(chatcmpl.OpenAIChatCompletions): """LMStudio ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/moonshotchatcmpl.py b/pkg/provider/modelmgr/requesters/moonshotchatcmpl.py index 95c4aaf5..2e94fd04 100644 --- a/pkg/provider/modelmgr/requesters/moonshotchatcmpl.py +++ b/pkg/provider/modelmgr/requesters/moonshotchatcmpl.py @@ -9,7 +9,6 @@ from ... import entities as llm_entities from ...tools import entities as tools_entities -@requester.requester_class("moonshot-chat-completions") class MoonshotChatCompletions(chatcmpl.OpenAIChatCompletions): """Moonshot ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/ollamachat.py b/pkg/provider/modelmgr/requesters/ollamachat.py index ba2ee66a..0ac2915f 100644 --- a/pkg/provider/modelmgr/requesters/ollamachat.py +++ b/pkg/provider/modelmgr/requesters/ollamachat.py @@ -20,7 +20,6 @@ from ....utils import image REQUESTER_NAME: str = "ollama-chat" -@requester.requester_class(REQUESTER_NAME) class OllamaChatCompletions(requester.LLMAPIRequester): """Ollama平台 ChatCompletion API请求器""" client: ollama.AsyncClient diff --git a/pkg/provider/modelmgr/requesters/siliconflowchatcmpl.py b/pkg/provider/modelmgr/requesters/siliconflowchatcmpl.py index 7c8eab7b..c763556f 100644 --- a/pkg/provider/modelmgr/requesters/siliconflowchatcmpl.py +++ b/pkg/provider/modelmgr/requesters/siliconflowchatcmpl.py @@ -7,7 +7,6 @@ from .. import requester from ....core import app -@requester.requester_class("siliconflow-chat-completions") class SiliconFlowChatCompletions(chatcmpl.OpenAIChatCompletions): """SiliconFlow ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/volcarkchatcmpl.py b/pkg/provider/modelmgr/requesters/volcarkchatcmpl.py index d0c13eaf..f2a58789 100644 --- a/pkg/provider/modelmgr/requesters/volcarkchatcmpl.py +++ b/pkg/provider/modelmgr/requesters/volcarkchatcmpl.py @@ -7,7 +7,6 @@ from .. import requester from ....core import app -@requester.requester_class("volcark-chat-completions") class VolcArkChatCompletions(chatcmpl.OpenAIChatCompletions): """火山方舟大模型平台 ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/xaichatcmpl.py b/pkg/provider/modelmgr/requesters/xaichatcmpl.py index 62f48bc9..217b142f 100644 --- a/pkg/provider/modelmgr/requesters/xaichatcmpl.py +++ b/pkg/provider/modelmgr/requesters/xaichatcmpl.py @@ -7,7 +7,6 @@ from .. import requester from ....core import app -@requester.requester_class("xai-chat-completions") class XaiChatCompletions(chatcmpl.OpenAIChatCompletions): """xAI ChatCompletion API 请求器""" diff --git a/pkg/provider/modelmgr/requesters/zhipuaichatcmpl.py b/pkg/provider/modelmgr/requesters/zhipuaichatcmpl.py index b0011001..18edd36d 100644 --- a/pkg/provider/modelmgr/requesters/zhipuaichatcmpl.py +++ b/pkg/provider/modelmgr/requesters/zhipuaichatcmpl.py @@ -7,7 +7,6 @@ from . import chatcmpl from .. import requester -@requester.requester_class("zhipuai-chat-completions") class ZhipuAIChatCompletions(chatcmpl.OpenAIChatCompletions): """智谱AI ChatCompletion API 请求器"""