【AIGC】LangChain Agent 最新教程详解及示例学习

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 【5月更文挑战第5天】LangChain Agent全网最全最新教程学习及示例学习

[toc]


LangChain Agent的终极指南,本教程是您使用 Python 创建第一个agent的重要指南,请立即开始你的 LLM 开发之旅。

一、什么是LangChain Agent(代理)

LangChain中代理背后的想法是利用语言模型以及要执行的一系列操作。代理正在使用推理引擎来确定要执行哪些操作来获取结果。

代理对于处理从简单的自动响应到复杂的上下文感知交互等任务至关重要。

例如,您可能有一个与 Google 搜索、Wikipedia 和 OpenAI LLM 集成的代理。使用给定的代理工具,他们可以在 Google 中搜索结果,然后使用维基百科工具中检索到的上下文来查找详细信息并扩展上下文。

请记住,您必须放置明确定义的指令,以确保代理将以正确的顺序调用工具。

该图展示了代理及其组件的示例:
image.png

二、提升你的Agent(代理)

你可能想知道,“为什么我不能使用简单的LLM来回答我的问题?在某些情况下,使用的 LLM 模型具有旧数据,或者您必须提供一些内部数据(并使用嵌入来查找相似性)。

探索这些可以提升座席功能的示例:

1.网页搜索工具

您可以轻松地将不同类型的 Web 搜索作为可用操作添加到您的代理。它可能是 Google 搜索、Tavily 搜索、DuckDuckGo 等。

2.在矢量数据库中嵌入搜索

您可以从检索器创建一个工具并根据需要对其进行描述,因此代理将使用此工具来获取某种数据,例如相似性检查和嵌入模型。

3.做特定动作

您的代理可以是多用途的。例如,它可能在 Internet 上搜索某种信息,执行推理步骤,然后调用操作来创建 Jira 事务。

4.API集成工具

LangChain框架已经做了很多API集成,你需要做的就是获取API密钥,安装包并将工具附加到代理上。

5.自定义工具

您可以编写自己的工具,请参阅文档以了解如何操作。它可能是与您的内部 API、文档系统和许多其他应用程序的集成!

三、LangChain Agent vs. Chain

除了拥有代理之外,LangChain还支持链的想法。

链是要执行的操作的子序列,始终以硬编码的方式进行。这是代理和链之间的关键区别。虽然在代理中,推理模型可以选择其他操作(从给定的工具)来获取特定数据,但链将始终采用我们选择的相同路径。

与链相比,代理商的优势:

  • 根据工具的描述,代理决定应使用哪种工具来获取相关信息。
  • 代理采取行动并获取给定结果的上下文,例如在其他资源(例如Google搜索和维基百科)中搜索其他信息。
  • 代理检查结果并重复该过程以获取所需的数据。

四、使用代理的主要目标

当您构建自己的 AI LangChain 解决方案时,您需要了解使用代理是否是您想要的方式。

如果您的用例始终基于相同的流程和策略,例如:

1.网络搜索。
2.向量数据库文本嵌入。
3.推理。

然后,您可以考虑使用链而不是代理。agent成本是不可预测的,因为有些问题可能会在调用一个工具后直接回答,而另一些问题可能会使用一套全面的工具进行适当的推理。如果您的用例基于确定来自不同来源的事物(称为工具),那么代理似乎是一个很好的解决方案。另一方面,一种代理类型使用单个工具将复杂的查询划分为更简单的查询,因此这也可能是决定是使用链查询还是代理的另一个标准。
image.png

五、LangChain Agent类型

LangChain根据几个维度对代理进行分类:

  • 模型类型;

  • 支持聊天记录;

  • 多输入工具;

  • 并行函数调用;

  • 必需的模型参数。

选择适合您的选项:

1.OpenAI 函数

某些模型经过微调,输入与平时略有不同。可以调用一些特殊函数,此代理的作用是确定何时应调用它。该代理旨在与这种 OpenAI 模型一起使用。它支持聊天记录。

2.OpenAI 工具

该代理旨在与 OpenAI 工具配合使用,因此其作用是交互并确定是否使用图像生成工具或其他内置工具。OpenAI 函数之间的主要区别在于,该函数试图找到最适合的算法/算法的一部分以进行更好的推理,而 OpenAI 工具是关于内置工具,如图像生成和执行代码。它支持聊天记录。

3.XML代理

在一些模型中,推理/编写XML处于非常高级的水平(一个很好的例子是Anthropic Claude的模型)。如果您正在处理 XML 文件,这可能是要考虑的正确选择。它支持聊天记录。

4.JSON 对话代理

在读取JSON时,市场上有几种LLM特别方便。JSON也是某些实体表示的非常常见的标准。如果您正在构建某种对 JSON 文件进行操作的集成,并且模型支持它,则可以尝试使用此代理。它支持聊天记录。

5.结构化聊天

适用于多输入工具。它支持聊天记录。

6.ReAct 代理

为简单模型(LLM - 非对话式)制作。它支持聊天记录。

7.自助搜索

这种代理仅支持一个工具作为输入。主要目标是将您的查询分成更小的查询,使用工具获得答案,然后将其组合成问题的完整答案。这种代理不支持聊天记录。

六、工具

工具是执行单个任务的代理的主要组件。它可以是 Web 搜索、矢量数据库搜索或任何其他操作。您可以从社区完成的许多完整工具中进行选择,也可以编写自己的工具。

LangChain还具有从检索器创建工具的非常有用的功能:

tool = create_retriever_tool(
   retriever,
   name="companies_database",
   description="Useful when you need to find information about company."
)

从 Chroma in-memory 数据库创建检索器的位置:

retriever = Chroma.from_documents(documents_list, embedding_function).as_retriever()

