大模型agent开发之toolkits使用

news/2025/1/19 15:09:26/文章来源:https://www.cnblogs.com/Ethereal-hzc/p/18666973

Toolkits用途

toolkit提供了预定义工具集合,专注于某些特定服务,比如数据库查询、文件处理、Python 代码执行、网络爬虫等任务。这些工具集为 Agent 提供了更高层次的抽象,简化了工具的使用过程。

常见的 Toolkit

SQLDatabaseToolkit:使用场景主要是要通过自然语言对数据库执行查询,可以查询和操作SQL数据库,进而与SQL数据库进行交互。

RequestsToolkit: 主要使用场景是通过Api获取请求,该工具功能可以发送 GET 和 POST 请求,能够处理HTTP任务。

AzureCognitiveServicesToolkit:该工具将 Azure Cognitive Services 提供的 AI 能力融入到 LangChain 框架中,并且非常适合需要多模态处理、语音支持或高级文本分析的场景,为构建智能应用程序提供了更丰富的选择和更高效的集成方式。

Toolkit 的通用使用步骤

1. 初始化工具集:根据任务选择合适的 Toolkit,并初始化。

2. 加载工具到 Agent:将 Toolkit 的工具集成到 Agent 中。

3. 使用 Agent:通过自然语言与 Agent 交互,完成指定任务。

代码示例

from langchain.utilities import SerpAPIWrapper
from langchain.chains import LLMChain
from langchain.agents import initialize_agent, AgentType
import os
from langchain.agents import Tool,load_tools
from langchain.memory import ConversationBufferMemory, ReadOnlySharedMemory
#创建toolkits
from langchain.sql_database import SQLDatabase
from langchain.agents.agent_toolkits import AzureCognitiveServicesToolkit,SQLDatabaseToolkit
from langchain.prompts import PromptTemplate,MessagesPlaceholder
# serppai的token
os.environ["SERPAPI_API_KEY"] = ""
class AgentsTemplate:def __init__(self,**kwargs):#构建一个搜索工具search = SerpAPIWrapper()self.prompt = kwargs.get("base_prompt")self.llm = kwargs.get("llm")llm_math_chain = load_tools(["serpapi", "llm-math"], llm=self.llm)# 创建一条链总结对话template = """The following is a conversation between an AI robot and a human:{chat_history}Write a conversation summary based on the input and the conversation record above,input:{input}"""self.memory = ConversationBufferMemory(memory_key="chat_history",return_messages=True,)prompt = PromptTemplate(input_variable=["input", "chat_history"],template=template)self.shared_memory = ReadOnlySharedMemory(memory=self.memory)self.summary_chain = LLMChain(llm=self.llm,prompt = prompt,verbose = True,memory = self.shared_memory)self.tools = [Tool(name="Search",func=search.run,description= "useful for when you need to answer questions about current events or the current state of the world"),Tool(name="Summary",func=self.SummaryChainFun,description="This tool can be used when you are asked to summarize a conversation. The tool input must be a string. Use it only when necessary")]#load_tools(["serpapi", "llm-math"], llm=self.llm)# 记忆组件
self.agentType = [AgentType.ZERO_SHOT_REACT_DESCRIPTION,AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,AgentType.CONVERSATIONAL_REACT_DESCRIPTION,AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION]def SummaryChainFun(self, history):print("\n============== Summary Chain Execution ==============")print("Input History: ", history)return self.summary_chain.run(history)def createToolkits(self,toolKey):toolkit = Noneif toolKey == "azure":toolkit = AzureCognitiveServicesToolkit()elif toolKey == "sqlData":db = SQLDatabase.from_uri("sqlite:///Chinook.db")toolkit = SQLDatabaseToolkit(db = db,llm = self.llm)return toolkit#零样本增强式生成ZERO_SHOT_REACT_DESCRIPTION,#使用chatModel的零样本增强式生成CHAT_ZERO_SHOT_REACT_DESCRIPTION,def zero_agent(self,question,agentType):if agentType not in self.agentType:raise ValueError("无效的 AgentType,请选择有效的类型!")prefix = """Have a conversation with a human, answering the following questions as best you can. You have access to the following tools:"""suffix = """Begin!"{chat_history}Question: {input}{agent_scratchpad}"""#tookits使用tookits = self.createToolkits("azure")# 动态构建初始化参数agent_params = {#"tools": self.tools,"toolkit": tookits,"llm": self.llm,"agent": agentType,"verbose": True,"memory": self.memory,"agent_kwargs" : {"chat_history": MessagesPlaceholder(variable_name="chat_history"),"agent_scratchpad":MessagesPlaceholder(variable_name="agent_scratchpad"),"prefix":prefix,"sufix":suffix,"input":MessagesPlaceholder("input")},"handle_parsing_errors": True}#初始化代理agent = initialize_agent(**agent_params)print("-------------------")# 输出提示词模板prompt = agent.agent.llm_chain.promptprint("Prompt Template:")print(prompt)# print(agent.agent.prompt.messages)# print(agent.agent.prompt.messages[0])# print(agent.agent.prompt.messages[1])# print(agent.agent.prompt.messages[2])try:response = agent.run(question)print(f"运行的代理类型: {agentType}, 提问内容: {question}")print(f"agent回答: {response}")#self.memory.save_context(question,response)except Exception as e:print(f"代理运行时出错: {e}")#使用chatModel的零样本增强式生成

 

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

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

