开启左侧

从Java转行大模型应用, LangChain的入门

[复制链接]
jiudedi 发表于 2 小时前 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:初心未改HD
简介

LangChain是一个开源的PythonAI应用开发框架,它提供了构建基于大模型的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作为脑),根据用户的需求自动调用外部系统、设备共同去完成任务。
  • 模型记忆(memory):让大模型(Im)记住之前的对话内容,这种能力成为模型记忆(memory)。
LangChain 框架组成

从Java转行大模型应用, LangChain的入门-1.png


整体架构概述

该图展示了 LangChain 技术栈的模块化架构,核心围绕 LangChain 框架展开,通过分层设计支持多语言、多场景的 AI 应用开发。图中模块分为功能层、工具层、核心层和扩展层,强调模块化、可扩展性和跨平台兼容性。
整体架构层级划分

部署与服务层(LangServe & Deployments)
应用模板层(Templates & Committee Architectures)
核心功能层(LangChain)
社区扩展层(LangChain-Community)
底层核心与运行时(LangChain-Core & LCEL)
LangChain框架的主要组成部分

LangChain Libraries(库):包括了组件的接口和集成,以及链和代理的实现,目前有python版本和JavaScript本。
LangChain Templates(模板):官方提供的适用于各种任务的参考架构。
LangServe:用于将LangChain链部署为REST API的库。
LangSmith:官方提供的开发者平台,可以调试、测试、评估和监控基于任何LLM构建的链,并与LangChain无缝集成。
LangChain 库(Libraries)

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

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

从Java转行大模型应用, LangChain的入门-2.png


如上图,LangChain提供一套提示词模板【prompt template)管理工具,负责处理提示词,然后传递给大模型处理,最后处理大模型返回的结果LangChain对大模型的封装主要包括LLM和ChatModel两种类型。

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

1.LLMs

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

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

指的是聊天模型(ChatModels)的消息内容,消息类型包括包括HumanMessage、AlMessage、
SystemMessage、FunctionMessage和ToolMessage等多种类型的消息。
4. 提示(prompts)

LangChain封装了一组专门用于提示词(prompts)管理的工具类,方便我们格式化提示词(prompts)内容。
5.输出解析器(Output Parsers)

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

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

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

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


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

安装LangChain

要安装LangChain,可以使用Pip和Conda进行安装。以下是安装LangChain的步骤:
使用Pip:
  1. pip install langchain
复制代码
初始化模型

在使用LangChain之前,需要导入LangChainOpenAl集成包,并设置API密钥作为环境变量或直接传递给OpenAl LLM类。
  1. from langchain_openai import ChatopenAI
  2. llm = ChatOpenAI()
  3. # 使用DeepSeek 模型的方式
  4. llm = ChatOpenAI(
  5.     model="deepseek-chat",
  6.     openai_api_key = "deepSeek api key",
  7.     openai_api_base = "https://api.deepseek.com/v1"
  8. )
复制代码
使用LLM

使用LLM来回答问题非常简单。可以直接调用LLM的invoke方法,并传入问题作为参数。此外,还可以通过提示模板(prompttemplate)生成提示词,用于向模型(LM)发送指令。
下面演示了如何构建一个简单的LLM链(chains)
  1. from langchain_core.prompts import ChatPromptTemplate
  2. # 创建一个提示模板(prompttemplate)
  3. #这里以对话模型的消息格式为例子,不熟悉openai对话模型消息格式,建议先学习openAI的API教程
  4. #下面消息模板,定义两条消息,system消息告诉模型扮演什么角色,user消息代表用户输入的问题
  5. prompt =ChatPromptTemplate.from_messages([
  6. ("system","你是高级的技术专家"),
  7. ("user","{input}")
  8. )
  9. # 基于LCEL表达式构建LLM链,lcel语法类似linux的pipeline语法,从左到右按顺序执行
  10. #下面编排了一个简单的工作流,首先执行prompt完成提示词模板(prompttemplate)格式化处理
  11. chain = prompt | llm
  12. #调用LLM链并设置模板参数input,invoke会把调用参数传递给prompt提示模板
  13. chain.invoke({"input":"帮我写一篇关于AI的技术文章,100个字以内"})
复制代码
输出转换
  1. from langchain_core.output_parsers import StrOutputParser
  2. #创建一个字符串输出解析器
  3. output_parser = StrOutputParser()
  4. chain = prompt | llm | output_parser
  5. #调用LLM链并提出问题
  6. chain.invoke({"input":"帮我写一篇关于LangChain的技术文章,100个字"})
复制代码
原文地址:https://blog.csdn.net/qq_31220341/article/details/158389588
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )