首页 > 其他分享 >前端大模型入门:掌握langchain的核心Runnable接口(一)

前端大模型入门:掌握langchain的核心Runnable接口(一)

时间:2024-09-17 22:24:06浏览次数:12  
标签:Runnable 入门 自定义 模型 Langchain langchain 接口 input

在构建复杂的对话式AI应用程序时,Langchain 是一个绕不开的工具,它帮助开发人员轻松地处理各种语言模型的集成与管理。v0.3 是该框架的一个重要版本,它进一步优化了功能,提升了在JavaScript/TypeScript环境下的易用性。

本文将介绍Langchain v0.3 的核心功能,并特别着重于其 Runnable 接口,为前端小伙伴提供一个入门的引导。

Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。在最新的 v0.3 版本中,引入了一个强大的接口——Runnable。该接口提供了一个灵活的执行方式,可以与不同类型的模型和逻辑无缝集成。

本文将重点讲解 Runnable 接口,并通过实现一个自定义的 Runnable 来帮助前端人员快速上手。

一. 什么是 Runnable

Runnable 是 Langchain.js v0.3 中的一个核心接口,它代表了一个可以被执行的操作。通过这个接口,开发人员可以将模型、处理逻辑或其他任务封装为可执行对象,方便统一管理和使用。

Runnable 的基本特性包括:

  • 输入与输出类型:可以灵活设置输入和输出的数据格式。
  • 链式调用Runnable 可以被连接起来,形成执行链。
  • 异步支持:它支持异步操作,方便与 API 或模型交互。

简而言之,Runnable 是一个抽象概念,可以帮助我们在复杂的前端应用中更好地组织代码逻辑。

二. Runnable 接口的基本用法

Langchain.js 中的 Runnable 提供了一个基础接口,允许我们定义任何类型的执行逻辑。它的核心方法是 invoke,该方法接收输入数据并返回执行结果。

interface Runnable { invoke(input: any): Promise<any>; }

通过实现这个接口,我们可以将各种自定义逻辑封装到一个 Runnable 中。

举例:自定义 Runnable

假设我们有一个简单的需求:将用户输入的文本进行大写转换,并输出转换后的结果。我们可以通过实现一个自定义的 Runnable 来完成这一任务。

import { Runnable } from 'langchain'; 
class UppercaseRunnable implements Runnable { 
    async invoke(input: string): Promise<string> { // 将输入的字符串转换为大写 return             
        input.toUpperCase(); 
    } 
}

在这个例子中,我们创建了一个 UppercaseRunnable 类,它实现了 Runnable 接口,并在 invoke 方法中将输入的字符串转换为大写。

三. 将自定义模型与 Runnable 集成

除了处理简单的字符串操作,我们还可以通过 Runnable 接口将第三方模型或 API 集成到我们的前端应用中。接下来,我们来实现一个稍复杂的例子:通过 Runnable 封装一个自定义的文本分类模型。

实现自定义模型的 Runnable

假设我们有一个文本分类模型,它通过某个 API 进行分类任务。我们可以将这个模型封装到一个 Runnable 中,便于在前端应用中使用。

import { Runnable } from "langchain";
class TextClassificationRunnable implements Runnable {
    private apiUrl: string;
    constructor(apiUrl: string) {
        this.apiUrl = apiUrl;
    }
    async invoke(input: string): Promise<string> {
        const response = await fetch(this.apiUrl, {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({ text: input }),
        });
        const data = await response.json();
        return data.category;
    }
}

在这个示例中,TextClassificationRunnable 类将文本发送到指定的 API 进行分类,并返回分类结果。通过这种方式,我们可以很方便地将模型 API 封装在前端应用中。

使用自定义的 Runnable

现在我们已经实现了两个不同的 Runnable,我们可以将它们结合起来,构建一个简单的执行链。在这个链中,我们将首先将用户输入的文本转换为大写,然后进行文本分类。

async function main() {
    const uppercaseRunnable = new UppercaseRunnable();
    const textClassificationRunnable = new TextClassificationRunnable(
        "https://api.com/v1"
    );
    const input = "hello world"; // 首先将文本转换为大写
    const uppercasedInput = await uppercaseRunnable.invoke(input); // 然后将大写文本发送到分类模型
    const category = await textClassificationRunnable.invoke(uppercasedInput);
    console.log(`分类结果: ${category}`);
}
main();

