使用 MinIO SDK 开发 Langchain 代理以供 LLM 工具使用

使用 MinIO SDK 开发 Langchain 代理以供 LLM 工具使用

在我之前关于 Langchain 的文章中,我探讨了“社区 S3 加载器”的使用,虽然有用,但功能有限。在这里,我们深入探讨了定制工具的开发(本演示重点介绍MinIO对象上传)以及它们通过Langchain代理和执行器与大型语言模型(LLMs)的集成。此演示展示了将对象上传到存储桶的过程,利用 MinIO Python SDK 和 Langchain 作为基础工具。这种探索开辟了新的可能性,超越了基本的加载器,转向了更通用、更强大的实现,从而增强了语言模型驱动应用程序的功能。

这种将复杂的语言模型与强大的数据存储功能相结合的战略举措是一种进化,它增强了语言驱动应用程序的功能,为使用大型语言模型提供高级工具利用的途径。LLMs利用 MinIO 安全且可扩展的对象存储,结合 Langchain 利用 OpenAI 的 GPT 等全部功能LLMs的能力,开发人员可以创建不仅可以模仿人类文本生成,还可以执行复杂任务的系统,将数据管理效率提升到新的高度。

Langchain是将人类指令转换为机器智能操作语言的关键接口。将其设想为一个复杂的中介,能够解释用户命令并编排一系列活动,从MinIO结构中的数据组织到数据集的详细分析。这种能力有效地将开发人员工具包中的理论能力LLMs转化为有形的功能资产,从而可以制作曾经被认为是未来主义的高级解决方案。

在本指南中,我们优先考虑实用性,转向可操作的开发实践。我们邀请开发人员拥抱 Langchain 和 MinIO SDK 结合的潜力,不仅要创新,还要重新定义当今数字工具的智能自动化可以实现的边界。

可以在此处找到此探索随附的源代码和详细文档。该笔记本提供了最少和必要的资源,以开始使用 Langchain 和 MinIO 的旅程,提供实践经验,以加深您对创建智能数据驱动应用程序的理解和技能。

使用上下文记忆和高级数据处理增强对话代理

将内存管理集成到 Langchain 应用程序中,可以显著提高它们提供响应的能力,这些响应不仅相关,而且具有深度上下文感知能力。这种进步允许代理利用过去的对话,为每个交互提供更丰富、更有层次的理解。此功能的真正强大之处在于它能够根据用户会话的累积历史记录定制响应,将标准交互转换为与用户产生更深层次共鸣的个性化体验。

内存功能的加入,特别是与将对象存储公开为代理工具的功能相结合时,彻底改变了 AI 驱动的对话代理的格局。开发人员被赋予了创建代理的工具,这些代理不仅可以以无与伦比的准确性执行任务,还可以通过持续的交互来发展和适应用户的需求。这种适应性标志着开发交互式应用程序的飞跃,代理不仅响应而且预测用户需求,打造真正交互式和直观的用户体验。

此外,这种方法为将 MinIO 强大的数据管理功能与 Langchain 的先进处理能力无缝融合奠定了全面的蓝图,为增强对话代理提供了细致的详细指南。其结果是利用 MinIO 和 Langchain 的优势进行和谐集成,为开发人员提供丰富的调色板,用于创建技术上既深刻又以用户为中心的应用程序。

设置环境

首先使用所有必要的包设置开发环境至关重要。这可确保您安装了所有必需的库和依赖项。

首先安装两个密钥包:MinIO Python SDK 和 Langchain。MinIO SDK 是一个强大的工具,它允许我们与 MinIO 存储桶进行交互,直接从我们的 Python 脚本实现文件上传、下载和存储桶管理等操作。另一方面,Langchain 是一个创新的框架,可以创建将大型语言模型与特定任务相结合的应用程序,例如在这种情况下的文件管理。

这些软件包共同构成了我们工具的支柱,使我们能够利用 MinIO 强大的存储解决方案的优势和大型语言模型的高级自然语言处理能力。

若要安装这些软件包,请在终端中运行以下命令:

pip install -q -U minio "langchain[all]"

此命令将安装最新版本的 MinIO 客户端和 Langchain,以及 Langchain 所需的所有可选依赖项。

