Support llm model name link.
1. default 2. plan_llm 3. outline_llm 4. swift_llm
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 +0,0 @@
|
||||
# might implement by Rust in the future
|
||||
Reference in New Issue
Block a user