AI Agent 是能够:
class AIAgent: def __init__(self, name, role, goal): self.name = name self.role = role self.goal = goal self.memory = [] self.tools = [] def perceive(self, observation): """感知环境""" pass def decide(self): """决策:选择下一步行动""" pass def act(self, action): """执行行动""" pass def learn(self, experience): """学习和改进""" pass
推理+行动循环:
class ReActAgent: def __init__(self, llm, tools): self.llm = llm self.tools = tools self.memory = [] def run(self, task): while not self.is_completed(task): # Thought: 推理 thought = self.llm.generate( f"Task: {task}\nMemory: {self.memory}\nThought:" ) # Action: 行动 if "Search" in thought: action = self.tools["search"].run(thought) elif "Calculator" in thought: action = self.tools["calculator"].run(thought) else: action = "Finish" # Observation: 观察 observation = self.execute(action) # 更新记忆 self.memory.append((thought, action, observation))
短期记忆:
class ShortTermMemory: def __init__(self, max_items=10): self.memory = deque(maxlen=max_items) def add(self, item): self.memory.append(item) def get_recent(self, n=5): return list(self.memory)[-n:]
长期记忆:
class LongTermMemory: def __init__(self, vector_store): self.vector_store = vector_store def add(self, document, metadata): embedding = self.embed(document) self.vector_store.add(embedding, metadata) def search(self, query, top_k=5): embedding = self.embed(query) return self.vector_store.search(embedding, top_k=top_k)
class ToolUse: def __init__(self): self.tools = { "search": WebSearchTool(), "calculator": CalculatorTool(), "code_interpreter": CodeInterpreterTool() } def use_tool(self, tool_name, input_data): if tool_name in self.tools: return self.tools[tool_name].run(input_data) else: raise ValueError(f"Unknown tool: {tool_name}")
class SequentialCollaboration: def __init__(self, agents): self.agents = agents def execute(self, task): result = task for agent in self.agents: result = agent.run(result) return result
class ParallelCollaboration: def __init__(self, agents): self.agents = agents def execute(self, task): import concurrent.futures with concurrent.futures.ThreadPoolExecutor() as executor: futures = { executor.submit(agent.run, task): agent for agent in self.agents } results = {} for future, agent in futures.items(): results[agent.name] = future.result() return self.aggregate(results)
class HierarchicalAgents: def __init__(self): self.coordinator = CoordinatorAgent() self.workers = [ ResearchAgent(), WriterAgent(), AnalystAgent() ] def execute(self, task): # 协调者分解任务 subtasks = self.coordinator.decompose(task) # 分配给工作智能体 results = {} for subtask, worker in zip(subtasks, self.workers): results[subtask] = worker.run(subtask) # 协调者聚合结果 return self.coordinator.aggregate(results)
class AgentCommunication: def __init__(self): self.message_queue = [] def send_message(self, from_agent, to_agent, message): self.message_queue.append({ 'from': from_agent, 'to': to_agent, 'message': message, 'timestamp': time.time() }) def receive_messages(self, agent): return [ msg for msg in self.message_queue if msg['to'] == agent ]
class SoftwareDevTeam: def __init__(self): self.product_manager = ProductOwner() self.architect = Architect() self.developer = Developer() self.tester = QAEngineer() def develop_feature(self, feature_description): # 产品经理定义需求 requirements = self.product_manager.define(feature_description) # 架构师设计系统 design = self.architect.design(requirements) # 开发者实现 code = self.developer.implement(design) # 测试工程师测试 test_results = self.tester.test(code) return { 'requirements': requirements, 'design': design, 'code': code, 'test_results': test_results }
class ResearchTeam: def __init__(self): self.literature_reviewer = LiteratureReviewer() self.experiment_designer = ExperimentDesigner() self.data_analyst = DataAnalyst() self.report_writer = ReportWriter() def conduct_research(self, topic): # 文献综述 literature = self.literature_reviewer.review(topic) # 设计实验 experiment = self.experiment_designer.design(literature) # 分析数据 results = self.data_analyst.analyze(experiment) # 撰写报告 report = self.report_writer.write(results) return report
class CustomerSupportTeam: def __init__(self): self.triage_agent = TriageAgent() self.technical_agent = TechnicalSupportAgent() self.billing_agent = BillingAgent() self.escalation_agent = EscalationAgent() def handle_ticket(self, ticket): # 分诊 category = self.triage_agent.classify(ticket) # 路由到专门的智能体 if category == 'technical': response = self.technical_agent.solve(ticket) elif category == 'billing': response = self.billing_agent.handle(ticket) else: response = self.escalation_agent.escalate(ticket) return response
from langgraph.graph import StateGraph, END class AgentState(TypedDict): task: str current_step: str result: str messages: List[str] # 创建工作流 workflow = StateGraph(AgentState) # 添加节点 workflow.add_node("researcher", research_node) workflow.add_node("writer", write_node) workflow.add_node("editor", edit_node) workflow.add_node("publisher", publish_node) # 添加边 workflow.add_edge("researcher", "writer") workflow.add_edge("writer", "editor") workflow.add_edge("editor", "publisher") workflow.add_edge("publisher", END) # 设置入口 workflow.set_entry_point("researcher")
from crewai import Agent, Task, Crew # 定义智能体 researcher = Agent( role='研究员', goal='收集和整理信息', backstory='你是一位经验丰富的研究专家', tools=[search_tool] ) writer = Agent( role='作家', goal='撰写高质量文章', backstory='你是一位专业的技术作家', tools=[file_tool] ) # 定义任务 research_task = Task( description='研究 AI Agent 的最新发展', agent=researcher ) write_task = Task( description='基于研究结果撰写技术文章', agent=writer ) # 组建团队 crew = Crew( agents=[researcher, writer], tasks=[research_task, write_task], verbose=True ) # 执行 result = crew.kickoff()
# ✅ 好的角色定义 agent = Agent( role='Python 开发者', goal='编写高质量的 Python 代码', backstory='你是一位有 10 年经验的 Python 开发者,擅长编写清晰、高效的代码', tools=[python_tool, documentation_tool] )
# ❌ 不好的任务描述 task = Task( description='写个程序' ) # ✅ 好的任务描述 task = Task( description='编写一个 Python 脚本,使用 pandas 读取 CSV 文件,计算平均值、中位数、标准差,并生成可视化图表' )
# 为智能体选择合适的工具 developer_agent.tools = [ CodeInterpreterTool(), DocumentationTool(), GitHubTool() ] analyst_agent.tools = [ PythonREPLTool(), PandasTool(), MatplotlibTool() ]
AI Agent 系统设计要点:
从简单开始,逐步构建复杂的智能体系统!