相关文章

【nginx】Nginx重定向方法

Nginx重定向配置是一个功能强大且灵活的工具,可以根据具体需求实现各种重定向规则。 以下是对Nginx请求重定向配置方法的详细解析:1、基本概念 请求重定向是指当客户端向服务器发送一个请求时,服务器根据一定的规则将客户端的请求引导到另外一个URL的过程。在Nginx中,通过r…

利用mybatis拦截器记录sql,辅助我们建立索引(二)

背景 上一篇中讲述了mybatis的mapper初始化过程和执行过程,这篇再讲讲具体的拦截器的使用,以实现记录sql到持久化存储,通过分析这些sql,我们就能更方便地建立索引。 利用mybatis拦截器记录sql,辅助我们建立索引(一) 我本地项目的大概版本: spring boot版本2.7,mybatis版…

JMeter通过JSON提取器获取任意一行数据中的多个字段

存在如下响应信息: { "result": { "data": [ { "字段1": "DK-01", "字段2": null, "字段3": "210(3mm/40kg)",}, {&q…

Windows7 64位系统ODBC数据源配置方法

Windows7 64位系统ODBC数据源配置方法 注意以下所说的步骤是在安装好SQL2000或者端内有绿色SQL的情况下,已经在查询分析器内一键建立并还原好数据库之后才进行的,请不要跳步骤进行,否则会出错。一键端可直接操作。(win7系统架设传奇3前请将UAC账户权限调至最低) Windows7…

【clang-format】Windows11下代码格式化工具clang-format.exe下载

官方项目地址:https://github.com/llvm/llvm-project/releases下滑找到win64.exe下载慢的可以去这个github代下网站:https://d.serctl.com/下载好后不用安装,直接解压这个exe文件 把目录bin里面的clang-format.exe文件复制出来,放到一个新文件夹里,比如我放到了D盘根目录下…

聊一聊 操作系统蓝屏 c0000102 的故障分析

一:背景 1. 讲故事 今年以来不知道为啥总有些朋友加我微信,让我帮忙分析下操作系统蓝屏问题,我也觉得挺好奇的,就问了其中一位朋友,说是B站来的,我就在拼命回忆,为啥会找我分析蓝屏?突然想到了去年好像录了一集关于 CrowdStrike 的热点事件。。。我本来是做.NET程序的故…

4-01-(C++类 this指针)

结构体传参,传递的是副本 结构体里面写函数,结构体的大小不变 函数的地址不在结构体里面。 类里面的函数都要传一个this指针,即 lea ecx,[s] 普通的函数结构体传参 this指针的特点 1、你用或者不用,它就在那里 2、参数个数确定的时候,用ecx来传递 3、参数个数不确…

协议通道版iMessage蓝号检测,iMessages数据筛选,无痕检测是否开启iMessage服务

一、实现iMessage数据检测的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2…

【开源】一款功能全面的商用级溯源防伪系统,适用于各种溯源场景

项目介绍 HiPi是一款开源、功能全面的商用级溯源防伪系统,一物一码系统,适用于各种溯源场景的大、中、小、微规模企业。系统能够追踪记录产品的生命周期各个环节,并将产品信息保存在系统中,实现品牌保护、产品营销、防止假冒伪劣产品、防窜货、产品追踪溯源等功能。 应用场…

行为分析智能监测摄像机

行为分析智能监测摄像机具有高效的行为识别和分类能力。通过摄像头捕捉到目标区域内的行为活动,并通过预先训练好的机器学习算法进行识别和分类,可以准确地分析出不同的行为特征,例如跌倒、打架等,并及时发出警报或提醒相关管理人员。这种高效的行为识别能力可以帮助监控中…

秸秆焚烧自动监测摄像机

秸秆焚烧自动监测摄像机具有高效的监测和识别能力。通过摄像头捕捉到秸秆焚烧的情况,并通过预先训练好的机器学习算法进行识别和分类,可以准确地分析出不同的烟雾、火焰等特征,并及时发出警报或提醒相关管理人员。这种高效的监测和识别能力可以帮助监测中心快速反应异常情况…