在这个例子中,我们展示了如何通过 Runnable 接口组合不同的操作,使得代码逻辑更加清晰且可复用。

四 小结

通过 Runnable 接口,Langchain.js v0.3 为前端开发人员提供了一种简洁而强大的方式来封装和管理复杂的逻辑。无论是简单的文本处理任务,还是与第三方模型的集成,Runnable 都能提供足够的灵活性。

对于前端开发人员而言,学习和掌握 Langchain.js 的 Runnable 接口,不仅可以提升开发效率,还可以帮助我们更好地构建现代化的 AI 驱动应用。

        后续将介绍Runnable的stream接口

看上多不如动动手,赶快试试吧,开始你的 AI 应用开发之旅吧!

标签:Runnable,入门,自定义,模型,Langchain,langchain,接口,input
From: https://blog.csdn.net/m0_38015699/article/details/142318923

相关文章

  • Vue.js入门系列(三十一):Element-UI的基本使用与按需引入、Vue 3简介及使用 Vue CLI 与 V
    个人名片......
  • Vue.js入门系列(三十):深入理解独享路由守卫、组件内路由守卫、History模式与Hash模式
    个人名片......
  • STM32F407单片机编程入门(三)ADC详解及实战含源码
    文章目录一.概要二.STM32F407VET6单片机ADC外设特点三.STM32单片机ADC内部结构图1.ADC相关引脚说明2.ADC通道分类3.触发源4.转换周期5.电压转换计算6.更精确电压转换计算四.规则通道ADC采集信号流向1.单次转换模式2.连续转换模式五.CubeMX配置一个ADC采集例程六.CubeMX......
  • C#数据结构与算法实战入门指南
    前言在编程领域,数据结构与算法是构建高效、可靠和可扩展软件系统的基石。它们对于提升程序性能、优化资源利用以及解决复杂问题具有至关重要的作用。今天大姚分享一些非常不错的C#数据结构与算法实战教程,希望可以帮助到有需要的小伙伴。C#经典十大排序算法主要讲解C#经典......
  • 大数据技术原理与应用——从入门到文档数据库
    大数据技术原理与应用3次信息化的浪潮研究问题的四个阶段大数据技术的层次大数据的计算模式PaaS物联网的概念云计算、大数据、物联网之间的关系Hadoop应用现状选择Hdoop需要考虑的因素Hadoop的定量评分(满分为5分)总体评价Ubuntu的一些基本知识(之所以不......
  • 快速入门 QT5 C++基础
    1.QT5中文显示乱码方法一:system("chcp65001");//放在主函数中方法二:首先引入库  #include"windows.h"再在主函数中写 SetConsoleOutputCP(CP_UTF8);2.什么是类,如何创建一个类#include<iostream>#include"windows.h"usingnamespacestd;classDog{/......
  • c++入门(七万字心得体会!!)分上下两篇(初阶+进阶)
    目录c++入门c++关键字命名空间命名空间定义命名空间使用c++输入输出缺省参数缺省参数概念缺省参数分类函数重载函数重载概念c++支持函数重载原理--名字修饰(name)引用引用概念引用特性常引用使用场景传值,传引用效率对比引用和指针的区别内联函数概念特性a......
  • WPF入门教学二 安装与配置WPF开发环境
    在安装与配置WPF(WindowsPresentationFoundation)开发环境时,您需要遵循一系列步骤来确保一切顺利进行。WPF是微软提供的一个强大的UI框架,用于构建Windows桌面应用程序。以下是详细的安装与配置指南:安装VisualStudio访问官方网站:访问MicrosoftVisualStudio官网,下载并安装适......
  • STM32入门教程:智能电机控制
    智能电机控制是STM32入门教程中的重要内容之一。本教程将以详细的代码案例来介绍如何使用STM32来控制智能电机。在开始之前,我们需要了解一些基本概念。智能电机通常由电机与控制器组成,控制器使用STM32等微控制器来实现对电机的控制。电机控制的最常见方式是使用PWM(脉宽调制)信......
  • STM32入门教程:身份证识别
    身份证识别是一种常见的图像处理应用,能够通过识别身份证上的文字信息,以获取身份证号码、姓名等重要个人信息。在本教程中,我们将使用STM32微控制器和相关的图像处理算法,来实现身份证识别功能。硬件准备首先,我们需要准备一块STM32开发板,以及相应的图像传感器。你可以选择使用......