AI - 使用LangChain构建简单LLM应用程序

AI - 使用LangChain构建简单LLM应用程序

ai-langchain

什么是LLM

LLM(Large Language Model,大型语言模型)是一种由大量文本数据训练而成的深度学习模型,能够理解和生成自然语言。例如,GPT-3就是一种流行的LLM,可以用于执行各种自然语言处理任务,如语言翻译、文本生成、问答系统等。这些模型在理解和生成自然语言方面表现出色,因其可以处理复杂的语言任务而备受关注。

A large language model (LLM) is a type of computational model designed for natural language processing tasks such as language generation. As language models, LLMs acquire these abilities by learning statistical relationships from vast amounts of text during a self-supervised and semi-supervised training process.

– From Wikipedia

什么是LangChain

LangChain是一个强大的框架,旨在简化与大型语言模型(LLM)的交互。这一框架为开发人员提供了结构化的方式来调用和操作语言模型,从而增加开发效率和应用程序的可维护性。

LangChain is a software framework that helps facilitate the integration of large language models (LLMs) into applications. As a language model integration framework, LangChain’s use-cases largely overlap with those of language models in general, including document analysis and summarization, chatbots, and code analysis.

– From Wikipedia

LangChain 的组成部分

LangChain 主要由以下几个核心组件构成:

  1. 模型(Models)
    • OpenAI:一个具体实现 LLM 接口的类,用于与 OpenAI 的 API 交互。
    • 其他 LLM 提供商:可以扩展以支持不同的 LLM 提供商,如 Hugging Face 等。
  2. 链(Chains)
    • LLMChain:这是 LangChain 的核心功能模块,负责处理输入、构建请求、调用 LLM 提供商的 API 并返回处理后的响应。它提供了一个统一的接口来与不同的 LLM 提供商交互。
  3. 提示工程(Prompt Engineering)
    • 模板(Templates):模板用于定义如何构建请求的格式和结构,帮助规范化输入数据,从而使 LLM 可以更加准确地理解和处理请求。
  4. 中间件和工具(Middleware & Tools)
    • 错误处理:提供内置的错误处理机制,确保在遇到错误时能够优雅地恢复和处理。
    • 日志记录:记录 API 请求和响应的日志,以便进行调试和分析。
    • 缓存:支持请求的缓存机制,以提升响应速度和减少 API 调用次数。

为什么使用LangChain

使用LangChain有以下几个主要优点:

  1. 简化与LLM的交互:LangChain提供了一套抽象层,使得与LLM的交互变得更加简便。
  2. 提高代码可读性和可维护性:通过LangChain,开发者可以使用清晰、结构化的代码,与传统上直接调用API的方式相比,代码更加易读和易维护。
  3. 可扩展性和灵活性:LangChain支持多种LLM提供商,并且可以根据需求进行扩展,非常适合多种应用场景。

LangChain 的设计宗旨是为开发人员与大型语言模型交互提供方便、灵活和高效的解决方案。通过利用其抽象层和工具,开发人员可以专注于核心业务逻辑的实现,提升开发效率并确保应用的可靠性,这也是为什么在开发 LLM 应用时推荐使用 LangChain 的原因,就像和web服务器交互一样,客户端使用http client library,而不会去直接按照http协议去拼写http文本。

示例应用

目前,由于OpenAI对中国地区已经不在开放API Key,本文选择使用Groq作为LLM。Groq是一家Fast AI Inference公司,更多信息请参考其官网。

以下我们将利用LangChain和Groq API创建一个简单的JavaScript应用程序,实现将英文单词翻译为其他语言的功能。

第一步:设置开发环境

首先,创建一个新目录并进入该目录:

mkdir langchain-translation-app
cd langchain-translation-app

初始化一个新的Node.js项目:

npm init -y

安装必要的依赖:

# 安装langchain
npm install langchain @langchain/core --save# 安装groq的langchain开发包
npm install @langchain/groq  --save# 安装环境变量配置库
npm install dotenv --save

第二步:创建项目结构

创建项目所需的文件和目录结构:

langchain-translation-app
├── index.js
├── .env
└── package.json

第三步:配置环境变量

在项目目录中创建一个 .env 文件,并添加Groq API密钥:

GROQ_API_KEY=your_groq_api_key_here

第四步:编写主应用程序

index.js 中编写应用程序代码,配置LangChain并创建翻译功能。

