学习LangChain Agent多参数工具链调用,让大模型去访问网页

写在前面

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

而对我来说,最有价值的就是通过它创造一个可以帮助你做事情的助手。这篇文章就是想简单分享一下可以打造一个AI助手的技术。

附上github链接

github.com/langchain-a...

Agent类型

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

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

示例

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

python 复制代码
import asyncio
import os

from langchain.agents import AgentType
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent

# 提供好的浏览器自动化工具
from langchain.agents.agent_toolkits import PlayWrightBrowserToolkit
from 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类型的Agent
agent_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选择器提取标签的网站名

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

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

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

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

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

写在后面

我也尝试过通过与大模型对话的方式,固定它的返回格式,同时规范它的参数输入设置,仅凭对话是可以实现的,这仅仅是大模型工具调用的能力可行性验证。然而Langchian能让这个逻辑框架化,这一点确实太牛了,值得深入研究。

相关推荐
Khunkin1 小时前
牛顿迭代法:用几何直觉理解方程求根
机器学习
音视频牛哥2 小时前
超清≠清晰:视频系统里的分辨率陷阱与秩序真相
人工智能·机器学习·计算机视觉·音视频·大牛直播sdk·rtsp播放器rtmp播放器·smartmediakit
Coovally AI模型快速验证3 小时前
当视觉语言模型接收到相互矛盾的信息时,它会相信哪个信号?
人工智能·深度学习·算法·机器学习·目标跟踪·语言模型
大千AI助手4 小时前
探索LoSA:动态低秩稀疏自适应——大模型高效微调的新突破
人工智能·神经网络·lora·大模型·llm·大千ai助手·稀疏微调
sensen_kiss5 小时前
INT305 Machine Learning 机器学习 Pt.5 神经网络(Neural network)
人工智能·神经网络·机器学习
Geo_V6 小时前
OpenAI 大模型 API 使用示例
python·chatgpt·openai·大模型应用·llm 开发
福大大架构师每日一题7 小时前
⽬前 主流的开源模型体系 有哪些?
chatgpt·开源
Victory_orsh7 小时前
“自然搞懂”深度学习(基于Pytorch架构)——010203
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
长桥夜波7 小时前
机器学习日报10
人工智能·机器学习
MrSYJ7 小时前
可以指定 Jupyter Notebook 使用的虚拟环境吗
python·llm·agent