langchain agent 使用外部工具示例

示例1

室外计算机器与天气搜索引擎,但在使用天气查询的时候好像不可以用了

提示词模版:LangSmith

import os
from dotenv import load_dotenv
from langchain_community.llms import Tongyi
load_dotenv('key.env')  # 指定加载 env 文件
key = os.getenv('DASHSCOPE_API_KEY')  # 获得指定环境变量
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]  # 获得指定环境变量
llm = Tongyi(temperature=1)from langchain import hub
from langchain.agents import load_tools
from langchain.agents import AgentExecutor
from langchain.agents.output_parsers import ReActSingleInputOutputParser
from langchain.agents.format_scratchpad import format_log_to_str
from langchain.tools.render import render_text_descriptionllm_with_stop = llm.bind(stop=["\nObservation"])# 准备我们的工具:这里用到 DuckDuckGo 搜索引擎,和一个基于 LLM 的计算器
tools = load_tools(["ddg-search", "llm-math"], llm=llm)# 准备核心提示词:这里从 LangChain Hub 加载了 ReAct 模式的提示词,并填充工具的文本描述
prompt = hub.pull("hwchase17/react-json")
prompt = prompt.partial(tools=render_text_description(tools),tool_names=", ".join([t.name for t in tools]),
)# 构建 Agent 的工作链:这里最重要的是把中间步骤的结构要保存到提示词的 agent_scratchpad 中
agent = ({"input": lambda x: x["input"],"agent_scratchpad": lambda x: format_log_to_str(x["intermediate_steps"]),}| prompt| llm_with_stop| ReActSingleInputOutputParser()
)# 构建 Agent 执行器:执行器负责执行 Agent 工作链,直至得到最终答案(的标识)并输出回答
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
print(agent_executor.invoke({"input": "今天上海和北京的气温差几度?"}))

示例2

使用 playwright 工具访问网页,提取上面内容,大模型总结网页内容

pip install playwright

playwright install

提示词模版:LangSmith

import os
from dotenv import load_dotenv
from langchain_community.llms import Tongyi
from langchain import hub
from langchain.agents import AgentExecutor
from langchain.agents.format_scratchpad import format_log_to_str
from langchain.agents.output_parsers import JSONAgentOutputParser
from langchain_community.chat_models.openai import ChatOpenAI
from langchain_community.agent_toolkits import PlayWrightBrowserToolkit
from langchain_community.tools.playwright.utils import create_async_playwright_browser
from langchain.tools.render import render_text_description_and_argsload_dotenv('key.env')  # 指定加载 env 文件
key = os.getenv('DASHSCOPE_API_KEY')  # 获得指定环境变量
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]  # 获得指定环境变量
llm = Tongyi(temperature=1)# 避免 Jupyter Notebook 产生 EventLoop 问题
import nest_asyncio
nest_asyncio.apply()llm_with_stop = llm.bind(stop=["\nObservation"])async def run_agent():async_browser = create_async_playwright_browser()browser_toolkit = PlayWrightBrowserToolkit.from_browser(async_browser=async_browser)tools = browser_toolkit.get_tools()prompt = hub.pull("hwchase17/react-multi-input-json")prompt = prompt.partial(tools=render_text_description_and_args(tools),tool_names=", ".join([t.name for t in tools]),)agent = ({"input": lambda x: x["input"],"agent_scratchpad": lambda x: format_log_to_str(x["intermediate_steps"]),}| prompt| llm_with_stop| JSONAgentOutputParser())agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)result = await agent_executor.ainvoke({"input": "请访问这个网页并总结一下上面的内容:https://v.qq.com/"})print(result)return result# 在主程序中调用异步函数并等待其完成
if __name__ == "__main__":import asyncioasyncio.run(run_agent())

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/615038.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT Plus国内升级实测

必要条件 有美国节点环境一个还没升级的ChatGPT账号一张美国的虚拟卡,点击获取美区苹果账户(手机使用) 开一张卡即可升级,按图片步骤开卡即可,此卡0年费0月费 开好卡之后登录ChatGPT升级,点击Upgrade to …

