From 349ce6908ee24bb09c2670fdd823883f4b7e0376 Mon Sep 17 00:00:00 2001 From: Junyan Qin Date: Thu, 20 Mar 2025 11:54:55 +0800 Subject: [PATCH] stash --- pkg/api/http/service/model.py | 8 +++--- pkg/provider/modelmgr/modelmgr.py | 45 ++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/pkg/api/http/service/model.py b/pkg/api/http/service/model.py index aff1a63a..7ded6cd1 100644 --- a/pkg/api/http/service/model.py +++ b/pkg/api/http/service/model.py @@ -35,7 +35,7 @@ class ModelsService: **model_data ) ) - await self.ap.model_mgr.load_model(model_data) + await self.ap.model_mgr.load_llm_model(model_data) async def get_llm_model(self, model_uuid: str) -> dict | None: result = await self.ap.persistence_mgr.execute_async( @@ -54,12 +54,12 @@ class ModelsService: sqlalchemy.update(persistence_model.LLMModel).where(persistence_model.LLMModel.uuid == model_uuid).values(**model_data) ) - await self.ap.model_mgr.remove_model(model_uuid) - await self.ap.model_mgr.load_model(model_data) + await self.ap.model_mgr.remove_llm_model(model_uuid) + await self.ap.model_mgr.load_llm_model(model_data) async def delete_llm_model(self, model_uuid: str) -> None: await self.ap.persistence_mgr.execute_async( sqlalchemy.delete(persistence_model.LLMModel).where(persistence_model.LLMModel.uuid == model_uuid) ) - await self.ap.model_mgr.remove_model(model_uuid) + await self.ap.model_mgr.remove_llm_model(model_uuid) diff --git a/pkg/provider/modelmgr/modelmgr.py b/pkg/provider/modelmgr/modelmgr.py index 1eb3d776..e8329ac1 100644 --- a/pkg/provider/modelmgr/modelmgr.py +++ b/pkg/provider/modelmgr/modelmgr.py @@ -1,10 +1,13 @@ from __future__ import annotations -import aiohttp +import typing import sqlalchemy from . import entities, requester from ...core import app +from ...core import entities as core_entities +from .. import entities as llm_entities +from ..tools import entities as tools_entities from ...discover import engine from . import token from ...entity.persistence import model as persistence_model @@ -58,14 +61,6 @@ class ModelManager: self.llm_models = [] self.requester_components = [] self.requester_dict = {} - - async def get_model_by_name(self, name: str) -> entities.LLMModelInfo: - """通过名称获取模型 - """ - for model in self.model_list: - if model.name == name: - return model - raise ValueError(f"无法确定模型 {name} 的信息,请在元数据中配置") async def initialize(self): self.requester_components = self.ap.discover.get_components_by_kind('LLMAPIRequester') @@ -92,9 +87,9 @@ class ModelManager: # load models for llm_model in llm_models: - await self.load_model(llm_model) + await self.load_llm_model(llm_model) - async def load_model(self, model_info: persistence_model.LLMModel | sqlalchemy.Row[persistence_model.LLMModel] | dict): + async def load_llm_model(self, model_info: persistence_model.LLMModel | sqlalchemy.Row[persistence_model.LLMModel] | dict): """加载模型""" if isinstance(model_info, sqlalchemy.Row): @@ -113,10 +108,24 @@ class ModelManager: config=model_info.requester_config ) ) - print(runtime_llm_model, runtime_llm_model.model_entity.name, "loaded") self.llm_models.append(runtime_llm_model) - async def remove_model(self, model_uuid: str): + async def get_model_by_name(self, name: str) -> entities.LLMModelInfo: # deprecated + """通过名称获取模型 + """ + for model in self.model_list: + if model.name == name: + return model + raise ValueError(f"无法确定模型 {name} 的信息,请在元数据中配置") + + async def get_model_by_uuid(self, uuid: str) -> entities.LLMModelInfo: + """通过uuid获取模型""" + for model in self.llm_models: + if model.model_entity.uuid == uuid: + return model + raise ValueError(f"model {uuid} not found") + + async def remove_llm_model(self, model_uuid: str): """移除模型""" for model in self.llm_models: if model.model_entity.uuid == model_uuid: @@ -136,3 +145,13 @@ class ModelManager: if component.metadata.name == name: return component.to_plain_dict() return None + + async def invoke_llm( + self, + query: core_entities.Query, + model_uuid: str, + messages: list[llm_entities.Message], + funcs: list[tools_entities.LLMFunction] = None, + ) -> llm_entities.Message: + pass +