当前位置: 首页 > news >正文

使用LangChain创建简单的语言模型应用程序【快速入门指南】

## 引言在这篇文章中,我们将展示如何使用LangChain构建一个简单的语言模型(LLM)应用程序。这个应用程序的功能是将文本从英语翻译成其他语言。尽管应用程序的逻辑相对简单,但它能够帮助我们学习如何使用LangChain进行更多复杂的功能开发。### 文章目的通过阅读本教程,你将掌握以下内容:- 如何使用语言模型
- 如何使用PromptTemplates和OutputParsers
- 如何使用LangChain Expression Language (LCEL)连接组件
- 如何使用LangSmith调试和跟踪应用程序
- 如何用LangServe部署应用程序让我们开始吧!## 主要内容### 环境设置#### Jupyter Notebook本指南推荐在Jupyter Notebook中运行,便于交互式学习LLM系统。点击[这里](https://jupyter.org/install)获取安装说明。#### 安装LangChain通过以下命令安装LangChain:```bash
pip install langchain
conda install langchain -c conda-forge

使用语言模型

首先,我们学习如何使用一个语言模型。LangChain支持多种模型,你可以根据需要选择。

OpenAI模型示例
pip install -qU langchain-openaiimport getpass
import osos.environ["OPENAI_API_KEY"] = getpass.getpass()  # 获取API密钥from langchain_openai import ChatOpenAImodel = ChatOpenAI(model="gpt-4")
调用模型
from langchain_core.messages import HumanMessage, SystemMessagemessages = [SystemMessage(content="Translate the following from English into Italian"),HumanMessage(content="hi!"),
]model.invoke(messages)  # 使用API代理服务提高访问稳定性

OutputParsers

为了提取模型的响应字符串,我们可以使用OutputParser。

from langchain_core.output_parsers import StrOutputParserparser = StrOutputParser()
result = model.invoke(messages)
parser.invoke(result)

Prompt Templates

PromptTemplates用于将用户输入转换为可传递给模型的格式。

from langchain_core.prompts import ChatPromptTemplatesystem_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([("system", system_template), ("user", "{text}")]
)

LCEL连接组件

利用LCEL,我们可以将PromptTemplate、模型和OutputParser串联在一起。

chain = prompt_template | model | parser
chain.invoke({"language": "italian", "text": "hi"})

LangServe部署应用程序

创建一个名为serve.py的文件,并添加以下代码以启动服务器:

from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from langserve import add_routessystem_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([('system', system_template),('user', '{text}')
])model = ChatOpenAI()
parser = StrOutputParser()chain = prompt_template | model | parserapp = FastAPI()add_routes(app, chain, path="/chain")if __name__ == "__main__":import uvicornuvicorn.run(app, host="localhost", port=8000)

启动服务器:

python serve.py

常见问题和解决方案

  • API访问问题:如果在某些地区访问API困难,可以考虑使用代理服务。
  • 调试问题:使用LangSmith可以更好地跟踪和调试应用程序。

总结和进一步学习资源

通过本教程,你已经学会了如何使用LangChain创建简单的LLM应用程序。要深入学习以下内容:

  • LangChain Expression Language (LCEL)
  • Prompt Templates
  • LangServe部署指南

参考资料

  • LangChain官方文档:链接
  • FastAPI文档:链接

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---

相关文章:

使用LangChain创建简单的语言模型应用程序【快速入门指南】

## 引言在这篇文章中,我们将展示如何使用LangChain构建一个简单的语言模型(LLM)应用程序。这个应用程序的功能是将文本从英语翻译成其他语言。尽管应用程序的逻辑相对简单,但它能够帮助我们学习如何使用LangChain进行更多复杂的功…...

嵌入式人工智能项目及人工智能应用项目——大合集列表查阅

本文的项目合集列表可能更新不及时(会及时更新),可查阅实时更新的链接如下。 嵌入式人工智能及人工智能应用项目合集实时更新链接如下: 阿齐嵌入式人工智能及人工智能应用项目合集 (kdocs.cn)https://www.kdocs.cn/l/cc97tuieys4…...

心觉:成功学就像一把刀,有什么作用关键在于使用者(一)

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作173/1000天 很多人觉得成功学是鸡汤,是没用的,甚至是骗人的 我先保持中立,不知道对不对 我们先…...

GAMES101(10节,几何)

Geometry implicit隐式几何表示&#xff1a; 函数f(x,y,z)&#xff1a; 根据函数fn描述几何&#xff0c;遍历所有空间内 的点&#xff0c;如果带入xyz到函数f(x,y,z)结果0那就绘制这个点 如果xyz求值结果>0表示在几何外&#xff0c;0在表面,<0在几何内 构造几何csg(…...

Android 中音频焦点的使用场景及示例

