GPT实战系列-如何让LangChain的Agent选择工具

news/2024/7/12 2:32:40 标签: gpt, langchain, Chain, 通义千问, Agent

GPT实战系列-如何让LangChainAgent选择工具

LangChain

GPT实战系列-LangChain如何构建基通义千问的多工具链

GPT实战系列-构建多参数的自定义LangChain工具

GPT实战系列-通过Basetool构建自定义LangChain工具方法

GPT实战系列-一种构建LangChain自定义Tool工具的简单方法

GPT实战系列-搭建LangChain流程简单应用

GPT实战系列-简单聊聊LangChain搭建本地知识库准备

GPT实战系列-LangChain + ChatGLM3构建天气查询助手

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-简单聊聊LangChain

大模型查询工具助手之股票免费查询接口

随着OpenAI的GPT-4这样的大型语言模型(LLMs)已经风靡全球,现在让它们自动执行各种任务,如回答问题、翻译语言、分析文本等。LLMs是在交互上真正体验到像“人工智能”。

如何管理这些模块呢?

LangChain在这方面发挥重要作用。LangChain使构建由LLMs驱动的应用程序变得简单,使用LangChain,可以在统一的界面中轻松与不同类型的LLMs进行交互,管理模型版本,管理对话版本,并将LLMs连接在一起。

在这里插入图片描述

对于任何用户输入,当知道工具使用的具体顺序时,Chain就很好。但是对于某些情况,使用哪些工具,调用多少次取决于用户输入。在这些情况下,我们就希望让模型决定使用工具的次数和顺序。这就是Agent

LangChain自带了许多内置的Agent,这些Agent针对 不同情况,类型。

举个例子,如果尝试一下 OpenAI 工具代理,它利用新的 OpenAI 工具调用 API。

设置环境变量

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass()

定义Tools

同前篇所示,为了让Agent可以选,实现三个自定义工具 Tools,首先需要做一些配置初始化的工作,导入langchain相关的包。

from langchain_core.tools import tool

@tool
def multiply(first_int: int, second_int: int) -> int:
    """Multiply two integers together."""
    return first_int * second_int

@tool
def add(first_int: int, second_int: int) -> int:
    "Add two integers."
    return first_int + second_int

@tool
def exponentiate(base: int, exponent: int) -> int:
    "Exponentiate the base to the exponent power."
    return base**exponent

tools = [multiply, add, exponentiate]

构建Prompt

实现代码,创建Prompt模版,配置大模型,以及输出解析函数。

from langchain import hub
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_openai import ChatOpenAI

prompt = hub.pull("hwchase17/openai-tools-agent")

Agent_95">创建并调用Agent

把各碎片链接起来,建立Agent

#引用OpenAI模型,创建代理
model = ChatOpenAI(model="gpt-3.5-turbo-1106", temperature=0)

agent = create_openai_tools_agent(model, tools, prompt)

# 执行
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

agent_executor.invoke(
    {
        "input": "Take 3 to the fifth power and multiply that by the sum of twelve and three, then square the whole result"
    }
)

输出结果:

> Entering new AgentExecutor chain...
Invoking: `exponentiate` with `{'base': 3, 'exponent': 5}`
243

Invoking: `add` with `{'first_int': 12, 'second_int': 3}`
15

Invoking: `multiply` with `{'first_int': 243, 'second_int': 15}`
3645

Invoking: `exponentiate` with `{'base': 3645, 'exponent': 2}`
13286025The result of raising 3 to the fifth power and multiplying that by the sum of twelve and three, then squaring the whole result is 13,286,025.

> Finished chain.

{'input': 'Take 3 to the fifth power and multiply that by the sum of twelve and three, then square the whole result',
 'output': 'The result of raising 3 to the fifth power and multiplying that by the sum of twelve and three, then squaring the whole result is 13,286,025.'}

是不是很有趣?

