LangChain开发(一)介绍和第一个例子

news2025/3/22 11:17:26

文章目录

  • 简介
  • LangChain框架组成
    • LangChain库(Libraries)
    • LangChain任务处理流程
    • 核心概念
      • 1. LLMs
      • 2. Chat Models
      • 3. 消息(Message)
      • 4. 提示(prompts)
      • 5. 输出解析器(Output Parsers)
      • 6.Retrievers
      • 7.向量存储(Vector stores)
      • 8.Agents
  • 应用
  • 快速入门
    • 安装LangChain
    • 初始化模型
    • 使用LLM
    • 输出转换
  • 参考资料:

简介

LangChain是一个开源的Python AI应用开发框架,它提供了构建基于大模型的AI应用所需的模块和工具。通过LangChain,开发者可以轻松地与大模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。LangChain降低了AI应用开发的门槛,让任何人都可以基于LLM构建属于自己的创意应用。
LangChain特性:

  • LLM和提示(Prompt):LangChain对所有LLM大模型进行了API抽象,统一了大模型访问API,同时提供了Prompt提示模板管理机制。
  • 链(Chain): LangChain对一些常见的场景封装了一些现成的模块,例如:基于上下文信息的问答系统,自然语言生成SQL查询等等,因为实现这些任务的过程就像工作流一样,一步一步的执行,所以叫链(Chain)。
  • LCEL:LangChain Expression Language(LCEL),LangChain新版本的核心特性,用于解决工作流编排问题,通过LCEL表达式,我们可以灵活的自定义AI任务处理流程,也就是灵活自定义链(Chain)。
  • 数据增强生成(RAG):因为大模型(LLM)不了解新的信息,无法回答新的问题,所以我们可以将新的信息导入到LLM,用于增强LLM生成内容的质量,这种模式叫做RAG(Retrieval Augmented Generation)
  • Agents:是一种基于大模型(LLM)的应用设计模式,利用LLM的自然语言理解和推理能力(LLM作为大脑),根据用于的需求自动调用外部系统、设备共同去完成任务,例如:用户输入“明天请假一天”,大模型(LLM)自动调用请假系统,发起一个请假申请。
  • 模型记忆(memory): 让大模型记住之前的对话内容,这种能力成为模型记忆(memory)。

LangChain框架组成

image-20250321204121361

LangChain框架由几个部分组成,包括:

  • LangChain库:Python和JavaScript库。包含接口和集成多种组件的运行时基础,以及现成的链和代理的实现。
  • LangChain模板:LangChain官方提供的一些AI任务模板。
  • LangServe:基于FastAPI可以将LangChain定义的链(Chain),发布微REST API。
  • LangSmith:开发平台,是个云服务,支持LangChain debug、任务监控。

LangChain库(Libraries)

LangChain库本身由几个不同的包组成。

  • langchain-core:基础抽象和LangChain表达语言。
  • langchain-community:第三方集成,主要包括LangChain集成的第三方组件。
  • langchain:主要包括链(chain)、代理(agent)和检索策略

LangChain任务处理流程

img

如上图,LangChain提供一套提示词模板(prompt template)管理工具,负责处理提示词,然后传递给大模型处理,最后处理大模型返回的结果,

LangChan对大模型的封装主要包括 LLM 和 Chat Model两张类型。

  • LLM - 问答模型,模型接收一个文本输入,然后返回一个文本结果。
  • Chat Model - 对话模型,接受一组对话消息,然后返回对话消息,类似聊天一样。

核心概念

1. LLMs

LangChain封装的基础模型,模型接收一个文本输入,然后返回一个文本结果。

2. Chat Models

聊天模型(或者成为对话模型),与LLMs不同,这些模型转为对话场景而设计。模型可以接收一组对话消息,然后返回对话消息,类似聊天消息一样。

3. 消息(Message)

指的是聊天模型(Chat Models)的消息内容,消息类型包括HumanMesage、AIMessage、SystemMessage、FunctionMessage和ToolMessage等多种类型的消息。

4. 提示(prompts)

LangChain封装了一组专门用于提示词(prompts)管理的工具类,方便我们格式化提示词(prompts)内容。

5. 输出解析器(Output Parsers)

