langchain学习之agent

系列文章目录

第一部分 langchain入门以及prompt、解析器使用

第二部分langchain学习之memory机制

第三部分langchain学习之chain机制



前言

LangChain 的代理(Agents)是一个强大的工具,可以将语言模型与外部工具结合起来,以便在处理复杂任务时提供更丰富的功能。


一、导入需要的库

有些库会更新,如用不了在langchain查找导入就行
# from langchain.agents.agent_toolkits import create_python_agent  # 移走了
# from langchain.tools.python.tool import PythonREPLTool           # 移走了
# from langchain.python import PythonREPL                          # 移走了
from langchain_experimental.agents.agent_toolkits import create_python_agent
from langchain_experimental.tools.python.tool import PythonREPLTool
from langchain.agents import load_tools, initialize_agent, AgentType
from langchain_experimental.utilities import PythonREPL
from langchain_wenxin.chat_models import ChatWenxin

二、准备模型

创建LLMChain的大模型,这里我们用的是文心大模型
WENXIN_APP_Key = "xxx"
WENXIN_APP_SECRET = "xxx"

model = ChatWenxin(
    temperature=0.9,
    model="ernie-bot-turbo",
    baidu_api_key = WENXIN_APP_Key,
    baidu_secret_key = WENXIN_APP_SECRET,
    verbose=True, # 
    )

三、使用网上的工具

这里使用llm-math和wikipedia维基百科,如果输入的语句没用到这两个工具可以加前缀使用xx工具来使用,或者直接使用大模型来识别。
!pip install -q wikipedia
#加载两个工具
tools = load_tools(['llm-math','wikipedia'],llm=model)agent = initialize_agent(
        tools,
        model,
        agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
        handle_parsing_errors=True,  #遇见了错误,传回model进行处理
        verbose=True
)
#数学
agent('what is the answer about 30 + 2')
#wikipedia维基百科
question = '能在wikipedia上看看中国的历史有多少年了'
res = agent(question)

四、代理写代码

使用PythonREPLTool可以实现写代码,或者直接使用大模型写。
agent = create_python_agent(
        model,
        tool=PythonREPLTool(),
        verbose=True
)
agent.run('写一个python代码,关于a=3,b=4,c=a+b的')

结果如图所示:
在这里插入图片描述

五、自定义写方法

使用@tool可以自定义,这里演示的是求当天日期。
#自定义
from langchain.agents import tool  #可以应用任何函数,将其转换成langchain使用的工具
from datetime import date

#代理也能把''信息看懂来识别这个函数干嘛的
@tool  
def time(text:str)-> str:
    '不用输入数据,返回当天日期'
    return str(date.today())

agent = initialize_agent(
        tools+[time],
        model,
        agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,
        handle_parsing_errors=True,  #遇见了错误,传回model进行处理
        verbose=True
)
agent.run('使用time工具,告诉我今天的日期')

结果如图所示:

在这里插入图片描述


总结

通过组合多个工具,代理可以处理更复杂的任务。例如,除了搜索工具,还可以定义计算、翻译等工具,代理可以根据查询自动选择和调用这些工具。
LangChain 代理是一个非常灵活和强大的工具,通过定义和组合不同的工具,可以处理多种复杂的任务。代理可以根据用户的输入自动选择和调用适当的工具,从而提供丰富的功能和更好的用户体验。

  • 35
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值