LangChain-Agent自定义Tools类 ——输入参数篇(二)

news2025/1/13 13:57:08

给自定义函数传入输入参数,分别有single-input 参数函数案例和multi-input 参数函数案例: 

from langchain.agents import Tool
from langchain.tools import BaseTool
from math import pi
from typing import Union
from math import pi
from typing import Union
from langchain.agents import initialize_agent
from langchain.agents import AgentType
import os
from langchain.chat_models import ChatOpenAI
from langchain.chains.conversation.memory import ConversationBufferWindowMemory
from typing import Optional


class Calculate_Life(BaseTool):#这里的RUL value 我瞎编的
      name = "Calculate Life Tool"
      description = "use this tool when you need to calculate the happiness of life using the RUL value"

      def _run(self, RUL: Union[int, float]):
        return "The happiness of life is {RUL*2}"

      def _arun(self, RUL: int):
        raise NotImplementedError("This tool does not support async")
class Calculate_volumn(BaseTool):#这里的RUL value 我瞎编的
      name = "Calculate Object Volumn"
      description = (
      "use this tool when you need to calculate the the volumn of object,inputs are multi parameters,need multi input variables,like the length,width,and height."
      "To use the tool, you must provide at least three of the following parameters "
      "['length', 'width', 'height']."
      )

      def _run(
          self,
          length: Optional[Union[int, float]] = None,
          width: Optional[Union[int, float]] = None,
          height: Optional[Union[int, float]] = None
      ):
          # check for the values we have been given
          if length and width and height:
              return length*width*height
          else:
              return "Could not calculate the size of universe. Need two or more of `length`, `width`,`height`."
      def _arun(self, query: str):
          raise NotImplementedError("This tool does not support async")
os.environ["OPENAI_API_KEY"] = "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"
llm = ChatOpenAI(
    openai_api_key=os.environ["OPENAI_API_KEY"] ,
    temperature=0,
    model_name='gpt-3.5-turbo'
)
# initialize conversational memory
conversational_memory = ConversationBufferWindowMemory(
        memory_key='chat_history',
        k=5,
        return_messages=True
)

tools = [Calculate_volumn()]
 
# sys_msg = """Assistant is a large language model trained by OpenAI.

# Assistant is designed to be able to assist with a wide range of tasks, from answering simple questions to providing in-depth explanations and discussions on a wide range of topics. As a language model, Assistant is able to generate human-like text based on the input it receives, allowing it to engage in natural-sounding conversations and provide responses that are coherent and relevant to the topic at hand.

# Assistant is constantly learning and improving, and its capabilities are constantly evolving. It is able to process and understand large amounts of text, and can use this knowledge to provide accurate and informative responses to a wide range of questions. Additionally, Assistant is able to generate its own text based on the input it receives, allowing it to engage in discussions and provide explanations and descriptions on a wide range of topics.

# Unfortunately, Assistant is terrible at maths. When provided with math questions, no matter how simple, assistant always refers to it's trusty tools and absolutely does NOT try to answer math questions by itself

# Overall, Assistant is a powerful system that can help with a wide range of tasks and provide valuable insights and information on a wide range of topics. Whether you need help with a specific question or just want to have a conversation about a particular topic, Assistant is here to assist.
# """
# sys_msg = "Do not try to figure math question by yourself, you might be blindly confident about your mathematic capacity,please always refers to it's trusty tools and absolutely does NOT try to answer math questions by itself"



# agent = initialize_agent(
#     agent='chat-conversational-react-description',
#     # agent='zero-shot-react-description',
#     tools=tools,
#     llm=llm,
#     verbose=True,
#     max_iterations=3,
#     early_stopping_method='generate',
#     memory=conversational_memory
# )


new_prompt = agent.agent.create_prompt(
    system_message=sys_msg,
    tools=tools
)

agent.agent.llm_chain.prompt = new_prompt
# update the agent tools
agent.tools = tools

# agent("How much is the happiness of life when RUL value is equal to 2")#单个参数提问
agent("Given [length=10000,width=2,height=3],what's the size of this box?")#多个参数提问

运行结果 

后期关注结构化输出,方便作为借口提供给其他下游应用 

相关友情链接:

为 LLM 代理构建自定义工具 |松果 (pinecone.io)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

StringBuffer和正则表达式

StringBuffe 获取int类型的最大值和最小值 System.out.println(Integer.MAX_VALUE);//int类型的最大值 System.out.println(Integer.MIN_VALUE);//int类型的最小值输出结果 Integer和String相互转换 Integer i1 new Integer(100); System.out.println(i1);Integer i2 new…

08 | 事务到底是隔离的还是不隔离的?

以下内容出自《MySQL 实战 45 讲》 08 | 事务到底是隔离的还是不隔离的? 事务启动时机 事务启动时机: begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。如果想…

Gradio的Button组件介绍

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

从0到1精通自动化测试,pytest自动化测试框架,配置文件pytest.ini(十三)

一、前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行 二、ini配置文件 pytest里面有些文件是非test文件pytest.ini pytest的主配置文件,可以改变pytest的默认…

SpringBoot多环境启动

文章目录 多环境启动多环境启动基本格式多环境启动命令格式多环境启动的兼容性 多环境启动 多环境启动基本格式 我们在开发中和上线后的环境中, 有些配置文件的值是不相同的, 但是当项目上线后我们肯定是不能修改配置文件的, 于是我们需要针对不同的环境进行不同的配置 例如下…

【C语言之区分sizeof 和 strlen】