如上图介绍,LangChain接受大模型返回的文本内容之后,可以使用专门的输出解析器对文本内容进行格式化,例如解析json、或者将llm输出的内容转成python对象。

6.Retrievers

为方便我们将私有数据导入到大模型,提高模型回答问题的质量,LangChian封装了检索框架(Retrievers),方便我们加载文档数据、切割文档数据、存储和检索文档数据。

7.向量存储(Vector stores)

为支持私有数据的语义相似搜索,LangChain支持多种向量数据库。

8.Agents

智能体(Agents),通常指的是以大模型作为决策引擎,根据用户输入的任务,自动调用外部系统、硬件设备共同完成用户的任务,是一种以大模型为核心的应用设计模式。

应用

  • 对话机器人:构建智能的对话助手、客服机器人、聊天机器人等。
  • 知识库问答:结合知识图谱,进行开放域问题的问答服务。
  • 智能协作:如文中写作、创意写作、文本摘要等

快速入门

安装LangChain

要安装LangChain,可以使用pip和Conda进行安装。以下是安装LangChain的步骤:

使用pip:

pip install langchain
pip install langchain-openai

初始化模型

在使用LangChain之前,需要导入LangChain x OpenAI集成包,并设置API密钥作为环境变量或直接传递给OpenAI LLM类。

首先,获取OpenAI的API密钥,可以通过创建账户并访问此链接来获取。

设置环境变量:

OPENAI_API_KEY="取得的OPENAI key"
OPENAI_API_BASE="如果不是用官网API地址可以设置这个"

没有官方api key的话,可以使用https://api.xty.app/register?aff=U22j 注册一个,会送一些免费的额度,对应OPENAI_API_BASE配置为https://api.xty.app/v1

使用LLM

使用LLM来回答问题非常简单。可以直接调用LLM的invoke方法,并传入问题作为参数。此外,还可以通过提示词模板(prompt template)生成提示词,用于向模型(LLM)发送指令。

下面演示了如何构建一个简单的LLM链:

# 引入langchain聊天专用提示词模板
from langchain_core.prompts import ChatPromptTemplate

# 引入langchain openai sdk
from langchain_openai import ChatOpenAI

# 如果是官方URL,使用以下即可
llm = ChatOpenAI()

# 根据message 定义提示词模板
# 这里以对话模型的消息格式为例子,不熟悉openai对话模型的话,可以参考官方文档
# 下面消息模板,定义两条消息,system消息告诉模型扮演什么角色,user消息代表用户输入的问题
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是世界级的技术专家"),
    ("user", "{input}")
])

# 通过langchain的链式调用,生成一个chain
# 基于LCEL表达式构建LLM链,lcel语法类似linux的pipeline语法,从左到右顺序执行
# 下面编排了一个简单的工作流,首先执行prompt完成提示词模板(prompt template)格式化处理,然后将格式化后的结果传递给llm模型
chain = prompt | llm

result = chain.invoke({"input": "帮我写一篇关于AI的技术文章,100字"})
print(result)

输出示例:

content='人工智能(AI)是模拟人类智能的技术,涵盖机器学习、自然语言处理、计算机视觉等多个领域。通过数据训练,AI可以识别模式、进行预测、解决问题,甚至进行自动决策。近年来,深度学习的快速发展推动了AI在语音识别、图像处理、医疗诊断等领域的广泛应用。尽管AI带来了诸多创新和便利,但也伴随隐私、安全、伦理等挑战。随着技术的不断进步,AI的潜力将继续扩大,深刻影响各行各业的发展。' additional_kwargs={'refusal': None} response_metadata={'token_usage': {'completion_tokens': 225, 'prompt_tokens': 41, 'total_tokens': 266, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'gpt-3.5-turbo-0613', 'system_fingerprint': 'fp_b28b39ffa8', 'finish_reason': 'stop', 'logprobs': None} id='run-45ba2d20-d6a3-45a6-b25c-f22b78da66d9-0' usage_metadata={'input_tokens': 41, 'output_tokens': 225, 'total_tokens': 266, 'input_token_details': {}, 'output_token_details': {}}

输出转换

LLM的输出通常是一条信息,为了更方便处理结果,可以将消息转换为字符串。下面展示如何将LLM的输出消息转换为字符串:

# 字符串输出解析器
from langchain_core.output_parsers import StrOutputParser
# 引入langchain聊天专用提示词模板
from langchain_core.prompts import ChatPromptTemplate

# 引入langchain openai sdk
from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

# 根据message 定义提示词模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是世界级的技术专家"),
    ("user", "{input}")
])