集成 Langsmith 进行过程监控和跟踪(可选)

使用 Langchain 进行开发的一个关键方面是能够监控和跟踪任务的执行,尤其是在将对象存储操作等复杂功能与 MinIO 集成时。Langsmith 提供了一个直观的平台来可视化这些流程,从而实时了解 Langchain 应用程序的性能和效率。下面,我们提供了来自 Langsmith 的屏幕截图,这些屏幕截图突出了任务的无缝执行,从调用LLMs到执行特定操作,例如文件上传和数据处理。

这些视觉辅助工具不仅有助于揭开底层流程的神秘面纱,还展示了 Langchain 和 MinIO SDK 在创建复杂的 AI 驱动工具方面的实际应用。通过 Langsmith,开发人员可以更深入地了解其应用程序的行为,从而更轻松地优化和完善其解决方案,以获得更好的性能和用户体验。

1.jpeg
Langchain 内部的 RunnableSequence 概述,通过 Langsmith 捕获。
2.jpeg

详细的性能指标,提供对 ChatOpenAI LLM工具使用、提示等的见解,通过 Langsmith 可视化。

将 Langsmith 整合到您的开发工作流程中,不仅可以提高透明度,还可以让您构建更可靠、更高效的 Langchain 应用程序。通过利用这些见解,您可以微调应用程序,确保它们满足生产环境所需的高标准。

要开始使用 Langsmith,请按照下列步骤操作:

  1. 创建一个 Langsmith 项目:访问 smith.langchain.com 并注册或登录您的帐户。登录后,通过选择创建新项目的选项并将其命名为“Langchain MinIO Tool”来创建一个新项目。该项目将成为监控 Langchain 集成的交互和性能的中心枢纽。
  2. 生成 API 密钥:创建项目后,导航到项目设置以生成新的 API 密钥。此密钥将对应用程序对 Langsmith 的请求进行身份验证,从而确保工具与 Langsmith 服务之间的安全通信。
  3. 配置环境变量:Langsmith 需要在您的开发环境中设置多个环境变量。这些变量使应用程序能够与 Langsmith 的 API 通信并发送跟踪数据。

这些变量的示例包括:

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
export LANGCHAIN_API_KEY=""
export LANGCHAIN_PROJECT="Langchain MinIO Tool"

替换 为上一步中生成的实际 API 密钥。这些环境变量使应用程序中的 Langchain SDK 能够将跟踪和监控数据发送到您的 Langsmith 项目,从而为您提供对 Langchain 集成的运行和性能的实时洞察。

3.jpeg

对于那些希望最大限度地提高 Langchain 应用程序的效率和可靠性的人来说,集成 Langsmith 是一个可选但推荐的步骤。它为性能监控、调试和优化提供了有价值的工具,确保您的 Langchain MinIO 工具以最佳状态运行。

初始化 OpenAI 和 MinIO 客户端以进行文件管理

构建与 MinIO 集成以进行文件上传的 Langchain 工具的基础包括为 OpenAI 和 MinIO 设置客户端。此设置允许您的应用程序与 OpenAI 强大的语言模型和 MinIO 的高效文件存储系统进行通信。以下是在 Python 中初始化这些关键组件的方法:

使用 OpenAI 设置语言模型

首先,我们需要使用 OpenAI 的 API 初始化语言模型。这一步涉及使用 langchain_openai 包创建一个 ChatOpenAI 的实例,该实例将作为 OpenAI 语言模型的接口。这需要 OpenAI 的 API 密钥,您可以从您的 OpenAI 帐户获取该密钥。

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(api_key="")

将空字符串替换 (api_key="") 为实际的 OpenAI API 密钥。此密钥支持对 OpenAI 的经过身份验证的请求,允许您利用语言模型来处理和生成文本。

导入必要的库

在继续操作之前,请确保导入必要的库。这些导入包括用于处理字节流的 io 和 tool from langchain.agents ,后者是一个装饰器,用于将函数注册为可供 Langchain 代理使用的工具。

import io
from langchain.agents import tool

初始化 MinIO 客户端

接下来,我们初始化 MinIO 客户端,它允许我们的应用程序与 MinIO 存储桶进行交互,以执行上传、下载和列出文件等操作。MinIO 客户端使用服务器终结点、访问密钥、密钥和标志进行初始化,以指示是否使用安全连接 (HTTPS)。

