什么是Agent智能体?
1- 查询输入:首先,我们将我们的问题发送给LLM。
2—与ReAct系统提示处理:LLM由ReAct系统提示驱动,使其能够思考问题以及如何回答问题。我们称之为一个”思考”。我们将在接下来的部分中更多地讨论这一点。
3- 外部函数执行:然后LLM选择并执行一个外部函数,比如在这种情况下,“get_website_response_time(URL).”。
4—响应生成:在获取实时数据之后,AI根据结果制作并传递一个回应。 这种思考、决策和行动的无缝整合反映了人类解决问题的过程,展示了AI如何可以绕过传统限制。
需要理解的概念:
AI代理/Agent智能体结构
AI代理/Agent智能体结构是一种模拟智能实体行为和决策的模型,通常用于人工智能领域中模拟自主系统或代理的行为。AI代理结构通常包括以下几个组成部分:
- 感知器(Perceptor):负责感知环境中的信息,包括环境中的物体、位置、状态等,并将这些信息传递给智能体的决策模块。
- 决策模块(Decision Module):根据感知到的信息和定义的目标,制定决策和选择行动方案。决策模块通常基于一定的算法和策略进行推理和选择,以实现智能体的目标。
- 行为执行器(Behavior Actuator):根据决策模块选择的行动方案,执行相应的行为和动作,以影响环境或与环境进行交互。行为执行器可以是物理设备(如机器人)或虚拟系统(如计算机程序)。
- 反馈系统(Feedback System):用于收集环境中的反馈信息,并将其反馈给感知器,以便进行自我学习和调整。反馈系统可以是基于物理反馈(如机器人的触觉)或基于计算机模拟的反馈(如通过仿真环境收集数据)。
- 知识库(Knowledge Base):存储有关环境、任务、规则和策略等知识,以便在决策过程中进行推理和利用。知识库可以基于规则、统计数据或学习算法进行构建和更新。
通过这些组成部分的协作和交互,AI代理能够模拟自主行为,并在与环境的交互中不断学习和适应,实现智能体的目标。AI代理结构是人工智能领域中重要的基础模型之一,广泛应用于机器人、自动化系统、游戏NPC等领域。
理解ReAct提示
ReAct提示是AI代理的核心。我们将看到它是如何在AI代理工作流程中运行的。
以下是黄佳老师的新书<动手做Agent>介绍的ReAct:
# 导入环境变量 from dotenv import load_dotenv load_dotenv() # 初始化大模型 from langchain_openai import ChatOpenAI llm = ChatOpenAI(model='gpt-4-turbo-preview', temperature=0.5) # 设置工具 from langchain.agents import load_tools tools = load_tools(["serpapi", "llm-math"], llm=llm) # 设置提示模板 from langchain.prompts import PromptTemplate template = (''' '尽你所能用中文回答以下问题。如果能力不够你可以使用以下工具:\n\n' '{tools}\n\n Use the following format:\n\n' 'Question: the input question you must answer\n' 'Thought: you should always think about what to do\n' 'Action: the action to take, should be one of [{tool_names}]\n' 'Action Input: the input to the action\n' 'Observation: the result of the action\n' '... (this Thought/Action/Action Input/Observation can repeat N times)\n' 'Thought: I now know the final answer\n' 'Final Answer: the final answer to the original input question\n\n' 'Begin!\n\n' 'Question: {input}\n' 'Thought:{agent_scratchpad}' ''' ) prompt = PromptTemplate.from_template(template) # 初始化Agent from langchain.agents import create_react_agent agent = create_react_agent(llm, tools, prompt) # 构建AgentExecutor from langchain.agents import AgentExecutor agent_executor = AgentExecutor(agent=agent, tools=tools, handle_parsing_errors=True, verbose=True) # 执行AgentExecutor agent_executor.invoke({"input": """目前市场上玫瑰花的一般进货价格是多少?\n 如果我在此基础上加价5%,应该如何定价?"""})