Support llm model name link.

1. default
2. plan_llm
3. outline_llm
4. swift_llm
This commit is contained in:
Liu Zhicong
2024-04-23 09:26:44 -07:00
parent 51998d841a
commit 7b128c06c2
7 changed files with 31 additions and 56 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ from .proto.agent_task import *
from .agent.agent_base import * from .agent.agent_base import *
from .agent.chatsession import AIChatSession from .agent.chatsession import AIChatSession
from .agent.agent import AIAgent,AIAgentTemplete, BaseAIAgent from .agent.agent import AIAgent, BaseAIAgent
from .agent.role import AIRole,AIRoleGroup from .agent.role import AIRole,AIRoleGroup
from .agent.workflow import Workflow from .agent.workflow import Workflow
from .agent.agent_memory import AgentMemory from .agent.agent_memory import AgentMemory
-39
View File
@@ -31,29 +31,6 @@ from ..proto.compute_task import LLMPrompt,LLMResult
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class AIAgentTemplete:
def __init__(self) -> None:
self.llm_model_name:str = "gpt-4-turbo-preview"
self.max_token_size:int = 0
self.template_id:str = None
self.introduce:str = None
self.author:str = None
self.prompt:LLMPrompt = None
def load_from_config(self,config:dict) -> bool:
if config.get("llm_model_name") is not None:
self.llm_model_name = config["llm_model_name"]
if config.get("max_token_size") is not None:
self.max_token_size = config["max_token_size"]
if config.get("template_id") is not None:
self.template_id = config["template_id"]
if config.get("prompt") is not None:
self.prompt = LLMPrompt()
if self.prompt.load_from_config(config["prompt"]) is False:
logger.error("load prompt from config failed!")
return False
class AIAgent(BaseAIAgent): class AIAgent(BaseAIAgent):
def __init__(self) -> None: def __init__(self) -> None:
@@ -81,19 +58,6 @@ class AIAgent(BaseAIAgent):
self.history_len = 10 self.history_len = 10
self.read_report_prompt = None self.read_report_prompt = None
todo_prompts = {}
todo_prompts[TodoListType.TO_WORK] = {
"do": None,
"check": None,
"review": None,
}
todo_prompts[TodoListType.TO_LEARN] = {
"do": None,
"check": None,
"review": None,
}
self.todo_prompts = todo_prompts
self.base_dir = None self.base_dir = None
#self.memory_db = None #self.memory_db = None
self.unread_msg = Queue() # msg from other agent self.unread_msg = Queue() # msg from other agent
@@ -178,9 +142,6 @@ class AIAgent(BaseAIAgent):
return self.template_id return self.template_id
def get_llm_model_name(self) -> str: def get_llm_model_name(self) -> str:
if self.llm_model_name is None:
return AIStorage.get_instance().get_user_config().get_value("llm_model_name")
return self.llm_model_name return self.llm_model_name
def get_max_token_size(self) -> int: def get_max_token_size(self) -> int:
+4 -2
View File
@@ -8,6 +8,7 @@ from asyncio import Queue
from ..proto.compute_task import * from ..proto.compute_task import *
from ..knowledge import ObjectID from ..knowledge import ObjectID
from ..storage.storage import AIStorage
from .compute_node import ComputeNode from .compute_node import ComputeNode
@@ -122,12 +123,13 @@ class ComputeKernel:
def llm_num_tokens(prompt: LLMPrompt, model_name: str = None) -> int: def llm_num_tokens(prompt: LLMPrompt, model_name: str = None) -> int:
return ComputeKernel.llm_num_tokens_from_text(prompt.as_str(), model_name) return ComputeKernel.llm_num_tokens_from_text(prompt.as_str(), model_name)
# friendly interface for use: # friendly interface for use:
def llm_completion(self, prompt: LLMPrompt, resp_mode:str="text",mode_name: Optional[str] = None, max_token: int = 0,inner_functions = None): def llm_completion(self, prompt: LLMPrompt, resp_mode:str="text",model_name: Optional[str] = None, max_token: int = 0,inner_functions = None):
# craete a llm_work_task ,push on queue's end # craete a llm_work_task ,push on queue's end
# then task_schedule would run this task.(might schedule some work_task to another host) # then task_schedule would run this task.(might schedule some work_task to another host)
task_req = ComputeTask() task_req = ComputeTask()
task_req.set_llm_params(prompt,resp_mode,mode_name, max_token,inner_functions) task_req.set_llm_params(prompt,resp_mode,model_name, max_token,inner_functions)
self.run(task_req) self.run(task_req)
return task_req return task_req
+3 -3
View File
@@ -287,9 +287,9 @@ class ComputeTask:
self.callchain_id = callchain_id self.callchain_id = callchain_id
self.params["prompts"] = prompts.to_message_list() self.params["prompts"] = prompts.to_message_list()
self.params["resp_mode"] = resp_mode self.params["resp_mode"] = resp_mode
if model_name is None:
model_name = AIStorage.get_instance().get_user_config().get_value("llm_model_name") self.params["model_name"] = AIStorage.get_instance().get_user_config().llm_get_real_model_name(model_name)
self.params["model_name"] = model_name
if max_token_size is None: if max_token_size is None:
self.params["max_token_size"] = 4000 self.params["max_token_size"] = 4000
else: else:
+21 -1
View File
@@ -40,7 +40,10 @@ class UserConfig:
self.config_table = {} self.config_table = {}
self.user_config_path:str = None self.user_config_path:str = None
self._init_default_value("llm_model_name","gpt-4-turbo-preview") self._init_default_value("llm_default_model","gpt-4-turbo")
self._init_default_value("llm_plan_model","gpt-4-turbo")
self._init_default_value("llm_outline_model","gpt-3.5-turbo")
self._init_default_value("llm_swift_model","gpt-3.5-turbo")
def _init_default_value(self,key:str,value:Any) -> None: def _init_default_value(self,key:str,value:Any) -> None:
if self.config_table.get(key) is not None: if self.config_table.get(key) is not None:
@@ -52,6 +55,23 @@ class UserConfig:
self.config_table[key] = new_config_item self.config_table[key] = new_config_item
def llm_get_real_model_name(self,mode_name:str) -> str:
default_model_name = self.get_value("llm_default_model")
plan_llm_model_name = self.get_value("llm_plan_model")
outline_model_name = self.get_value("llm_outline_model")
swift_model_name = self.get_value("llm_swift_model")
if mode_name is None:
return default_model_name
if mode_name == "default":
return default_model_name
if mode_name == "plan_llm":
return plan_llm_model_name
if mode_name == "outline_llm":
return outline_model_name
if mode_name == "swift_llm":
return swift_model_name
return mode_name
def add_user_config(self,key:str,desc:str,is_optional:bool,default_value:Any=None,item_type="str") -> None: def add_user_config(self,key:str,desc:str,is_optional:bool,default_value:Any=None,item_type="str") -> None:
if self.config_table.get(key) is not None: if self.config_table.get(key) is not None:
logger.warning("user config key %s already exist, will be overrided",key) logger.warning("user config key %s already exist, will be overrided",key)
+2 -9
View File
@@ -6,7 +6,7 @@ import sys
import runpy import runpy
from typing import Any, Callable, Dict, List, Optional, Union from typing import Any, Callable, Dict, List, Optional, Union
from aios import AIAgent,AIAgentTemplete,AIStorage,BaseAIAgent,PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask,WorkspaceEnvironment from aios import AIAgent,AIStorage,BaseAIAgent,PackageEnv,PackageEnvManager,PackageMediaInfo,PackageInstallTask,WorkspaceEnvironment
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -82,12 +82,6 @@ class AgentManager:
def remove(self,agent_id:str)->int: def remove(self,agent_id:str)->int:
pass pass
async def get_templete(self,templete_id) -> AIAgentTemplete:
template_media_info = self.agent_templete_env.get(templete_id)
if template_media_info is None:
return None
return self._load_templete_from_media(template_media_info)
def install(self,templete_id) -> PackageInstallTask: def install(self,templete_id) -> PackageInstallTask:
installer = self.agent_templete_env.get_installer() installer = self.agent_templete_env.get_installer()
return installer.install(templete_id) return installer.install(templete_id)
@@ -95,8 +89,7 @@ class AgentManager:
def uninstall(self,templete_id) -> int: def uninstall(self,templete_id) -> int:
pass pass
async def _load_templete_from_media(self,templete_media:PackageMediaInfo) -> AIAgentTemplete:
pass
async def _load_agent_from_media(self,agent_media:PackageMediaInfo) -> BaseAIAgent: async def _load_agent_from_media(self,agent_media:PackageMediaInfo) -> BaseAIAgent:
reader = self.agent_env._create_media_loader(agent_media) reader = self.agent_env._create_media_loader(agent_media)
-1
View File
@@ -1 +0,0 @@
# might implement by Rust in the future