像这个例子一样,对检索工具进行良好的描述是非常重要的,因为代理步骤决策机制就是基于此。如果您的描述缺失或不完整,可能会导致跳过代理执行的操作。

值得一提的是,工具名称也应该是唯一的。

七、工具包

工具包是工具与预定义操作的组合,可以在我们的代理中使用。通常,它们被组装到特定域。有不同的例子:

  • CSV代理工具包,用于对“CSV”文件进行操作(读取、写入),

  • Github 代理工具包,在 Github 上实现了不同的操作,例如创建新问题、创建新拉取请求等。

与工具相比,工具包实现了很多操作。

八、创建第一个LangChain Agent

先决条件:

  • Tavily API token
  • OpenAI API token
  • Python v3.11 版
  • Pip 包:langchain(至少 v0.1.0)、openai、wikipedia、langchain-community、tavily-python、langchainhub、langchain-openai、python-dotenv

此时,您必须选择:

  • 您想使用的 LLM(例如 ChatOpenAI);
  • 代理类型(有关代理类型部分的更多内容);
  • 工具。

现在,您可以组合所有内容:

from dotenv import load_dotenv
from langchain import hub
from langchain.agents import AgentExecutor, create_openai_functions_agent, load_tools
from langchain.tools.tavily_search import TavilySearchResults
from langchain.utilities.tavily_search import TavilySearchAPIWrapper
from langchain_openai import ChatOpenAI

load_dotenv()

def get_function_tools():
  search = TavilySearchAPIWrapper()
  tavily_tool = TavilySearchResults(api_wrapper=search)

  tools = [
      tavily_tool
  ]

  tools.extend(load_tools(['wikipedia']))

  return tools


def init_action():
  llm = ChatOpenAI(model="gpt-4", temperature=0.1)
  prompt = hub.pull("hwchase17/openai-functions-agent")
  tools = get_function_tools()
  agent = create_openai_functions_agent(llm, tools, prompt)
  agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
  agent_executor.invoke({"input": "Who is the owner of Tesla company? Let me know details about owner."})


init_action()

Dotenv 文件应具有以下环境:

TAVILY_API_KEY=
OPENAI_API_KEY=

九、Agent 执行器

从LangChain v0.1.0版本开始,推荐的创建新代理的方式是使用AgentExecutor。您可以通过传递代理和工具轻松定义您的执行器。

旧的initialize_agent使用方式被标记为从 v0.1.0 版本开始弃用。

agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

十、定义提示语

LangChain v0.1.0 版本提供了一种新的初始化代理的方法。我们必须对每种类型使用明确定义的方法,而不是使用initialize_agent。还有一个称为 prompt 的附加参数。我们可以使用默认提示(您可以参考文档查看每个代理的提示)。

OpenAI 函数代理的默认提示示例:

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

如果您不打算覆盖默认提示,请相应地提供默认提示。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
5月前
|
存储 API
LangChain与智能Agent构建问题之MetaGPT中工程师智能体代码错误如何解决
LangChain与智能Agent构建问题之MetaGPT中工程师智能体代码错误如何解决
66 1
|
4月前
langchain 入门指南 - 使用 Agent
langchain 入门指南 - 使用 Agent
176 0
|
4月前
|
存储 人工智能
|
5月前
|
JSON 数据格式 Python
LangChain与智能Agent构建问题之运行生成的软件如何解决
LangChain与智能Agent构建问题之运行生成的软件如何解决
52 0
|
2月前
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
107 3
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
|
2月前
|
Shell Docker 容器
LangChain-10(2) 加餐 编写Agent获取本地Docker运行情况 无技术含量只是思路
LangChain-10(2) 加餐 编写Agent获取本地Docker运行情况 无技术含量只是思路
24 4
LangChain-10(2) 加餐 编写Agent获取本地Docker运行情况 无技术含量只是思路
|
2月前
|
存储 搜索推荐 数据库
运用LangChain赋能企业规章制度制定:深入解析Retrieval-Augmented Generation(RAG)技术如何革新内部管理文件起草流程,实现高效合规与个性化定制的完美结合——实战指南与代码示例全面呈现
【10月更文挑战第3天】构建公司规章制度时,需融合业务实际与管理理论,制定合规且促发展的规则体系。尤其在数字化转型背景下,利用LangChain框架中的RAG技术,可提升规章制定效率与质量。通过Chroma向量数据库存储规章制度文本,并使用OpenAI Embeddings处理文本向量化,将现有文档转换后插入数据库。基于此,构建RAG生成器,根据输入问题检索信息并生成规章制度草案,加快更新速度并确保内容准确,灵活应对法律与业务变化,提高管理效率。此方法结合了先进的人工智能技术,展现了未来规章制度制定的新方向。
50 3
|
2月前
LangChain-15 Manage Prompt Size 管理上下文大小,用Agent的方式询问问题,并去百科检索内容,总结后返回
LangChain-15 Manage Prompt Size 管理上下文大小,用Agent的方式询问问题,并去百科检索内容,总结后返回
44 2
|
2月前
|
传感器 人工智能 机器人
Multi-Agent应用领域及项目示例
多智能体系统(MAS)通过多个自主、交互式的智能体协同工作,能够更高效地解决复杂问题,提高系统的灵活性和鲁棒性。本文详细介绍了MAS的概念、特点及其在人工智能与机器人技术、经济与商业、交通管理、医疗健康和环境保护等领域的具体应用示例。
129 0
|
3月前
|
机器学习/深度学习 算法 自动驾驶
深度学习之分布式智能体学习
基于深度学习的分布式智能体学习是一种针对多智能体系统的机器学习方法,旨在通过多个智能体协作、分布式决策和学习来解决复杂任务。这种方法特别适用于具有大规模数据、分散计算资源、或需要智能体彼此交互的应用场景。
194 4