浅谈LangChain Agent多参数工具链调用

admin 2024年8月5日22:53:35评论24 views字数 1853阅读6分10秒阅读模式

写在前面

最近在研究LangChain,简单介绍一下,就是python的一个库,它可以让你的自然语音转为对大模型的任务指令,让它去执行。本质上是将你说的话,将代码构造成各种各样的提示词,从而实现让大模型做知识问答、文档总结、任务拆解甚至是工具调用等一系列操作。

而对我来说,最有价值的就是通过它创造一个可以帮助你做事情的助手。附上github链接:

https://github.com/langchain-ai/langchain

Agent类型

LangChain中有一个Agent的概念,就是通过创建一个Agent来去将任务拆解为Chain(链)的形式,帮你去进行工具调用,执行任务。

其中有一个Agent的类型为Structured input ReAct,该类型是一个支持多输入的工具的类型,可以针对拆解出的任务逐步调用不同的工具完成一个复杂的任务,本篇文章就介绍一下它的使用

代码示例

下面来看一段示例代码,这里用的大模型是ChatGPT

import asyncioimport os
from langchain.agents import AgentTypefrom langchain.chat_models import ChatOpenAIfrom langchain.agents import initialize_agent
# 提供好的浏览器自动化工具from langchain.agents.agent_toolkits import PlayWrightBrowserToolkitfrom langchain.tools.playwright.utils import (create_async_playwright_browser,create_sync_playwright_browser)
import nest_asyncio
from settings import API_KEY, BASE_ADDRESS
nest_asyncio.apply()
os.environ["LANGCHAIN_TRACING"] = "true"
async_browser = create_async_playwright_browser(headless=False)browser_toolkit = PlayWrightBrowserToolkit.from_browser(async_browser=async_browser)tools = browser_toolkit.get_tools()
llm = ChatOpenAI(model_name="gpt-3.5-turbo-0613", temperature=0, openai_api_key=API_KEY, openai_api_base=BASE_ADDRESS)
# 初始化一个Structured类型的Agentagent_chain = initialize_agent(tools, llm, agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

async def run():    response = await agent_chain.arun(input="打开百度,并看一下网页标题")    print(response)

if __name__ == '__main__':    asyncio.run(run())

这是一个调用浏览器自动化的例子

我给出的任务是:打开百度,并看一下网页标题

很明显,这是一个复杂任务:

第一步:访问www.baidu.com

第二步:通过element选择器提取<title>标签的网站名

浅谈LangChain Agent多参数工具链调用

由于我们在例子中设置了verbose=True,这样就可以让我们清晰的看到调用过程

图中我们可以看到,调用过程也确实如一开始所说做任务拆解

先通过navigate_browser工具,传入url参数,来去访问百度

随后通过get_elements工具,传入selector参数,提取title标签内容

浅谈LangChain Agent多参数工具链调用

示例中没有体现出多输入的概念,但是我们可以看一下其中一个工具的源码,确实是多参数的输入的。

后续

我一直想写一个安全助手帮我做一些日常运营的工作,用了两天时间去简单学习使用LangChain,研究了部分源码以及调用机制。本篇文章中所用到的这个机制,目前看来可以作为助手开发的核心技术,后续准备继续深入研究。

LangChain太牛了!

原文始发于微信公众号(飞羽技术工坊):浅谈LangChain Agent多参数工具链调用

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月5日22:53:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   浅谈LangChain Agent多参数工具链调用https://cn-sec.com/archives/2010477.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息