# 创建一个字符串输出解析器
out_parse = StrOutputParser()

# 将输出解析器添加到LLM链中,跟前面的例子区别就是工作流编排,最后一步将LLM模型输出的结果传递给out_parse
chain = prompt | llm | out_parse

result = chain.invoke({"input": "帮我写一篇关于AI的技术文章,100字"})
print(result)

输出示例:

人工智能(AI)是模拟人类智能过程的技术,涉及机器学习、自然语言处理、计算机视觉等领域。通过大量数据和算法,AI能够从经验中学习并做出决策,应用广泛,如自动驾驶、医疗诊断、金融预测等。深度学习作为AI的一种重要技术,通过多层神经网络处理复杂任务,显著提高了识别和预测的准确性。尽管AI发展迅速,仍面临伦理和安全等挑战,未来将推动各行业的变革,带来更多创新机会。

以上是关于LangChain的介绍及简单入门。

参考资料:

2025吃透LangChain大模型全套教程(LLM+RAG+OpenAI+Agent)

https://python.langchain.com/v0.1/docs/get_started/introduction/

https://lanchestios.github.io/2023/07/13/LLM-LangChain/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Chrome-Edge-IDEA-Win 常用插件-工具包

Chrome-Edge-IDEA-Win 常用插件-工具包 Chrome-Edge-IDEA-Win 常用插件-工具包谷歌插件chropathJSONViewOctotree - GitHub code treeXPath Helper书签侧边栏篡改猴Print Edit WEEdge浏览器插件IDEA插件CodeGlance Pro 代码迷你缩放图插件Alibaba Cloud ToolkitAlibaba Java Co…

电加热产品亚马逊审核标准UL499报告

很多亚马逊卖家都上架应季产品 像加热垫 加热杯垫 加热毯等产品 都少不了亚马逊UL测试的报告 亚马逊明确要求 电子产品在亚马逊销售就必须需要有UL报告 不然就产品就被有下架的风险。由于 UL 标准也就是美洲的安全测试标准,因此亚马逊出于对安全的考虑会加强对带电的…

从实践到创新:低代码驱动教育行业数字化转型

随着数字化转型浪潮席卷教育领域,低代码开发平台因其“低门槛、高效率、强适配”特性,正成为教育行业信息化改革的新工具。本文将结合低代码技术在教育场景中的典型应用案例,分享其对教学管理、科研创新及人才培养模式的变革价值。 一、政策与…

dfs刷题排列问题 + 子集问题 + 组和问题总结

文章目录 一、排列问题全排列II题解代码 优美的排列题解代码 二、子集问题字母大小写全排列题解代码 找出所有子集的异或总和再求和题解代码 三、组合问题电话号码的字母组合题解代码 括号生成题解代码 组合题解代码 目标和题解代码 组合总和题解代码 总结 一、排列问题 全排列…

996引擎-接口测试:消息Tips

996引擎-接口测试:消息Tips 发送视野内广播消息 sendrefluamsg发送聊天框消息 sendmsg发送地图消息 sendmapmsg打印消息到控制台 release_print发送自定义颜色的文字信息 guildnoticemsg测试NPC参考资料发送视野内广播消息 sendrefluamsg function npc_test_onclick1(player)-…

JavaWeb之WebSocket

目录 一、 websocket 概念二、WebSocket原理三、WebSocket特点四、WebSocket应用场景五、Websocket基本使用1、创建Websocket对象2、Websocket事件3、Websocket方法4、前端服务程序 六、聊天室案例1、Tomcat版本:8.0.442、Maven 依赖:3、前端代码4、后端…

算法2--两数相加

题目描述 解题思路 题目说的很详细了,也就是把每个数倒序写成链表进行输入,然后让你计算两个倒序数组的和,要保证跟预期的结果一样。 首先应该考虑的是两个数组的长度问题,对于链表的每一位进行加法运算,如果两个列表…

Springboot的jak安装与配置教程

