# create_agents.py import requests import urllib3 from uuid import uuid4 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) BASE_URL = "http://192.168.0.46:22000" AGENT_API = f"{BASE_URL}/api/v1/agents/" HEADERS = { "Accept": "application/json", "Content-Type": "application/json", } TIMEOUT = 10 OUTPUT_FILE = "agent_ids.txt" AGENT_META = { str(uuid4()): { "icon_index": 1, "name": "修理工程管理", "description": "对舰船修理工程实施全过程管理,包括任务分解、进度控制、工序协调和资源调配。", "prompt": "助理员您好,我是修理工程管理助手,我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。我可以为您提供舰船设备的标准修理内容范围、作业工序清单以及安全施工要求,请直接告诉我您需要查询的设备名称。", "default_query": [ {"title": "查询设备标准 →", "content": "查询设备标准"}, {"title": "查看作业工序 →", "content": "查看作业工序"} ], }, str(uuid4()): { "icon_index": 2, "name": "器材统计与分析", "description": "对舰船维修保障过程中涉及的器材进行统计分析与趋势研判。", "prompt": "助理员您好,我是器材统计与分析助手。我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。为您提供多维度的器材消耗统计与库存分析服务。请告诉我您需要统计的具体业务场景。", "default_query": [ {"title": "统计第一季度器材消耗 →", "content": "统计第一季度器材消耗"}, {"title": "分析当前库存周转率 →", "content": "分析当前库存周转率"}, {"title": "查看特定型号历史记录 →", "content": "查看特定型号历史记录"} ], }, str(uuid4()): { "icon_index": 3, "name": "修理法规知识查询", "description": "提供舰船修理相关法规、标准和制度的查询与解读。", "prompt": "您好!我是修理法规知识查询助手。我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。请告诉我需要查询的主题。", "default_query": [ {"title": "查询焊接工艺规程 →", "content": "查询焊接工艺规程"}, {"title": "查看设备拆装安全规程 →", "content": "查看设备拆装安全规程"}, {"title": "搜索环保作业规定 →", "content": "搜索环保作业规定"} ], }, str(uuid4()): { "icon_index": 4, "name": "船舰知识查询", "description": "提供舰船结构、系统组成与功能原理等知识。", "prompt": "您好!我是舰船知识查询助手。我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。请告诉我需要了解的主题。", "default_query": [ {"title": "了解舰船电力系统组成 →", "content": "了解舰船电力系统组成"}, {"title": "查询舰船推进装置类型 →", "content": "查询舰船推进装置类型"}, {"title": "搜索舰船雷达系统原理 →", "content": "搜索舰船雷达系统原理"} ], }, str(uuid4()): { "icon_index": 5, "name": "故障排查与修理", "description": "辅助进行舰船设备故障分析、原因定位与修理方案制定。", "prompt": "您好!我是智能故障排查与修理助手。我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。提供舷号、设备名称和故障现象,我可以协助您进行复杂故障的研判诊断。", "default_query": [ {"title": "多模态输出与校验 →", "content": "多模态输出与校验"}, {"title": "诊断研判与可能性排序 →", "content": "诊断研判与可能性排序"}, {"title": "GT-25000燃气轮机的日常维护保养方案 →", "content": "GT-25000燃气轮机的日常维护保养方案"} ], }, str(uuid4()): { "icon_index": 6, "name": "舰船机电知识", "description": "提供舰船动力、电气、液压等机电系统相关知识。", "prompt": "机电长您好,我是舰船机电知识查询助手。我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。请告诉我需了解的主题。", "default_query": [ {"title": "了解主推进系统构成 →", "content": "了解主推进系统构成"}, {"title": "查看舰艇液压机参数 →", "content": "查看舰艇液压机参数"}, {"title": "查看舰机液压系统参数 →", "content": "查看舰机液压系统参数"} ], }, str(uuid4()): { "icon_index": 7, "name": "现场维修作业向导", "description": "为一线维修人员提供现场操作流程与安全指导。", "prompt": "您好!我是现场维修作业向导。我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。您可以询问具体的维修步骤、拆装工艺或查询安全操作规程。", "default_query": [ {"title": "离心泵汽蚀的典型特征 →", "content": "离心泵汽蚀的典型特征"}, {"title": "海水泵汽蚀的维修步骤 →", "content": "海水泵汽蚀的维修步骤"}, {"title": "GT-25000燃气轮机的日常维护步骤 →", "content": "GT-25000燃气轮机的日常维护步骤"} ], }, str(uuid4()): { "icon_index": 8, "name": "舰船技术知识百科", "description": "综合性舰船技术知识库。", "prompt": "您好,我是舰船技术知识百科助手。我已经绑定了技术资料、通用知识、故障知识、法规标准知识库。请告诉我您需要查询的技术主题。", "default_query": [ {"title": "了解船体高强钢性能 →", "content": "了解船体高强钢性能"}, {"title": "查询焊接工艺评定标准 →", "content": "查询焊接工艺评定标准"}, {"title": "查看防腐涂装技术规范 →", "content": "查看防腐涂装技术规范"} ], }, } def build_agent_json(agent_id: str) -> dict: meta = AGENT_META[agent_id] return { "id": agent_id, "name": meta["name"], "description": meta["description"], "prompt": meta["prompt"], "background": "string", "access_control": {}, "default_query": meta["default_query"], } def create_agent(agent_id: str) -> bool: resp = requests.post( AGENT_API, headers=HEADERS, json=build_agent_json(agent_id), verify=False, timeout=TIMEOUT, ) print(resp.json()) print(f"[CREATE] {agent_id} -> {resp.status_code}") return resp.status_code in (200, 201, 409) def main(): created_ids = [] for agent_id in AGENT_META.keys(): if create_agent(agent_id): created_ids.append(agent_id) with open(OUTPUT_FILE, "w", encoding="utf-8") as f: for aid in created_ids: f.write(aid + "\n") print(f"\n✅ 已写入 {len(created_ids)} 个 Agent UUID 到 {OUTPUT_FILE}") if __name__ == "__main__": main() # import requests # import urllib3 # from uuid import uuid4 # from typing import List, Tuple # # ========================= # # 0. 关闭 HTTPS 警告(开发环境) # # ========================= # urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # # ========================= # # 1. 基础配置 # # ========================= # BASE_URL = "https://devb.zdht.hjkl01.cn:65432" # AGENT_API = f"{BASE_URL}/api/v1/agents/" # ROLE_BIND_API = f"{BASE_URL}/api/v1/agent-roles/association" # HEADERS = { # "Accept": "application/json", # "Content-Type": "application/json", # } # TIMEOUT = 10 # # ========================= # # 2. 角色 ID(数据库真实存在) # # ========================= # AGENT_ROLE_1 = "2" # 助理员助手 (1-4) # AGENT_ROLE_2 = "3" # 机电长助手 (5-6) # AGENT_ROLE_3 = "4" # 维修员助手 (7-8) # ROLE_NAME_MAP = { # AGENT_ROLE_1: "助理员助手", # AGENT_ROLE_2: "机电长助手", # AGENT_ROLE_3: "维修员助手", # } # # ========================= # # 3. Agent 元数据 # # ========================= # AGENT_META = { # str(uuid4()): { # "icon_index": 1, # "name": "修理工程管理", # "description": "对舰船修理工程实施全过程管理,包括任务分解、进度控制、工序协调和资源调配。", # "prompt": "您好!我是一名舰船修理工程管理专家。", # }, # str(uuid4()): { # "icon_index": 2, # "name": "器材统计与分析", # "description": "对舰船维修保障过程中涉及的器材进行统计分析与趋势研判。", # "prompt": "您好!我是一名舰船器材统计与分析专家。", # }, # str(uuid4()): { # "icon_index": 3, # "name": "修理法规知识查询", # "description": "提供舰船修理相关法规、标准和制度的查询与解读。", # "prompt": "您好!我是一名舰船修理法规专家。", # }, # str(uuid4()): { # "icon_index": 4, # "name": "船舰知识查询", # "description": "提供舰船结构、系统组成与功能原理等知识。", # "prompt": "您好!我是一名舰船专业知识顾问。", # }, # str(uuid4()): { # "icon_index": 5, # "name": "故障排查与修理", # "description": "辅助进行舰船设备故障分析、原因定位与修理方案制定。", # "prompt": "您好!我是一名舰船设备故障诊断专家。", # }, # str(uuid4()): { # "icon_index": 6, # "name": "舰船机电知识", # "description": "提供舰船动力、电气、液压等机电系统相关知识。", # "prompt": "您好!我是一名舰船机电系统专家。", # }, # str(uuid4()): { # "icon_index": 7, # "name": "现场维修作业向导", # "description": "为一线维修人员提供现场操作流程与安全指导。", # "prompt": "您好!我是一名现场维修作业向导。", # }, # str(uuid4()): { # "icon_index": 8, # "name": "舰船技术知识百科", # "description": "综合性舰船技术知识库。", # "prompt": "您好!我是一部舰船技术知识百科。", # }, # } # # ========================= # # 4. 构建 Agent JSON # # ========================= # def build_agent_json(agent_id: str) -> dict: # meta = AGENT_META[agent_id] # return { # "id": agent_id, # "name": meta["name"], # "description": meta["description"], # "prompt": meta["prompt"], # "background": "string", # "access_control": {}, # } # # ========================= # # 5. 创建 Agent # # ========================= # def create_agent(agent_id: str) -> bool: # resp = requests.post( # AGENT_API, # headers=HEADERS, # json=build_agent_json(agent_id), # verify=False, # timeout=TIMEOUT, # ) # print(f"[CREATE] Agent {agent_id} -> {resp.status_code}") # if resp.status_code in (200, 201, 409): # return True # print(" ↳ 返回值:", resp.text) # return False # # ========================= # # 6. 绑定 Agent 到角色 # # ========================= # def bind_agent_to_role(agent_id: str, role_id: str) -> bool: # payload = [ # { # "agent_id": agent_id, # "agent_role_id": role_id, # "is_active": True, # } # ] # resp = requests.post( # ROLE_BIND_API, # headers=HEADERS, # json=payload, # verify=False, # timeout=TIMEOUT, # ) # print( # f"[BIND] Agent {agent_id} -> Role {role_id} " # f"({ROLE_NAME_MAP.get(role_id)}) => {resp.status_code}" # ) # if resp.status_code in (200, 201): # return True # print(" ↳ 返回值:", resp.text) # return False # # ========================= # # 7. 主流程(先创建 → 再统一绑定) # # ========================= # def main(): # pending_bindings: List[Tuple[str, str]] = [] # print("=== 开始创建 Agent ===") # for agent_id, meta in AGENT_META.items(): # try: # if not create_agent(agent_id): # continue # idx = meta["icon_index"] # if 1 <= idx <= 4: # role_id = AGENT_ROLE_1 # elif 5 <= idx <= 6: # role_id = AGENT_ROLE_2 # elif 7 <= idx <= 8: # role_id = AGENT_ROLE_3 # else: # continue # pending_bindings.append((agent_id, role_id)) # except Exception as e: # print(f"[ERROR] Agent {agent_id} -> {e}") # print("\n=== 开始统一绑定角色 ===") # for agent_id, role_id in pending_bindings: # bind_agent_to_role(agent_id, role_id) # print("\n=== 全部完成 ===") # # ========================= # # 8. 入口 # # ========================= # if __name__ == "__main__": # main()