Android 中音频焦点的使用场景及代码示例 一、音频焦点简介 在 Android 系统中&#xff0c;音频焦点&#xff08;Audio Focus&#xff09;是一种机制&#xff0c;用于管理多个应用程序同时播放音频时的冲突。当一个应用程序请求音频焦点并获得它时&#xff0c;其他应用程序在…...

2. JDBC驱动是什么?如何在Java项目中配置MySQL的JDBC驱动?

JDBC驱动 是一种软件组件&#xff0c;它使Java应用程序能够与数据库进行交互。JDBC驱动是JDBC API的实现&#xff0c;负责将Java程序中的标准JDBC方法调用转化为数据库特定的操作。每个数据库&#xff08;如MySQL、PostgreSQL、Oracle等&#xff09;都有对应的JDBC驱动程序&…...

Nginx 跨域 + 无法设置 Cookie 解决办法

今天来分享一下关于项目部署上线时怎么解决跨域问题!!! 首先感谢一下大佬的方法,才让这个困扰我很久的问题得以解决!!! 这也是我请教大佬才解决的问题,大佬和我说,这是他耗费两周才解决的问题,我这也是属于前人栽树后人乘凉了,嘿嘿嘿!!! 前端问题 前端没有携带 cookie 导致后端…...

北森笔试测评之言语理解到底难不难

前篇笔记我提到过&#xff0c;言语理解是最难的&#xff0c;有同学质疑了。言语我都会做呀&#xff0c;甚至有的可以搜到&#xff0c;而图标和图形我有的不会。这里需要指出&#xff0c;会做不等于作对&#xff0c;可以回顾到高中甚至初中的时候&#xff0c;感觉做的好的一般都…...

Ubuntu下beanstalkd无法绑定局域网IP地址以及消息队列beanstalkd上的error: JOB_TOO_BIG的解决

一、ubuntu下beanstalkd无法绑定局域网IP地址 今天因为业务需要&#xff0c;我把之前安装的beanstalkd所绑定的IP地址由127.0.0.1改成局域网IP地址&#xff0c;但是怪了&#xff0c;显示beanstalkd已经启动&#xff0c;查看端口监控也显示IP地址变了&#xff0c;但是使用telnet…...

网络原理(3)—— 应用层、传输层(TCP)

1. 应用层 日常开发中最常用到的一层&#xff0c;主要涉及到两种情况&#xff1a; 1) 使用现成的应用层协议 2) 自己定义应用层协议 1.1 自定义应用层协议的流程 1. 明确前后端交互过程中需要传递哪些信息 实例&#xff1a;开发一个外卖软件 打开软件&#xff0c;首先需要展…...

Flutter - Win32程序是如何执行main函数

