Agent是一个能够自主执行任务的AI系统,它具有以下特点: - 自主决策能力 - 环境感知能力 - 目标导向行为 - 持续学习能力 - 交互通信能力
pythonfrom langchain.memory import ConversationBufferMemory from langchain.memory.chat_message_histories import RedisChatMessageHistory # 短期记忆 short_term_memory = ConversationBufferMemory( memory_key="chat_history", return_messages=True ) # 长期记忆(使用Redis存储) long_term_memory = RedisChatMessageHistory( url="redis://localhost:6379/0", ttl=3600, # 1小时过期 session_id="user_123" )
pythonfrom langchain.vectorstores import Chroma from langchain.embeddings import OpenAIEmbeddings from langchain.text_splitter import RecursiveCharacterTextSplitter # 创建知识库 class KnowledgeBase: def __init__(self): self.embeddings = OpenAIEmbeddings() self.vectorstore = None def add_documents(self, documents): text_splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200 ) texts = text_splitter.split_documents(documents) self.vectorstore = Chroma.from_documents( texts, self.embeddings ) def query(self, question, k=4): return self.vectorstore.similarity_search(question, k=k)
pythonfrom langchain.agents import Tool, initialize_agent from langchain.agents import AgentType # 定义工具 class ToolSet: def __init__(self): self.tools = [ Tool( name="Calculator", func=self._calculator, description="用于执行数学计算" ), Tool( name="WebSearch", func=self._web_search, description="用于搜索网络信息" ), Tool( name="DatabaseQuery", func=self._query_database, description="用于查询数据库" ) ] def _calculator(self, expression): return eval(expression) def _web_search(self, query): # 实现网络搜索逻辑 pass def _query_database(self, query): # 实现数据库查询逻辑 pass
pythonfrom langchain.llms import OpenAI from langchain.chains import LLMChain from langchain.prompts import PromptTemplate class BaseAgent: def __init__(self): self.llm = OpenAI(temperature=0.7) self.memory = ConversationBufferMemory() self.knowledge_base = KnowledgeBase() self.tools = ToolSet().tools self.agent = initialize_agent( self.tools, self.llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, memory=self.memory, verbose=True ) def process(self, input_text): return self.agent.run(input_text)
pythonclass ExpertAgent(BaseAgent): def __init__(self, domain): super().__init__() self.domain = domain self.prompt_template = PromptTemplate( input_variables=["domain", "query"], template="作为{domain}专家,{query}" ) def process(self, input_text): prompt = self.prompt_template.format( domain=self.domain, query=input_text ) return super().process(prompt)
pythonclass AgentSystem: def __init__(self): self.agents = { "analyst": ExpertAgent("数据分析"), "programmer": ExpertAgent("编程"), "writer": ExpertAgent("写作") } self.coordinator = BaseAgent() def process_task(self, task): # 任务分配 agent_assignment = self.coordinator.process( f"将任务分配给合适的专家:{task}" ) # 执行任务 results = {} for agent_name, subtask in agent_assignment.items(): if agent_name in self.agents: results[agent_name] = self.agents[agent_name].process(subtask) # 整合结果 return self.coordinator.process(f"整合以下结果:{results}")
pythonclass CompetitiveAgentSystem: def __init__(self, num_agents=3): self.agents = [BaseAgent() for _ in range(num_agents)] def process_with_voting(self, task): # 收集所有agent的答案 responses = [agent.process(task) for agent in self.agents] # 实现投票机制 return self._vote_best_response(responses) def _vote_best_response(self, responses): # 实现投票逻辑 pass
pythonclass LearningAgent(BaseAgent): def __init__(self): super().__init__() self.experience_buffer = [] def process(self, input_text): result = super().process(input_text) self.experience_buffer.append({ "input": input_text, "output": result }) self._update_knowledge() return result def _update_knowledge(self): # 实现学习机制 pass
pythonfrom transformers import pipeline class EmpatheticAgent(BaseAgent): def __init__(self): super().__init__() self.sentiment_analyzer = pipeline("sentiment-analysis") def process(self, input_text): # 分析情感 sentiment = self.sentiment_analyzer(input_text)[0] # 根据情感调整响应 response = super().process( f"考虑到用户情感是{sentiment['label']},回应:{input_text}" ) return response
可扩展性设计
性能优化
资源管理
安全考虑