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

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

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。

设置环境变量

python 复制代码
import getpass
import os

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

定义Tools

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

python 复制代码
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模版,配置大模型,以及输出解析函数。

python 复制代码
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

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

python 复制代码
#引用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博客

相关推荐
hjs_deeplearning2 小时前
认知篇#10:何为分布式与多智能体?二者联系?
人工智能·分布式·深度学习·学习·agent·智能体
OpenAppAI2 小时前
Few-shot Prompting(少样本提示)概念指南
langchain·few-shot·prompts
余衫马10 天前
LangChain 文本分割器深度解析:从原理到落地应用(上)
langchain·文本分割器
牛大了202310 天前
【LLM学习】2-简短学习BERT、GPT主流大模型
gpt·学习·bert
临界点oc10 天前
LangChain4j从入门到实战(一)
人工智能·通义千问·langchain4j
1213410 天前
LLM:重构数字世界的“智能操作系统”
gpt·aigc·ai编程·llama·gpu算力
用户7112839284710 天前
FunctionCalling:当大模型开始理解这个世界
人工智能·python·agent
大模型教程10 天前
为什么你的RAG效果差?可能PDF没准备好!
程序员·llm·agent
MarsBighead10 天前
LLM-201: OpenHands与LLM交互链路分析
python·ai·llm·交互·agent
ZHOU_WUYI11 天前
Ragflow 源码:task_executor.py
数据库·agent·ragflow