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.chatsession import AIChatSession
from .agent.agent import AIAgent,AIAgentTemplete, BaseAIAgent
from .agent.agent import AIAgent, BaseAIAgent
from .agent.role import AIRole,AIRoleGroup
from .agent.workflow import Workflow
from .agent.agent_memory import AgentMemory
-39
View File
@@ -31,29 +31,6 @@ from ..proto.compute_task import LLMPrompt,LLMResult
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):
def __init__(self) -> None:
@@ -81,19 +58,6 @@ class AIAgent(BaseAIAgent):
self.history_len = 10
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.memory_db = None
self.unread_msg = Queue() # msg from other agent
@@ -178,9 +142,6 @@ class AIAgent(BaseAIAgent):
return self.template_id
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
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 ..knowledge import ObjectID
from ..storage.storage import AIStorage
from .compute_node import ComputeNode
@@ -122,12 +123,13 @@ class ComputeKernel:
def llm_num_tokens(prompt: LLMPrompt, model_name: str = None) -> int:
return ComputeKernel.llm_num_tokens_from_text(prompt.as_str(), model_name)
# 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
# then task_schedule would run this task.(might schedule some work_task to another host)
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)
return task_req
+3 -3
View File
@@ -287,9 +287,9 @@ class ComputeTask:
self.callchain_id = callchain_id
self.params["prompts"] = prompts.to_message_list()
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"] = model_name
self.params["model_name"] = AIStorage.get_instance().get_user_config().llm_get_real_model_name(model_name)
if max_token_size is None:
self.params["max_token_size"] = 4000
else:
+21 -1
View File
@@ -40,7 +40,10 @@ class UserConfig:
self.config_table = {}
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:
if self.config_table.get(key) is not None:
@@ -52,6 +55,23 @@ class UserConfig:
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:
if self.config_table.get(key) is not None:
logger.warning("user config key %s already exist, will be overrided",key)
+2 -9
View File
@@ -6,7 +6,7 @@ import sys
import runpy
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__)
@@ -82,12 +82,6 @@ class AgentManager:
def remove(self,agent_id:str)->int:
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:
installer = self.agent_templete_env.get_installer()
return installer.install(templete_id)
@@ -95,8 +89,7 @@ class AgentManager:
def uninstall(self,templete_id) -> int:
pass
async def _load_templete_from_media(self,templete_media:PackageMediaInfo) -> AIAgentTemplete:
pass
async def _load_agent_from_media(self,agent_media:PackageMediaInfo) -> BaseAIAgent:
reader = self.agent_env._create_media_loader(agent_media)
-1
View File
@@ -1 +0,0 @@
# might implement by Rust in the future