// 引入LangChain开发包
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
import { StringOutputParser } from "@langchain/core/output_parsers";
import { ChatGroq } from "@langchain/groq";import readline from "readline";
import dotenv from "dotenv";// 加载 .env 文件中的环境变量GROQ_API_KEY
dotenv.config();// 配置Groq LLM
const model = new ChatGroq({model: "mixtral-8x7b-32768",temperature: 0,
});// 创建翻译功能
async function translateWord(word, targetLanguage) {try {/// 构建Prompt Messageconst messages = [new SystemMessage(`Translate the following from English into ${targetLanguage}`),new HumanMessage(`${word}`),];/// 调用LLM API 进行翻译const result = await model.invoke(messages);/// 对返回结果进行解析const parser = new StringOutputParser();const answer = await parser.invoke(result);return answer;} catch (error) {console.error("翻译时出错:", error);}
}const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});console.log("欢迎使用LangChain单词翻译应用程序");
console.log("请输入要翻译的单词,并按回车键确认。");rl.on("line", async (input) => {const [word, targetLanguage] = input.split(" to ");if (!word || !targetLanguage) {console.log('输入格式错误,请使用 "word to language" 的格式,例如 "hello to Spanish"。');return;}const translation = await translateWord(word, targetLanguage);console.log(`翻译结果: ${translation}`);console.log("\n请输入其他单词或按 Ctrl+C 退出。");
});

时序图如下:

langchain-translation-app-seq.png

通过上述序列图,我们详细展示了LangChain在处理用户输入并与LLM(如OpenAI,GroqAI)进行交互时的工作流程。LangChain简化了与LLM的交互过程,通过抽象和模板使开发者能够高效地构建语言模型应用程序。在实际开发中,LangChain不仅提升了开发效率,还增强了应用的稳定性和可靠性。

第五步:运行应用程序

用以下命令或者npm start运行应用程序:

node index.js

应该会在终端中看到一个提示,要求输入要翻译的单词。输入单词及其目标语言后,应用程序将调用LangChain和LLM API进行翻译,并输出结果。

bash-3.2$ npm start> langchain-translation-app@1.0.0 start
> node index欢迎使用LangChain单词翻译应用程序
请输入要翻译的单词,并按回车键确认。

西班牙语翻译

> hello to Spanish
翻译结果: HolaThat is the correct translation of "hello" into Spanish. "Hola" is a common greeting used in Spanish-speaking countries, similar to how "hello" is used in English-speaking countries. It can be used in both formal and informal settings, making it a versatile and widely-used greeting.请输入其他单词或按 Ctrl+C 退出。

汉语翻译

> hello to Chinese
翻译结果: 你好 (nǐ hǎo)This is the most common way to say "hello" in Chinese. It can be used in both formal and informal situations.请输入其他单词或按 Ctrl+C 退出。

总结

ai-quotes-1

在本文中,我们使用LangChain和JavaScript创建了一个简单的单词翻译应用程序,通过配置Groq API并使用LangChain框架,我们能够轻松构建出功能强大的语言模型应用程序。在这个基础上,您可以扩展该应用程序,以支持更多的功能和更复杂的应用场景。希望本文对您有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/464644.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux shell脚本学习(1):shell脚本基本概念与操作

1.什么是shell脚本 linux系统中,shell脚本或称之为bash shell程序,通常是由vim编辑,由linux命令、bash shell指令、逻辑控制语句、注释信息组成的可执行文件 *linux中常以.sh后缀作为shell脚本的后缀。linux系统中文件乃至脚本的后缀并没有…

Linux云计算 |【第五阶段】CLOUD-DAY6

主要内容: 了解Kubernetes的架构、搭建Kubernetes集群 一、Kubernetes 概述 Kubernetes 这个名字来自希腊语,意思是“舵手”或“领航员”;K8S 是 Kubernetes 的缩写,其中“8”代表字母“ubernete”中的8个字母。Kubernetes 是由…

无人机之中继通信技术篇

一、定义与原理 无人机中继通信技术是指通过无人机搭载中继设备,将信号从一个地点传输到另一个地点,从而延长通信距离并保持较好的通信质量。其原理类似于传统的中继通信,即在两个终端站之间设置若干中继站,中继站将前站送来的信号…

【深度学习基础】深入理解 卷积与卷积核

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 卷积 1.1 …

数字身份发展趋势前瞻:身份韧性与安全

身份韧性与安全是身份与访问管理IAM发展的重要趋势,身份既是防御者的盾牌,也是攻击者的目标。面对日益复杂的网络威胁和不断增长的身份盗窃风险,身份韧性与安全不仅仅涉及产品的防御能力,还包括应对突发事件、快速恢复的弹性和灵活…

QChart中柱形图的简单使用并实现【Qt】

