-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathB03_init_function_agents.py
More file actions
89 lines (74 loc) · 3.2 KB
/
B03_init_function_agents.py
File metadata and controls
89 lines (74 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# -*- encoding: utf-8 -*-
"""
@File: A02_function_agents.py
@Modify Time: 2026/1/11 16:28
@Author: Kevin-Chen
@Descriptions: 初始化多个功能型智能体
"""
import json
from concurrent.futures import ThreadPoolExecutor, as_completed
from B00_agent_config import *
print_lock = threading.Lock()
# 通用初始化智能代理
def init_agent(agent_name: str):
"""
初始化智能代理
参数:
agent_name (str): 智能代理的名称
返回:
tuple: 包含代理名称和会话ID的元组 (agent_name, session_id)
"""
log_file_path = f"{working_path}/agent_{agent_name}_{today_str}.log"
''' 1) 通用初始化1 --------------------------------------------------------------------------------- '''
# 执行第一个通用初始化步骤,创建新的会话
_, session_id = run_agent(agent_name, log_file_path, common_init_prompt_1,
init_yn=True, session_id=None)
''' 2) 通用初始化2 --------------------------------------------------------------------------------- '''
# 执行第二个通用初始化步骤,使用已创建的会话继续初始化
run_agent(agent_name, log_file_path, common_init_prompt_2,
init_yn=False, session_id=session_id)
return agent_name, session_id
# 个性化初始化智能代理
def custom_init_agent(agent_name, session_id, custom_agent_prompt):
"""
个性化初始化智能代理
:param agent_name: 智能体名称
:param session_id:
:param custom_agent_prompt:
:return:
"""
''' 个性化初始化 --------------------------------------------------------------------------------- '''
log_file_path = f"{working_path}/agent_{agent_name}_{today_str}.log"
# 根据代理名称获取个性化初始化提示,并执行个性化初始化
run_agent(agent_name, log_file_path, custom_agent_prompt,
init_yn=False, session_id=session_id)
return agent_name, session_id
def parse_director_response(massage, log_file, allowed_success_values=None):
try:
parsed = json.loads(massage)
except json.JSONDecodeError as exc:
with print_lock:
log_message(
log_file_path=log_file,
message=f"调度器返回非JSON,无法解析: {exc}\n原始返回:\n{massage}",
color=Colors.RED,
)
raise
try:
return normalize_director_payload(parsed, allowed_success_values=allowed_success_values)
except ValueError as exc:
with print_lock:
log_message(
log_file_path=log_file,
message=f"调度器返回JSON,但结构不合法: {exc}\n原始返回:\n{massage}",
color=Colors.RED,
)
raise
if __name__ == '__main__':
agent_session_id_dict = dict()
# 使用线程池并发初始化多个agent,将agent名称和对应的session ID存储到字典中
with ThreadPoolExecutor(max_workers=len(agent_names_list)) as executor:
futures = [executor.submit(init_agent, agent_name) for agent_name in agent_names_list]
for future in as_completed(futures):
a_name, s_id = future.result()
agent_session_id_dict[a_name] = s_id