C语言之区分sizeof 和 strlen 详解C语言sizeof 和 strlen1、单目操作符1.1、详解sizeof单目操作符1.2、sizeof代码部分1.2.1、sizeof例程11.2.2、sizeof例程21.2.3、sizeof例程3 2、详解strlen函数2.1、strlen代码部分2.1.1、strlen例程1 3、区别strlen函数和sizeof操作符3.1、…

数据库—属性闭包

属性闭包 要理解属性闭包先理解以下概念 U属性集合,比如一个表A有这些属性**{a,b,c,d,e}**F函数依赖集 这个就是由已知的一些函数依赖组成的集合,比如: F {a->b,b->c,c->d,ab->e} //F函数依赖集R(U,F)表示一个关系模…

linux工程管理工具make

linux工程管理工具make 一、make 工具的功能二、makefile 文件三、makefile 的规则Makefile 介绍一、Makefile 的规则二、一个示例三、其他例子makefiletest.cprocess.cprocess.h截图 一、make 工具的功能 1、主要负责一个软件工程中多个源代码的自动编译工作 2、还能进行环境…

Spring boot装载模板代码工程实践问题之二

Spring boot装载模板代码工程实践问题解决方案 替代方案解决方案及解释 Spring boot装载模板代码工程中,后续有自定注解的要求,在本地运行无恙,打成jar启动后,自定义注解会无效。 替代方案 在测试compiler.getTask多种参数后&…

7.MMM

文章目录 MMM概念配置mysql配置文件主主复制主从服务器配置--只需要配置一个主服务器的安装mysql-MMM 测试故障测试客户端测试 MMM 概念 MMM(Master-Master replication manager for MvSQL,MySQL主主复制管理器) 是一套支持双主故障切换和双…

git merge和git rebase的区别

本文来说下git merge和git rebase的区别 文章目录 分支合并解决冲突git rebase和git merge的区别本文小结 分支合并 git merge是用来合并两个分支的。比如:将 b 分支合并到当前分支。同样git rebase b,也是把 b 分支合并到当前分支。他们的 「原理」如下…

并发-操作系统底层工作的整体认识

冯诺依曼计算机模型 五大模块:输入、输出、计算器【cpu】、存储器【内存】、控制器 现在计算机硬件结构设计 CPU:控制、运算、数据

工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(三)

文章目录 机器人逆运动学△ 代数解求 θ 4 \theta_4 θ4​、 θ 5 \theta_5 θ5​、 θ 6 \theta_6 θ6​○ 求解 θ 4 \theta_4 θ4​○ 求解 θ 5 \theta_5 θ5​○ 求解 θ 6 \theta_6 θ6​ CSDN提示我字数太多,一篇发不下,只好拆分开x2。。。 关于…

shiro-all由1.3.2 升级到1.11.0后出现重定向次数过多的问题:ERR_TOO_MANY_REDIRECTS

最近漏洞升级, shiro-all由1.3.2 升级到1.11.0后, 导致系统登录首页打不开, 一直提示重定向次数过多: ERR_TOO_MANY_REDIRECTS: 经定位: 是shiroFilter配置中: loginUrl配置问题 以一下例子具体说明参数含义: 1,假设网站的网址是http://localhost…

基于STM32F407的智慧农业系统

文章目录 一、设备平台二、功能说明三、硬件系统设计实现与图表四、软件系统设计实现与流程图五、调试过程中出现的问题及相应解决办法六、程序设计1. 开始任务函数2. LED任务函数3. KEY任务函数4. UART任务函数5. OLED任务函数6. DHT11任务函数7. BEEP任务函数8. ADC任务函数9…

写一个简单的静态html页面demo,包含幻灯片

效果图&#xff1a; 代码如下&#xff0c;图片文件可自行更换&#xff1a; <!DOCTYPE html> <html> <head><title>公司网站</title><style>/* 样式定义 */body {font-family: Arial, sans-serif;margin: 0;padding: 0;}header {backgrou…

什么是Session

1、web中什么是会话 &#xff1f; 用户开一个浏览器&#xff0c;点击多个超链接&#xff0c;访问服务器多个web资源&#xff0c;然后关闭浏览器&#xff0c;整个过程称之为一个会话。 2、什么是Session &#xff1f; Session:在计算机中&#xff0c;尤其是在网络应用中&…

Linux学习之进程概念和ps命令

进程概念和启动关闭进程 进程就是运行中的程序 在C语言中进程只能只能从main()函数开始运行。 进程终止的方式有两种&#xff1a; 正常终止&#xff1a;从main()函数返回、调用exit()等方式 异常终止&#xff1a;调用abort、接收信号等。有可能 ps ps是“process status”的缩…

华为OD机试真题 Python 实现【光伏场地建设规划】【2023Q1 100分】

一、题目描述 祖国西北部有一片大片荒地&#xff0c;其中零星的分布着一些湖泊&#xff0c;保护区&#xff0c;矿区&#xff1b;整体上常年光照良好&#xff0c;但是也有一些地区光照不太好。某电力公司希望在这里建设多个光伏电站&#xff0c;生产清洁能源。对每平方公里的土…

React入门(B站李立超老师)

视频地址&#xff1a;https://www.bilibili.com/video/BV1bS4y1b7NV/ 课程第一部分代码&#xff1a; https://pan.baidu.com/s/16hEN7j4hLDpd7NoFiS8dHw?pwd4gxv 提取码: 4gxv 课程第二部分代码&#xff1a;https://pan.baidu.com/s/1mDkvLqYVz1QGTV1foz5mQg?pwd5zir 提取码&…