from minio import Minio
from minio.error import S3Error

minio_client = Minio('play.min.io:443',
                     access_key='minioadmin',
                     secret_key='minioadmin',
                     secure=True)

在此示例中,我们将 MinIO 的播放服务器 ( play.min.io:443 ) 与默认凭据( minioadmin 用于访问密钥和密钥)一起使用。在生产环境中,应将这些详细信息和凭据替换为 MinIO 服务器详细信息和凭据。

通过初始化 OpenAI 和 MinIO 客户端,您可以为开发高级工具奠定基础,这些工具可以与自然语言处理模型交互并管理 MinIO 存储桶中的文件,从而为自动化和增强文件管理任务开辟了广泛的可能性。

在 MinIO 中管理存储桶可用性

使用 MinIO 的一个重要部分是管理存储桶,存储桶是保存数据的基本容器。在上传文件之前,请务必确保目标存储桶存在。此过程包括检查存储桶是否存在,如果存储桶不存在,则创建存储桶。此方法不仅可以为您的环境准备文件操作,还可以避免与不存在的存储桶相关的错误。

下面是一个简单而有效的帮助程序函数和代码片段,用于在 MinIO 中管理存储桶的可用性:

bucket_name = "test"

try:
    # Check if bucket exists
    if not minio_client.bucket_exists(bucket_name):
        # Create the bucket because it does not exist
        minio_client.make_bucket(bucket_name)
        print(f"Bucket '{bucket_name}' created successfully.")
    else:
        print(f"Bucket '{bucket_name}' already exists.")
except S3Error as err:
    print(f"Error encountered: {err}")
  1. 定义存储桶名称:首先指定要检查或创建的存储桶的名称,在本例中为 "test" .
  2. 检查存储桶是否存在:它使用 MinIO 客户端 bucket_exists 的方法检查存储桶是否已经存在。
  3. 如有必要,创建存储桶:如果存储桶不存在,则调用该 make_bucket 方法以创建具有指定名称的新存储桶。
  4. 处理错误:该操作被包装在“try-except 块”中,以捕获和处理过程中可能发生的任何 S3Error 异常,例如权限问题或网络错误。

通过在执行文件操作之前确保存储桶的存在,您可以使应用程序更加健壮和用户友好,提供清晰的反馈并避免与 MinIO 中的存储桶管理相关的常见陷阱。

实现文件上传功能

配置环境并进行必要的检查以确保目标存储桶存在后,下一步就是实现将文件上传到 MinIO 的核心功能。这涉及创建一个函数,该函数将存储桶名称、对象名称(存储桶中的文件名)和文件的二进制数据作为输入,然后使用 MinIO 客户端将文件上传到指定的存储桶。

以下是定义此上传函数的方法:

@tool
def upload_file_to_minio(bucket_name: str, object_name: str, data_bytes: bytes):
    """
    Uploads a file to MinIO.
    Parameters:
        bucket_name (str): The name of the bucket.
        object_name (str): The name of the object to create in the bucket.
        data_bytes (bytes): The raw bytes of the file to upload.
    """
    data_stream = io.BytesIO(data_bytes)
    minio_client.put_object(bucket_name, object_name, data_stream, length=len(data_bytes))
    return f"File {object_name} uploaded successfully to bucket {bucket_name}."

上传功能的关键组件:

  • 函数装饰器 ( @tool ):此装饰器用于将函数注册为 Langchain 框架中的工具,使其可作为 Langchain 工作流或流程的一部分调用。它使该功能能够与 Langchain 代理和执行器无缝集成。
  • 参数:该函数有三个参数:
  • bucket_name :上传文件的MinIO存储桶名称。
  • object_name :要分配给存储桶中文件的名称。
  • data_bytes :要上传的文件的二进制数据。
  • 创建字节流:二进制数据 ( data_bytes ) 包装在 BytesIO 流中。这是必需的,因为 MinIO 客户端 put_object 的方法需要数据流而不是原始字节。
  • 上传文件:调用MinIO客户端 put_object 的方法,包括Bucket名称、对象名称、数据流和数据长度。此方法处理上传过程,将文件存储在给定对象名称下的指定存储桶中。
  • Return 语句:上传成功后,函数返回一条确认消息,指示操作成功。