LangChain是一个Python框架,可以使用LLMs构建应用程序。它与各种模块连接,使与LLM和提示管理,一切变得简单。

觉得有用 收藏 收藏 收藏

点个赞 点个赞 点个赞

End

GPT专栏文章:

GPT实战系列-实战Qwen通义千问在Cuda 12+24G部署方案_通义千问 ptuning-CSDN博客

GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案

GPT实战系列-Baichuan2本地化部署实战方案

GPT实战系列-让CodeGeeX2帮你写代码和注释_codegeex 中文-CSDN博客

GPT实战系列-ChatGLM3管理工具的API接口_chatglm3 api文档-CSDN博客

GPT实战系列-大话LLM大模型训练-CSDN博客

GPT实战系列-LangChain + ChatGLM3构建天气查询助手

GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-ChatGLM2模型的微调训练参数解读

GPT实战系列-如何用自己数据微调ChatGLM2模型训练

GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案

GPT实战系列-Baichuan2等大模型的计算精度与量化

GPT实战系列-GPT训练的Pretraining,SFT,Reward Modeling,RLHF

GPT实战系列-探究GPT等大模型的文本生成-CSDN博客


http://www.niftyadmin.cn/n/5438374.html

相关文章

遥感深度学习:CNN-LSTM模型用于NDVI的预测(Pytorch代码深度剖析)

代码上传至Github库:https://github.com/ChaoQiezi/CNN-LSTM-model-is-used-to-predict-NDVI 01 前言 这是一次完整的关于时空遥感影像预测相关的深度学习项目,后续有时间更新后续部分。 通过这次项目,你可以了解: pytroch的模…

服务器发生数据包丢失的原因是什么?

当我们在使用服务器的过程中,是避免不了服务器出现数据包丢失的情况,那造成服务器数据包丢失的原因有哪些呢? 日常生活中,大内存的视频及软件高速下载会影响网络运行的速度与稳定,会导致数据包的丢失,但是这…

JAVA实战手册-开篇总述

该专题以实战为出发点,总结概述了实际工作中常用的java知识点,掌握了这些知识点,日常工作开发以及面试都不在话下。 话不多说,直入正题,以下为JAVA知识点概括总结(总计涵盖了10大类78小项) 针对…

python连接mysql数据库步骤

连接MySQL数据库通常需要使用第三方库,而在Python中,mysql-connector-python 是一个常用的 MySQL 连接库。以下是连接 MySQL 数据库的步骤: 安装 MySQL 连接库: 使用以下命令安装 mysql-connector-python: pip insta…

python基于django的高校迎新系统 flask新生报到系统

系统的登录界面和业务逻辑简洁明了,采用一般的界面窗口来登录界面,整个系统更加人性化,用户操作更加简洁方便。本系统在操作和管理上比较容易,还具有很好的交互性等特点,在操作上是非常简单的。因此,本系统可以进行设计…

如何为商业策略创建ChatGPT角色

如何为商业战略创建ChatGPT角色 在数字化时代,人工智能已成为各行各业不可或缺的工具,提供了无与伦比的效率、准确性和适应性。其中,OpenAI开发的对话模型ChatGPT尤为引人注目。其核心能力在于根据接收的提示生成类人的文本。无论是轻松的对…

海外社交营销为什么用云手机?不用普通手机?

海外社交营销作为企业拓展海外市场的重要手段,正日益受到企业的青睐。云手机以其成本效益和全球性特征,成为海外社交营销领域的得力助手。那么,究竟是什么特性使得越来越多的企业选择利用云手机进行海外社交营销呢?下文将对此进行…

递归——求阶乘

递归的基本概念 一个函数调用其自身&#xff0c;就是递归求n&#xff01;的阶乘 int Factorial(int n) {if(n0) return 1&#xff1b;return n*Factorial(n-1); } #include <iostream> using namespace std; int n; int Factorial(int n) {if(n0) return 1;return n*F…