|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2026-3-9 11:21 编辑
1. 什么是Agent?
智能体(Agent)是一种能够自主规划、决策、执行任务的组件,核心是让大语言模型(LLM)根据任务需求,选择并调用工具,完成单靠模型自身无法解决的复杂问题。
Agent智能体=大语言模型(大脑)+工具集(手脚)决策逻辑(思维)
核心特点:
目标驱动:围绕用户的具体任务目标展开工作。
工具调用能力:能连接外部工具,弥补 LLM 的局限性。
自主决策与迭代:不需要人工干预,能根据工具返回的结果,判断是否需要继续调用工具,或直接生成最终答案。
2. 代码实战体验
- from langchain.agents import create_tool_calling_agent, AgentExecutor
- from langchain_community.chat_models.tongyi import ChatTongyi
- from langchain_core.tools import tool
- from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
- # 1. 定义工具
- @tool(description="查询天气")
- def get_weather() -> str:
- return "晴天"
- # 2. 初始化大模型
- llm = ChatTongyi(model="qwen-max")
- # 3. 定义 Prompt (必须包含 agent_scratchpad)
- prompt = ChatPromptTemplate.from_messages([
- ("system", "你是一个聊天助手,可以回答用户问题。"),
- ("human", "{input}"),
- # 注意:这里是占位符,用于存储 Agent 的思考过程和工具调用历史
- MessagesPlaceholder(variable_name="agent_scratchpad"),
- ])
- # 4. 创建 Agent
- agent = create_tool_calling_agent(
- llm=llm,
- tools=[get_weather],
- prompt=prompt
- )
- # 5. 创建执行器 (AgentExecutor 才是真正运行的入口)
- agent_executor = AgentExecutor(
- agent=agent,
- tools=[get_weather],
- verbose=True # 打开详细日志,方便看思考过程
- )
- # 6. 执行调用
- res = agent_executor.invoke({"input": "明天深圳的天气如何?"})
- print("最终回答:", res["output"])
复制代码
4. 流式输出
- # In[1]
- from langchain.agents import create_tool_calling_agent, AgentExecutor
- from langchain_openai import ChatOpenAI
- from langchain_core.tools import tool
- from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
- # ================= 1. 定义工具 =================
- @tool(description="获取股价,传入股票名称,返回字符串信息")
- def get_price(name: str) -> str:
- return f"股票{name}的价格是20元"
- @tool(description="获取股票信息,传入股票名称,返回字符串信息")
- def get_info(name: str) -> str:
- return f"股票{name},是一家A股上市公司,专注于IT职业教育。"
- # ================= 2. 初始化模型 =================
- llm = ChatOpenAI(
- model="qwen3-max",
- temperature=0,
- openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1"
- )
- # ================= 3. 标准 Agent 流程 =================
- prompt = ChatPromptTemplate.from_messages([
- ("system", "你是一个智能助手,可以回答股票相关问题,请告知我思考过程。"),
- ("human", "{input}"),
- MessagesPlaceholder(variable_name="agent_scratchpad"),
- ])
- agent = create_tool_calling_agent(llm=llm, tools=[get_price, get_info], prompt=prompt)
- agent_executor = AgentExecutor(agent=agent, tools=[get_price, get_info], verbose=False)
- # ================= 4. 【核心修改】流式输出 =================
- print("--- 开始流式对话 ---\n")
- for chunk in agent_executor.stream({"input": "传智教育股价多少,并介绍一下"}):
- # 1. 当 Agent 决定要调用工具时
- if "actions" in chunk:
- for action in chunk["actions"]:
- print(f"🤔 我需要查询信息,正在调用工具:【{action.tool}】")
- print(f" 📥 传入参数:{action.tool_input}\n")
- # 2. 当工具返回结果时
- elif "steps" in chunk:
- for step in chunk["steps"]:
- print(f" 📤 工具查询完毕,得到结果:{step.observation}\n")
- # 3. 当 Agent 输出最终回答时
- elif "output" in chunk:
- print(f"✅ 最终回答:{chunk['output']}")
复制代码
|
|