此上传函数是创建与 MinIO 存储交互的应用程序的基本构建块。它以可重用且易于调用的格式封装上传逻辑,使开发人员能够有效地将文件上传功能集成到他们的 Langchain 应用程序和工作流程中。

使用 RunnableLambda 和辅助工具增强功能

在建立了基本的上传功能后,增强系统以实现更广泛的集成和额外的实用性可以进一步完善工具的功能。这涉及创建一个 RunnableLambda 上传函数并定义可在同一生态系统中使用的辅助工具。这些步骤不仅扩展了功能,还确保了与 Langchain 工作流程的无缝集成。

创建 RunnableLambda 用于文件上传

Langchain的架构支持将函数封装到可运行的文件中,可以在其框架内无缝执行。为了便于在 Langchain 工作流中执行上传功能,我们将其包装在 RunnableLambda .这使得该功能可以轻松地与 Langchain 的代理和执行器集成,从而实现可以与 MinIO 交互的自动化和复杂的工作流程。

from langchain_core.runnables import RunnableLambda

upload_file_runnable = RunnableLambda(upload_file_to_minio)

RunnableLambda 采用了我们的 upload_file_to_minio 功能,并使其在 Langchain 的系统中随时可用,从而增强了该工具在应用程序不同部分的互操作性和易用性。

整合辅助功能以实现扩展功能

在探索将 MinIO 与 Langchain 集成时,我们主要关注上传文件的核心功能。然而,Langchain的多功能性允许整合广泛的功能,而不仅仅是文件管理。为了说明这种灵活性,我们提供了一个辅助函数的示例, get_word_length 该函数直接受到 Langchain 文档中示例的启发。这用于演示将附加功能集成到您的 Langchain 项目中是多么容易。

包含该 get_word_length 功能旨在展示向 Langchain 工具添加更多功能的过程。

下面详细介绍了如何定义此辅助工具:

@tool
def get_word_length(word: str) -> int:
    """Returns the length of a word."""
    return len(word)

此函数标有 @tool 装饰器,是扩展工具功能的简单而有效的演示。通过将此函数注册为 Langchain 框架中的另一个工具,它变得可调用,其方式与文件上传功能类似,展示了开发人员可以使用各种功能轻松丰富其应用程序。

添加此函数的过程取自 Langchain 的文档,不仅证明了扩展应用程序功能的便利性,而且还强调了利用现有资源和文档来增强项目的重要性。这种方法鼓励开发人员超越其项目的直接需求,并考虑如何集成其他功能以创建更通用和更强大的工具。

这些增强功能展示了该系统不仅能够执行文件上传等核心任务,而且还能够执行其他功能,所有这些都集成在 Langchain 框架中。辅助工具的加入 RunnableLambda 和辅助工具的引入体现了开发人员如何利用 Langchain 和 MinIO 的强大功能构建丰富的功能生态系统,这些功能协同工作以自动化和简化流程。

使用 Langchain 制作交互式聊天提示

随着我们深入研究 MinIO 与 Langchain 的集成,一个关键的方面是设计一种交互式体验,利用 MinIO 上传工具和我们集成的任何其他工具的功能。这就是创建变得 ChatPromptTemplate 至关重要的地方。它充当用户与系统之间交互的蓝图,指导对话流程并确保正确有效地解释用户的命令。

创建 ChatPromptTemplate

这是 ChatPromptTemplate Langchain 的一项强大功能,允许开发人员预定义聊天交互的结构。通过指定系统和用户在聊天中的角色,以及动态内容的占位符,我们可以创建一个灵活但可控的对话框架。以下是创建包含我们工具功能的聊天提示模板的方法:

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder


prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a powerful assistant equipped with file management capabilities."),
    ("user", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad"),
])

