97 lines
3.6 KiB
Python
97 lines
3.6 KiB
Python
"""Agent配置类,用于管理所有Agent相关的参数"""
|
||
|
||
from typing import Optional, List, Dict, Any
|
||
from pydantic import BaseModel, Field
|
||
from dataclasses import dataclass
|
||
|
||
|
||
@dataclass
|
||
class AgentConfig:
|
||
"""Agent配置类,包含创建和管理Agent所需的所有参数"""
|
||
|
||
# 基础参数
|
||
bot_id: str
|
||
api_key: Optional[str] = None
|
||
model_name: str = "qwen3-next"
|
||
model_server: Optional[str] = None
|
||
language: Optional[str] = "jp"
|
||
|
||
# 配置参数
|
||
system_prompt: Optional[str] = None
|
||
mcp_settings: Optional[List[Dict]] = None
|
||
robot_type: Optional[str] = "general_agent"
|
||
generate_cfg: Optional[Dict] = None
|
||
enable_thinking: bool = False
|
||
|
||
# 上下文参数
|
||
project_dir: Optional[str] = None
|
||
user_identifier: Optional[str] = None
|
||
session_id: Optional[str] = None
|
||
|
||
# 响应控制参数
|
||
stream: bool = False
|
||
tool_response: bool = True
|
||
preamble_text: Optional[str] = None
|
||
|
||
def to_dict(self) -> Dict[str, Any]:
|
||
"""转换为字典格式,用于传递给需要**kwargs的函数"""
|
||
return {
|
||
'bot_id': self.bot_id,
|
||
'api_key': self.api_key,
|
||
'model_name': self.model_name,
|
||
'model_server': self.model_server,
|
||
'language': self.language,
|
||
'system_prompt': self.system_prompt,
|
||
'mcp_settings': self.mcp_settings,
|
||
'robot_type': self.robot_type,
|
||
'generate_cfg': self.generate_cfg,
|
||
'enable_thinking': self.enable_thinking,
|
||
'project_dir': self.project_dir,
|
||
'user_identifier': self.user_identifier,
|
||
'session_id': self.session_id,
|
||
'stream': self.stream,
|
||
'tool_response': self.tool_response,
|
||
'preamble_text': self.preamble_text
|
||
}
|
||
|
||
@classmethod
|
||
def from_v1_request(cls, request, api_key: str, project_dir: Optional[str] = None, generate_cfg: Optional[Dict] = None):
|
||
"""从v1请求创建配置"""
|
||
return cls(
|
||
bot_id=request.bot_id,
|
||
api_key=api_key,
|
||
model_name=request.model,
|
||
model_server=request.model_server,
|
||
language=request.language,
|
||
system_prompt=request.system_prompt,
|
||
mcp_settings=request.mcp_settings,
|
||
robot_type=request.robot_type,
|
||
user_identifier=request.user_identifier,
|
||
session_id=request.session_id,
|
||
enable_thinking=request.enable_thinking,
|
||
project_dir=project_dir,
|
||
stream=request.stream,
|
||
tool_response=request.tool_response,
|
||
generate_cfg=generate_cfg
|
||
)
|
||
|
||
@classmethod
|
||
def from_v2_request(cls, request, bot_config: Dict, project_dir: Optional[str] = None):
|
||
"""从v2请求创建配置"""
|
||
return cls(
|
||
bot_id=request.bot_id,
|
||
api_key=bot_config.get("api_key"),
|
||
model_name=bot_config.get("model", "qwen/qwen3-next-80b-a3b-instruct"),
|
||
model_server=bot_config.get("model_server", ""),
|
||
language=request.language or bot_config.get("language", "zh"),
|
||
system_prompt=bot_config.get("system_prompt"),
|
||
mcp_settings=bot_config.get("mcp_settings", []),
|
||
robot_type=bot_config.get("robot_type", "general_agent"),
|
||
user_identifier=request.user_identifier,
|
||
session_id=request.session_id,
|
||
enable_thinking=request.enable_thinking,
|
||
project_dir=project_dir,
|
||
stream=request.stream,
|
||
tool_response=request.tool_response,
|
||
generate_cfg={} # v2接口不传递额外的generate_cfg
|
||
) |