再谈C语言——理解指针(一)

内存和地址 内存 在讲内存和地址之前,我们想有个⽣活中的案例: 假设有⼀栋宿舍楼,把你放在楼⾥,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩, 如果想找到你,就得挨个房…

吴恩达机器学习-实践实验室:协同过滤推荐系统(Collaborative Filtering Recommender Systems)

在本练习中,您将实现协作过滤,以构建电影推荐系统。 文章目录 1-概念2-推荐系统3-电影评分数据集4-协作过滤学习算法4.1协同过滤成本函数 5-学习电影推荐6-建议7-祝贺 软件包 我们将使用现在熟悉的NumPy和Tensorflow软件包。 import numpy as np import…

谷歌推出适用于安卓设备的“Find My Device”网络,功能类似苹果Find My

谷歌今日推出了适用于安卓设备的“Find My Device”网络,其功能类似于苹果的“Find My”网络,旨在帮助用户定位丢失、被盗的安卓产品。 安卓的“Find My Device”网络可以利用数以亿计运行 Android 9 或更高版本的安卓设备,通过蓝牙信号追踪丢…

Vue 移动端(H5)项目怎么实现页面缓存(即列表页面进入详情返回后列表页面缓存且还原页面滚动条位置)keep-alive缓存及清除keep-alive缓存

一、需求 产品要求:Vue移动端项目进入列表页,列表页需要刷新,而从详情页返回列表页,列表页则需要缓存并且还原页面滚动条位置 二、实现思路 1、使用Vue中的keep-alive组件,keep-alive提供了路由缓存功能 2、因为我项…

紧急!揭秘:我的网站流量大幅下滑,立即采取这些对策挽救局面!

这是办公室里平常的一天。你刚刚发送完几封邮件,决定看一眼网站的最新指标。但当你读完数据后,眼睛瞪得大大的。"哦,不,"你大声说。"我的网站流量正在下降。 也许你的情况并非如此。即便如此,你也可能…

AIGC的崛起:定义未来内容创作的新纪元

🌟文章目录 🌟AIGC简介🌟 AIGC的相关技术与特点🌟AIGC有哪些应用场景?🌟AIGC对其他行业影响🌟面临的挑战与问题🌟AIGC未来发展 🌟AIGC十大热门网站推荐: 文心…

pyplot+pandas实现操作excel及画图

1、安装jupyter lab pip install jupyterlab # 启动 建议在指定的项目文件夹下 开启cmd窗口并执行 jupyter lab 启动后会自动打开浏览器访问 2、安装依赖 pip install matplotlib pip install xlrd pip install pandas 3、读取excel import pandas as pddf pd.read_excel(hi…

多因子模型的数据处理

优质博文:IT-BLOG-CN 数据处理的基本目的是从多量的、可能是杂乱无章的、难以理解的数据中抽取并推导出有价值、有意义的数据。特别是金融数据,存在数据缺失,不完整以及极端异常值等问题,对于我们的分析和建模影响很多。 对于我…

pbootcms百度推广链接打不开显示404错误页面

PbootCMS官方在2023年4月21日的版本更新中(对应V3.2.5版本),对URL参数添加了如下判断 if(stripos(URL,?) ! false && stripos(URL,/?tag) false && stripos(URL,/?page) false && stripos(URL,/?ext_) false…

机器人瓶胚检测工作站(H3U脉冲轴控制)

1、变量定义 2、程序监控1 2、 程序监控2 3、程序监控3 机器人输送料和机构的动作安全尤为重要,下面我们讨论下安全联锁控制逻辑 4、相机拍照触发信号 5、相机拍照触发时序

监控系统泛滥:CTO 面临的隐形成本危机

在信息技术飞速发展的今天,构建和维护现代化的数字系统变得日益复杂和关键;在这样的背景下,监控系统的作用变得尤为突出。正如业界广泛流传的一句经验之谈“无监控,不运维”所揭示的道理一样,对于任何具有一定复杂性的…