预备工作 如果qt没下载去下载一个,下载太慢了可以试试它[点击跳转]  (https://blog.csdn.net/qq_19319481/article/details/131655379)。   如果已经下载了qt发现自己的组件中没有QCharts,可以去试试它点击跳转。 都搞定了以后在pro文件里面添加QT …

智能语音机器人智能在哪里?AI人工智能电话机器人部署

随着科技的不断进步,人工智能已经成为了我们生活中不可或缺的一部分。AI人工智能机器人电话正是其中的一种形式,可以帮助企业或组织更好地实现电话营销的目标,那么智能语音机器人智能在哪里?我们来看看: 智能语音机器人&#xf…

UI自动化测试 —— CSS元素定位实践!

前言 自动化测试元素定位是指在自动化测试过程中,通过特定的方法或策略来准确识别和定位页面上的元素,以便对这些元素进行进一步的操作或断言。这些元素可以是文本框、按钮、链接、图片等HTML页面上的任何可见或不可见的组件。 在自动化测试中&#xf…

Unity 使用Netcode实现用户登录和登出

Unity之NetCode for GameObjets 基本使用 说明思路相关API代码实现Tips 说明 最近项目需要联机,项目方案选用Unity提供的NetCode for GameObjets(以下简称NGO),踩了不少坑,本文不介绍基础使用,围绕双端&…

专业网页设计服务重要是什么

当在搜索引擎中键入“网页设计”,您将获得超过2000万个相关结果。在如此众多的网站制作公司中,应该如何做出明智的选择呢?首先,让我们深入探讨一下网页设计的重要性。网站设计需要综合各种不同领域的专业知识,它是一个…

【UART异步串口协议及verilog实现】

UART异步串口协议 1 UART1.1 数据格式1.2 波特率 2 UART的发送和接收模块2.1 uart发送模块2.2 uart的接收模块 【博客首发于微信公众号《 漫谈芯片与编程》】 本篇文章介绍常用的芯片外围低速协议:UART; 1 UART UART是异步串行传输协议,即…

彻底解决idea不识别java项目

需求背景 下载了一个java swing的项目,通过idea导入后,项目无法识别。打开java文件,也不会报错,也不编译。 无法识别效果图 可以看到左侧的菜单,项目是没有被识别。 打开java文件,可以看到没有识别,java的图标也没有出现。 解决方法 1、打开Project Structure 2、修改…

仿真APP助力汽车零部件厂商打造核心竞争力

汽车零部件是汽车工业的基石,是构成车辆的基础元素。一辆汽车通常由上万件零部件组成,包括发动机系统、传动系统、制动系统、电子控制系统等,它们共同确保了汽车的安全、可靠性及高效运行。 在汽车产业快速发展的今天,汽车零部件…

【Nginx】前端项目开启 Gzip 压缩大幅提高页面加载速度

背景 Gzip 是一种文件压缩算法,减少文件大小,节省带宽从而提减少网络传输时间,网站会更快更丝滑。 // nginx roothcss-ecs-1d22:/etc/nginx# nginx -v nginx version: nginx/1.24.0// node ndde v18.20.1// dependencies "vue": …

【Linux】从零开始使用多路转接IO --- epoll

当你偶尔发现语言变得无力时, 不妨安静下来, 让沉默替你发声。 --- 里则林 --- 从零开始认识多路转接 1 epoll的作用和定位2 epoll 的接口3 epoll工作原理4 实现epollserverV1 1 epoll的作用和定位 之前提过的多路转接方案select和poll 都有致命缺点…

CSS中常见的两列布局、三列布局、百分比和多行多列布局!

目录 一、两列布局 1、前言: 2. 两列布局的常见用法 两列布局的元素示例: 代码运行后如下: 二、三列布局 1.前言 2. 三列布局的常见用法 三列布局的元素示例: 代码运行后如下: 三、多行多列 1.前言 2&…

DCRNN解读(论文+代码)

一、引言 作者首先提出:空间结构是非欧几里得且有方向性的,未来的交通速度受下游交通影响大于上游交通。虽然卷积神经网络(CNN)在部分研究中用于建模空间相关性,但其主要适用于欧几里得空间(例如二维图像&a…

StandardThreadExecutor源码解读与使用(tomcat的线程池实现类)

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java源码解读-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 目录 1.前言 2.线程池基础知识回顾 2.1.线程池的组成 2.2.工作流程 2…

Unreal5从入门到精通之如何解决在VR项目在头显中卡顿的问题

前言 以前我们使用Unity开发VR,Unity提供了非常便利的插件和工具来做VR。但是由于Unity的渲染效果不如Unreal,现在我们改用Unreal来做VR了,所有的VR相关的配置和操作都要重新学习。 今天就来总结一下,我在开发VR过程中碰到的所有问题。 1.编辑器,以VR运行 默认运行方式…

centos7 kafka高可用集群安装及测试

前言 用三台虚拟机centos7 搭建高可用集群,及测试方法 高可用搭建的方法,参考:https://blog.csdn.net/u011197085/article/details/134070318 高可用搭建 1、安装配置zookeeper集群 下载zookeeper 注:zookeeper链接如果失效&a…