在此模板中:

  • 系统消息:来自“系统”的第一条消息设置交互的上下文,通知用户(或承担用户角色的语言模型)他们正在与具有文件管理功能的助手进行交互。这有助于构建用户的期望并指导他们的查询或命令。
  • 用户输入占位符:“ user ” 键后跟 “ {input} ”,作为用户实际输入的占位符。这种动态插入点使系统能够适应各种用户命令,从而方便执行各种文件管理任务。
  • Agent Scratchpad 的 MessagesPlaceholder:变量名称为 “ agent_scratchpad ” 的 MessagesPlaceholder 是聊天中的一个动态区域,可以在其中显示其他信息,例如工具执行或中间步骤的结果。此功能增强了聊天的交互性和响应能力,为用户提供实时反馈和结果。

设置聊天提示模板的这一步对于为我们的 Langchain 应用程序创建引人入胜且功能强大的用户界面至关重要。它不仅构建了交互,而且还无缝集成了我们的 MinIO 上传工具和任何其他工具的功能,使它们可以通过聊天环境中的自然语言命令访问。

将工具绑定到语言模型以增强功能

充分利用我们的 Langchain 应用程序潜力的一个关键步骤是将我们的自定义工具与语言模型集成。这种“自定义工具”的使用,以及类似的“工具使用”集成,使语言模型不仅能够理解和生成自然语言,而且还可以执行特定的功能,例如将文件上传到MinIO或计算单词的长度。通过将这些工具直接绑定到语言模型,我们创建了一个强大的多功能系统,能够处理用户输入并根据这些输入执行复杂的任务。

如何将工具绑定到语言模型

将工具绑定到语言模型 (LLM) 涉及创建我们定义为工具的函数列表,并使用 Langchain ChatOpenAI 类提供 bind_tools 的方法。此方法将我们的工具与语言模型的特定实例相关联,使它们可作为语言处理工作流的一部分进行调用。以下是实现此目的的方法:

tools = [upload_file_to_minio, get_word_length]
llm_with_tools = llm.bind_tools(tools)
  • 工具列表:我们首先定义一个名为 tools 的列表,其中包含我们用 @tool 修饰的函数。这包括我们 upload_file_to_minio 用于将文件上传到 MinIO 的功能以及作为辅助工具示例 get_word_length 的功能。您可以根据需要向此列表添加更多工具。
  • 绑定工具:该 bind_tools 方法获取工具列表并将它们绑定到 llm 实例。这将创建一个新的语言模型实例, llm_with_tools 该实例集成了我们的自定义工具。这种增强的语言模型现在可以解释与绑定工具提供的功能相关的命令,从而实现自然语言处理和任务执行之间的无缝交互。

这种将工具绑定到语言模型的过程对于创建交互式和功能性的 Langchain 应用程序至关重要。它弥合了自然语言理解和实际任务执行之间的差距,允许用户使用对话语言与系统交互以执行特定操作,例如 MinIO 中的文件管理。这种集成极大地扩展了 Langchain 应用程序的功能,为语言模型在各个领域的创新使用铺平了道路。

实施内存管理以增强用户交互

创建一个引人入胜且直观的 Langchain 应用程序需要的不仅仅是处理命令,它还需要一个能够记住和学习过去交互的系统。这就是内存管理变得至关重要的地方,使应用程序能够维护对话中的上下文,这对于处理复杂的查询和后续问题特别有用。

建立代理和执行程序框架

我们应用程序的核心是 AgentExecutor ,这是一种复杂的机制,旨在解释用户输入、管理任务并促进用户与系统之间的通信。为了设置它,我们需要合并 Langchain 的几个关键组件:

from langchain.agents import AgentExecutor
from langchain.agents.format_scratchpad.openai_tools import format_to_openai_tool_messages
from langchain.agents.output_parsers.openai_tools import OpenAIToolsAgentOutputParser

这种基础设置确保我们的应用程序具有必要的工具来执行任务、解释语言模型的输出以及有效地应用我们的自定义功能。

内存管理集成

为了通过上下文感知响应来丰富用户体验,我们更新了聊天提示模板,以包含内存管理功能。这涉及添加占位符,用于在我们的对话中存储和引用聊天记录:

from langchain_core.messages import AIMessage, HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a powerful assistant with memory capabilities."),
    MessagesPlaceholder(variable_name="chat_history"),
    ("user", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad"),
])

chat_history = []

这种调整使我们的应用程序能够动态地将以前的交互合并到正在进行的对话中,从而确保与用户进行有凝聚力且上下文丰富的对话。

使用情境感知优化代理