目录 Windows系统 macOS系统 Linux系统 Windows系统 下载JDK: 访问Oracle官网或其他JDK提供商网站,下载适合Windows系统的JDK版本。网站地址:Oracle 甲骨文中国 | 云应用和云平台点击进入下滑,点击进入下载根据自己的系统选择&…

Axure大屏可视化模板:赋能多领域,开启数据展示新篇章

在当今这个数据爆炸的时代,数据已经成为各行各业的核心资产。然而,如何高效、直观地展示数据,并将其转化为有价值的决策依据,成为了许多企业和组织面临的共同挑战。Axure大屏可视化模板,作为一款强大的数据展示工具&am…

区块链学习总结

Hardhat 是一个用于 Ethereum 智能合约开发 的开发环境,专为 Solidity 语言编写的智能合约提供工具支持。它能够帮助开发者 编译、部署、测试和调试 智能合约,并提供一个本地的以太坊测试网络。 Hardhat 的核心功能 本地开发网络(Hardhat Ne…

识别并脱敏上传到deepseek/chatgpt的文本文件中的身份证/手机号

本文将介绍一种简单高效的方法解决用户在上传文件到DeepSeek、ChatGPT,文心一言,AI等大语言模型平台过程中的身份证号以及手机号等敏感数据识别和脱敏问题。 DeepSeek、ChatGPT,Qwen,Claude等AI平台工具快速的被接受和使用,用户每天上传的文本数据中潜藏着大量敏感信息,…

ruoyi-vue部署4

1.jdk-linux安装 2.tomcat-linux安装 3.ruoy后台部署 4.nginx-linux安装5.ruoyi前端部署​​​​​​​

【秣厉科技】LabVIEW工具包——OpenCV 教程(12):机器学习

文章目录 前言机器学习例1:支持向量机(SVM)做平面向量二分类例2: K邻近算法(KNearest)实现分类 总结 前言 需要下载安装OpenCV工具包的朋友,请前往 此处 ;系统要求:Wind…

UI数据处理新隐私保护:确保用户新信息安全

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在这个数字时代,我们的个人信息似乎无处不在。从社交媒体上的点滴分享,到在线…

【Javascrip】Javascript练习01 REST API using Express.js.

针对该问题的项目路径 要求部分 what you need to doReview the tasks provided in the section below.Obtain the boilerplate code.Use your local development environment to implement a solution.Upload your solution for marking via Gradescope. There is no attempt…

小样本学习综述

小样本学习综述 📕[1]潘雪玲,李国和,郑艺峰. 面向深度网络的小样本学习综述 [J]. 计算机应用研究, 2023, 40 (10): 2881-28882895. DOI:10.19734/j.issn.1001-3695.2023.02.0074. 主要是该论文的一些摘要。 小样本学习旨在利用较少目标数据训练模型快速学习的。 …

挂谷问题与挂谷猜想:从平面转针到高维拓扑

挂谷问题与挂谷猜想:从平面转针到高维拓扑 目录 挂谷问题的起源数学定义与基本性质研究进展挂谷集合与挂谷猜想王虹与Joshua Zahl的突破意义与影响 挂谷问题的起源 1917年,日本数学家挂谷宗一(かけや そういち Soichi Kakeya,1886-1947)提…

火语言RPA--表格数据导出

表格数据导出 🚩【组件功能】:导出表格内数据到指定的文件 配置预览 配置说明 导出格式 Excel:导出Excel文档格式,CSV:导出CSV数据格式。 导出文件夹 支持T或# 导出文件需要保存的文件夹路径。 导出文件名支持T或# 导出文…

数学建模:MATLAB卷积神经网络

一、简述 卷积神经网络是一种处理具有网格结构数据的深度学习模型,由输入层、卷积层、池化层、全连接层、输出层组成。 输出层:将图像转换为其对应的由像素值构成的二维矩阵,并存储二维矩阵 卷积层:提取图像的底层特征&#xf…

xLua_003 Lua访问C#

1、new C# 对象(创建游戏物体) LuaCallCSharp.cs using UnityEngine; using XLua;public class LuaCallCSharp : MonoBehaviour {public LuaEnv env null;void Start(){LuaEnv env new LuaEnv();env.DoString("requireLuaCallCSharp");}pr…