Win32程序的主体结构 int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev,_In_ wchar_t *command_line, _In_ int show_command) {// Attach to console when present (e.g., flutter run) or create a// new console when running with a debugger.if …...

linux-系统管理与监控-日志管理

Linux 系统管理与监控&#xff1a;日志管理 1. 日志管理概述 日志文件是系统在运行过程中记录的各种信息&#xff0c;它们是系统管理员排查问题、监控系统健康状况的重要工具。在 Linux 系统中&#xff0c;日志涵盖了系统事件、内核信息、用户操作、软件服务和应用程序等内容…...

VulhubDC-4靶机详解

项目地址 https://download.vulnhub.com/dc/DC-4.zip实验过程 将下载好的靶机导入到VMware中&#xff0c;设置网络模式为NAT模式&#xff0c;然后开启靶机虚拟机 使用nmap进行主机发现&#xff0c;获取靶机IP地址 nmap 192.168.47.1-254根据对比可知DC-4的一个ip地址为192.1…...

[数据集][目标检测]烟叶病害检测数据集VOC+YOLO格式612张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;612 标注数量(xml文件个数)&#xff1a;612 标注数量(txt文件个数)&#xff1a;612 标注类别…...

Sapiens——人类视觉大模型的基础

引言 大规模预训练以及随后针对特定任务的语言建模微调取得了显著成功&#xff0c;已将这种方法确立为标准做法。同样&#xff0c; 计算机视觉方法正逐步采用大规模数据进行预训练。LAION5B、Instagram-3.5B、JFT-300M、LVD142M、Visual Genome 和 YFCC100M 等大型数据集的出现…...

《深度学习》【项目】 OpenCV 身份证号识别

目录 一、项目实施 1、自定义函数 2、定位模版图像中的数字 1&#xff09;模版图二值化处理 运行结果&#xff1a; 2&#xff09;展示所有数字 运行结果&#xff1a; 3、识别身份证号 1&#xff09;灰度图、二值化图展示 运行结果 2&#xff09;定位身份证号每一个数…...

机器学习实战—天猫用户重复购买预测

目录 背景 数据集 用户画像数据 用户行为日志数据 训练数据 测试数据 提交数据 其它数据 数据探索 导入依赖库 读取数据 查看数据信息 缺失值分析 数据分布 复购因素分析 特征工程 模型训练 模型验证 背景 商家有时会在特定日期,例如节礼日(Boxing-day),黑…...

一款rust语言AI神器cursor在ubuntu环境下的安装启动教程

虽然cursor目前只支持英文但是它强大的代码联想能力以及问答能力&#xff0c;可以高效的提高编码效率。 如下步骤所有的前提是你的ubuntu上面已经安装了vscode以及其必须的extensions。 1 下载 到官网https://www.cursor.com下载指定版本的软件。 下载到本地以后会生成如下软…...

【C#生态园】发现C#中的数据科学魔法:6款不可错过的库详解

探索C#中的数据科学与机器学习&#xff1a;6个强大库解析 前言 在数据科学和机器学习领域&#xff0c;Python一直占据着主导地位&#xff0c;然而对于习惯使用C#编程语言的开发人员来说&#xff0c;寻找适用于C#的数据科学库一直是一个挑战。本文将介绍几个流行的用于C#的数据…...

导入neo4j数据CSV文件及csv整理demo示例

Neo4j导入CSV文件&#xff08;实体和关系&#xff09;_neo4j导入csv关系-CSDN博客 https://blog.csdn.net/m0_69483514/article/details/131296060?spm1001.2101.3001.6661.1&utm_mediumdistribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ER…...

LVGL模拟器不止能看Demo:在Ubuntu里用VSCode调试和修改官方例程的实战技巧

LVGL模拟器深度开发指南&#xff1a;在Ubuntu与VSCode中实现高效UI调试 当你在嵌入式设备上开发LVGL界面时&#xff0c;是否经历过反复烧录、调试的漫长等待&#xff1f;模拟器开发可以彻底改变这种低效的工作流程。本文将带你超越简单的Demo演示&#xff0c;探索如何将LVGL模…...

零门槛构建专属A股数据平台:3大优势+4步部署+5类应用场景

零门槛构建专属A股数据平台&#xff1a;3大优势4步部署5类应用场景 【免费下载链接】AShareData 自动化Tushare数据获取和MySQL储存 项目地址: https://gitcode.com/gh_mirrors/as/AShareData 还在为量化研究时反复下载数据而抓狂&#xff1f;每次回测都要等待API响应&a…...

qmc-decoder:快速解锁QQ音乐加密文件的终极指南

qmc-decoder&#xff1a;快速解锁QQ音乐加密文件的终极指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经从QQ音乐下载了心爱的歌曲&#xff0c;却发现只能在特…...

打破平台壁垒:AI驱动的全渠道内容生产新范式

打破平台壁垒&#xff1a;AI驱动的全渠道内容生产新范式 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Workflow …...

告别Armoury Crate臃肿困扰:GHelper革新性华硕笔记本硬件控制方案带来性能突破

告别Armoury Crate臃肿困扰&#xff1a;GHelper革新性华硕笔记本硬件控制方案带来性能突破 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and…...

告别数据迷宫:手把手教你用DataHub搭建企业级元数据搜索中心(支持MySQL/Airflow/Superset)

告别数据迷宫&#xff1a;手把手教你用DataHub搭建企业级元数据搜索中心&#xff08;支持MySQL/Airflow/Superset&#xff09; 当数据资产像野草一样在组织内疯长时&#xff0c;工程师们常常发现自己被困在由数百个数据表、数十个BI看板和错综复杂的调度任务构成的迷宫中。上周…...

Thumb-2指令集在Cortex-M3上的5个高效编程技巧(附真实项目代码)

Thumb-2指令集在Cortex-M3上的5个高效编程技巧&#xff08;附真实项目代码&#xff09; 在嵌入式开发领域&#xff0c;Cortex-M3处理器凭借其出色的性能功耗比占据着重要地位。而Thumb-2指令集作为其核心特性之一&#xff0c;通过巧妙混合16位和32位指令&#xff0c;为开发者提…...

SVN 查看历史信息

SVN 查看历史信息 引言 Subversion(简称SVN)是一款广泛使用的版本控制系统,它允许用户跟踪源代码的变更历史,并协同工作。在软件开发过程中,查看历史信息对于理解代码的演变过程、回溯错误、分析代码演变趋势等至关重要。本文将详细介绍如何在SVN中查看历史信息。 SVN …...

基于FPGA的DDS在安路TD和EG4A20BG256上的调试技巧与实战经验(五)

1. 安路TD软件常见编译问题排查指南 第一次用安路TD软件编译DDS工程时&#xff0c;我遇到了几个典型的编译错误。最常见的就是license报错&#xff0c;这个坑我踩过三次。当你看到"License expired"或者"Invalid license"提示时&#xff0c;别急着重装软件…...

力扣994. 腐烂的橘子

题目&#xff1a;腐烂的橘子https://leetcode.cn/problems/rotting-oranges/description/在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 0 代表空单元格&#xff1b;1 代表新鲜橘子&#xff1b;2 代表腐烂的橘子。 每分钟&#xff0c;腐…...