为了充分利用内存管理的优势,我们改进了座席的定义,以主动整合聊天记录。这包括定义处理输入的特定行为,管理座席的暂存器,以及将聊天记录纳入座席的决策过程:

agent = (
    {
        "input": lambda x: x["input"],
        "agent_scratchpad": lambda x: format_to_openai_tool_messages(x["intermediate_steps"]),
        "chat_history": lambda x: x["chat_history"],
    }
    | prompt
    | llm_with_tools
    | OpenAIToolsAgentOutputParser()
)


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

在此增强的代理设置中:

  • 自定义 Lambda 函数:代理利用 lambda 函数来处理用户的输入,管理存储在代理暂存器中的中间步骤,并将聊天历史记录无缝集成到对话流中。
  • 代理流水线程序集:通过使用流水线运算符 (|) 链接组件,我们创建了一个简化的流程,该流程接受用户的输入,用上下文历史记录丰富它,执行必要的工具,并解释输出以获得可操作的响应。
  • 使用 AgentExecutor 执行:AgentExecutor 使用我们的上下文感知代理和预定义工具进行初始化,并配备了详细的日志记录,以获得详细的操作见解。

使用上下文化代理交互执行文件上传

将 MinIO 文件上传集成到基于 Langchain 的应用程序中提供了一个对话式 AI 如何简化复杂操作的实际示例。当与内存管理结合使用时,此功能变得更加强大,使代理能够动态维护上下文并管理文件上传等任务。下面介绍如何设置和执行文件上传过程,演示应用程序解释和执行用户命令的能力。

定义用户提示和文件信息

首先,我们建立一个用户提示,指示系统执行所需的操作,在本例中,上传具有特定参数的文件。除此之外,我们还定义了文件信息的结构,包括存储桶名称、对象名称和要上传的文件的数据字节:

input1 = "Upload a text object with some funny name to the 'test' bucket with some example content"

file_info = {
    "bucket_name": "",
    "object_name": "",
    "data_bytes": b""
}

此设置不仅指定用户想要执行的操作,而且还以结构化格式封装 MinIO 上传操作的必要详细信息。

代理执行

定义了提示和文件信息后,我们继续通过代理模拟文件上传命令的执行。此模拟涉及 agent_executor 调用具有指定输入的输入,包括聊天历史记录以维护对话上下文:

result = agent_executor.invoke({"input": input1, "chat_history": chat_history, "file_info": file_info})

chat_history.extend([
    HumanMessage(content=input1),
    AIMessage(content=result["output"]),
])

在此过程中:

  • 调用代理执行器: agent_execution 使用包含用户输入、当前聊天记录和结构化文件信息的字典进行调用。此方法允许代理在会话上下文中理解命令,并访问文件上传操作的必要详细信息。
  • 更新聊天记录:执行命令后,我们会使用新的交互更新聊天记录。这包括将用户的输入记录为 a HumanMessage ,将系统的响应记录为 AIMessage .此步骤对于保持准确和全面的对话记录至关重要,可确保为将来的交互保留上下文。

此示例说明了对话式 AI 与云存储操作的无缝集成,展示了 Langchain 应用程序如何解释自然语言命令以执行文件上传等特定任务。通过维护对话上下文和动态管理文件信息,该系统提供了一种用户友好且高效的方式来与云存储服务进行交互,展示了将 AI 与云基础设施相结合的实际优势。

使用对话提示简化文件上传

将 Langchain 与 MinIO 集成以进行文件上传的显着特点之一是它在处理用户请求方面提供的灵活性。虽然 file_info 直接指定的详细方法提供了清晰度和控制力,但该系统还旨在从对话提示中理解和提取必要的信息。这意味着用户无需显式填写file_info结构即可启动文件上传,只需在 input1 提示中传达所有必需的信息即可。

通过自然语言简化文件上传

通过制作详细的提示,例如 input1 ,用户可以传达他们的意图,并在一条消息中提供文件上传的所有必要详细信息。该系统的底层智能由 Langchain 的处理能力提供支持,可解析此输入以提取可操作的数据,例如存储桶名称、对象名称和内容。这种方法模仿了自然的人类交流,使与应用程序的交互更加直观和用户友好。

