LangChain 实战:Agent思维

假如你和我一样在准备24年的春招,在前端全栈外,再准备一些AIGC的内容是非常有必要的。24年是AI红利年,AIGC+各种岗位大厂机会会多些,同意的请点赞。也欢迎朋友们加我微信 shunwuyu, 一起交流。

前言

大模型是被训练出来的,它可以结合本地知识库,也可以调用搜索或在线API来增强自身的能力。这些都不是大模型内部的数据,我们称为外部工具。

当大模型需要通过自主判断调用外部工具来进一步完成任务时,LangChain给我们提供了Agent(代理)模块。

Agents

Agent是一个抽象概念,当LLM无法根据自身数据回复用户即将不得不正儿八经说假话时,Agent帮我们找来一个外部工具,解决之。除了代理的概念外,LangChain提供了一系列常用的Agent,比如我们在LangChain实战: 老喻干货店TextToSql一文学习到的create_sql_agent等。除了单个agent外,我们还可以同时使用多个agents,并且一个agent的输出可以做为另一个agent的输入。便于将复杂任务分步细致的解决好。

我们要把握agent,可以从以下几方面入手:

  • 大模型

大模型自身有些问题解决不了,求援于Agent调用外部工具解决。在Agents的工作过程中,LLM提供逻辑的引擎,负责生成预测和处理输入。

  • 外部Tools

接口调用、文件处理、搜索引擎等

  • 控制交互的代理

这是代理的管家,当有多个代理时,负责调度。如果我们要搞清楚,Agent是如何决定去本地知识库中搜索,或是调用哪一个外部工具,得到一个工具的输出后,怎么自主决定调用哪一个agent,我们需要停下来学习ReAct框架

ReAct思维框架

比如,老喻干货店,很多货品会随着很多情况的变化而改变售价,我们可以开发一款Agent来为货品智能定价。我们通过推理干货的价格,来理解Agent的底层思想。

我们可以在批发网上找到今天的干货成本价(行动),然后我们观察这个价格的高低(观察),来决定加价多少(思考),最后计算出一个售价(行动)。

哎, 一边写着代码, 一边挂念着山东的大蒜子....

我们平时也是边观察,边思考 ,再行动。观察和思考统称推理(Reasoning), 推理可以指导我们的行动(Acting)。React框架就来源于行动和推理的协同,它将人类学习新任务并做出决策或再推理的能力交给LLM借鉴。

大家可以来看下使用ReAct思维,帮助大模型找到胡椒瓶。

LangChainAgent类,对ReAct进行了封装和实现。自此,大模型获得了极大的自主性,除了基于内部知识可以进行对话聊天,还可以成为使用工具的智能代理。

干货定价Agent DEMO

我们要开发一个agent, 帮我们找到大蒜子的当前市场价格,并加价20%做出销售价格

  • 安装依赖
diff 复制代码
!pip install langchain
!pip install openai
!pip intall google-search-results

这里我们使用了SerpAPI,它是等下Agent需要的Google搜索工具,找出大蒜子的价格。

  • 配置OpenAI和SerpAPI的api_key
lua 复制代码
import os
os.environ["OPENAI_API_KEY"]='Your OpenAI API KEY'
os.environ["SERPAPI_API_KEY"]='our SerpAPI API Key'
  • 导入库
python 复制代码
# 加载工具
from langchain.agents import load_tools
# 初始agent 工具
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI
  • 实例化llm, 加载工具, 生成agent
ini 复制代码
llm = OpenAI(temperature=0)
# serpapi 负责搜索,llm-math 负责计算20%
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# ZERO_SHOT_REACT_DESCRIPTION 的意思是使用react思维框架、不使用样本
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
  • 执行并拿到结果
arduino 复制代码
agent.run("目前市场上大蒜子的平均价格是多少?如果我在此基础上加价20%卖出,应该如何定价?")

大模型根据ReAct框架,开始了推理和行动:

vbnet 复制代码
> Entering new  chain...
 I need to find the current market price of garlic and then calculate the new price with a 20% markup.
Action: Search
Action Input: "Average price of garlic"
Observation: According to the study, the average price for garlic in Shandong is 4.2. 
Thought: I need to calculate the new price with a 20% markup.
Action: Calculator
Action Input: 4.2 * 1.2
Observation: Answer: 
Thought: I now know the final answer.
Final Answer: The new price with a 20% markup would be 5.04.
> Finished chain.

总结

  • 驱动Agent工作的是ReAct思想框架

参考资料

相关推荐
昨夜见军贴06163 分钟前
IACheck AI审核在生产型企业质量控制记录中的实践探索——全面赋能有关物质研究合规升级
大数据·人工智能
智星云算力21 分钟前
智星云镜像共享全流程指南,附避坑手册(新手必看)
人工智能
盖雅工场23 分钟前
驱动千店销售转化提升10%:3C零售门店的人效优化实战方案
大数据·人工智能·零售·数字化管理·智能排班·零售排班
Loo国昌30 分钟前
深入理解 FastAPI:Python高性能API框架的完整指南
开发语言·人工智能·后端·python·langchain·fastapi
发哥来了32 分钟前
【AI视频创作】【评测】【核心能力与成本效益】
大数据·人工智能
醉舞经阁半卷书11 小时前
Python机器学习常用库快速精通
人工智能·python·深度学习·机器学习·数据挖掘·数据分析·scikit-learn
产品何同学2 小时前
在线问诊医疗APP如何设计?2套原型拆解与AI生成原型图实战
人工智能·产品经理·健康医疗·在线问诊·app原型·ai生成原型图·医疗app
星爷AG I2 小时前
9-14 知觉整合(AGI基础理论)
人工智能·agi
开源技术2 小时前
Violit: Streamlit杀手,无需全局刷新,构建AI面板
人工智能·python
递归尽头是星辰2 小时前
大模型与向量检索的融合:从核心原理到 Spring AI 落地
人工智能·大模型·向量检索·rag·spring ai·向量库