input1 = "Upload a text object named 'funny_name.txt' with 'This is some example content.' to the 'test' bucket."

此提示简洁地传达了用户的意图,指定了对象名称、内容和目标存储桶,所有这些都在一个自然语言句子中完成。然后,应用程序处理此提示,动态生成上传操作所需的等效 file_info 提示。

利用 file_input 编程执行方法

对于以编程方式使用应用程序或将任务作为较大工作流的一部分自动执行任务的方案,扩展 file_input 该方法变得非常宝贵。此方法允许使用更结构化的方法来指定文件详细信息,使其成为应用程序的其他部分生成或修改提示的情况的理想选择。

在对话提示和编程指定 file_info 之间切换的灵活性展示了 Langchain 和 MinIO 集成的适应性。它使开发人员能够定制文件上传过程以满足其应用程序的需求,无论他们的目标是自然语言交互的简单性还是编程定义任务的精确性。

通过 Langchain 运行文件上传而无需手动填写 file_info 字符串的能力,而是依赖于自然语言提示的丰富性,显着增强了应用程序的可用性和可访问性。此功能与将该 file_input 方法用于更结构化的命令链的选项相结合,体现了该系统在满足不同用户需求和操作环境方面的多功能性。

将这一切结合在一起:图片中的证明

随着我们通过 Langchain 的功能和 MinIO SDK 达到旅程的顶峰,是时候反思我们工作的切实成果了。Langchain 的强大功能不仅在于它能够促进复杂的任务,还在于其有形的、可见的结果,我们可以在提供的屏幕截图中观察到这一点。

第一个屏幕截图提供了 MinIO 存储桶的清晰视图,展示了由于我们的LLM工具使用和代理交互而成功创建的对象。列出的对象,包括“funny_object”、“minio-action”和“proof-of-concept”,证明了我们指南的实际应用。这一视觉证据强调了使用 Langchain 在像 MinIO 这样的强大对象存储系统中管理和组织数据的有效性。

5.jpeg

6.jpeg

在第二张截图中,我们目睹了 Langchain 代理的运行情况。AgentExecutor 链的跟踪详细说明了调用步骤,清楚地标记了每个任务的成功。在这里,我们看到代理操作的顺序,从链的启动到文件上传的成功执行。此输出为用户提供了流程的透明视图,从而提供了对操作中每个阶段的保证和理解。

总之,这些视觉效果不仅可以作为概念证明,还可以说明Langchain代理LLMs和MinIO存储之间的无缝集成和交互。作为开发人员和创新者,这些见解非常宝贵,为完善、优化和扩展我们的应用程序提供了清晰的途径。这就是结合这些技术的真正美妙之处:创造一个对话式人工智能与实际执行相结合的世界,从而实现高效和智能的工具使用,从而突破了我们利用现代技术所能实现的界限。

拥抱未来:Langchain和MinIO的智能自动化

Langchain复杂的语言理解和MinIO强大的对象存储之间的相互作用已经通过实际示例和视觉证据得到了生动的证明。从概念解释到实际任务执行的旅程说明了当它们被微调并与云原生技术集成LLMs时,它们具有变革的潜力。由此产生的协同效应不仅简化了复杂的数据操作,还丰富了用户体验,提供了与数字环境的直观和智能交互。

当我们反思 Langchain 代理和 MinIO SDK 的能力时,工具开发的未来LLMs看起来很有希望,充满了创新和效率的机会。无论您是经验丰富的开发人员还是好奇的新手,前进的道路都很明确:人工智能与云存储的集成不仅是向更高级应用程序的飞跃,而且是迈向智能自动化新时代的一大步。有了正确的工具和理解,我们可以在这个令人兴奋的领域取得无限的进步。

我们很高兴能陪伴您踏上 Langchain 和 MinIO 的旅程。当您浏览这些技术的复杂性时,请知道我们的社区随时为您提供支持。如有任何疑问,请在 Slack 上与我们联系,或分享你的进度。我们随时准备为您提供帮助或只是庆祝您的成功。

对于那些已经做到了这一点并渴望深入了解实际实施的人,请不要忘记查看随附的笔记本以获得实践经验;在此处访问笔记本。

在这里,我们要打造未来,一次一个创新的解决方案!

上一篇 下一篇