)
Langchain作为大模型的高度封装工具简化了原生大模型的使用。文章详细介绍了Langchain的调用方式包括本地部署、标准接口和request模式并深入讲解了Langchain的异步调用、流式输出、batch模式、多轮对话、Message封装、模板构建以及输出格式解析等关键功能。通过Langchain开发者可以更便捷地构建LLM应用提升开发效率。Langchain就是一个大模型的高度封装相当于把原生的大模型比如说千问外面整体包了一层这样用起来会更加方便。Langchain的核心是Langchain-core和Langchain如果用到一些社区功能还要加上Langchain-community搭建Agent用的是Langgraph。LangChain通常被用作「粘合剂」将构建LLM应用所需的各个模块连接在一起。 把大模型和常见的功能包一层用起来更方便。1、大模型常见调用方式大模型常见的调用方式以及为什么要用Langchain本地部署原生加载最常见方式就是直接启动一个原生的模型从网上把模型下载下来本地加载model加载分词器输入提示词prompt拼装提示词text(messages)模型进行分词tokenizer生成(generated_ids)以及解码(batch_decode)最后输出结果print。首先加载模型、加载分词器用户输入把用户的输入附加到模板上训练模板真实的模型输入是下面这个这是模型真实的输入我们自己的输入放在message里但是它前面会加一些前缀加一些后缀把这些东西一并输给大模型主要原因是现在的大模型叫指令大模型。指令大模型就是说它能干很多事要把这个指令或者说大模型的一些身份告诉大模型加前缀比如“You are a helpful assistant 你是个有帮助的助手”就是告诉大模型你是谁你要干什么这个模板就是把这些信息给附加上去这个叫做指令大模型。生成结果generated_ids是输入输出真实需要的结果是从输入后面开始要只需要输出就可以了输入的东西不要因此从输出这里截下来但是这里出来的仍然是ID大模型是ID进ID出通过解码把ID变成字符最后打印出来结果。这个就是标准的加载方式。标准接口本地部署比较麻烦的事第一需要把模型下载到本地本地得有GPU才能玩但是大多数人没有GPUOpenai提供了标准服务它会把模型放在云端直接访问云服务就可以。因此Openai提出了一个标准接口好处是模型并没有在本地。message这里需要添加一个话术告诉大模型“你是个有帮助的助手并且你是谁写进去”大模型就给回答出来了这就是一个调用AI接口的模式。大模型都是字符串入字符串出但是这里传的message是一个数组。messages[ {role: system, content: You are a helpful assistant.}, {role: user, content: 你是谁}]调openai接口的时候它会自动把messages数组填写到提示词模版openai标准接口会自动给执行出来就相当于包了一层对输入进行一层包装对输出也做了一层包装。request模式除了用openai标准接口以外还可以用网络服务request模式。request模式本质都是远程访问阿里云指定阿里云的地址但是request服务并没有写阿里云地址。是因为调用这个包本身就是阿里云的默认就提供了因此就可以直接访问了。如果数据没有涉及到隐私往往最高效的方式就是直接调阿里云的接口。VLLM框架用这个框架把模型启动出来它对外提供一个openai标准接口。很多公司可能有些忌讳不想私有化部署但又想用这个接口那么用这个框架把模型在机房启动起来靠这个标准接口对外提供服务。因此VLLM框架本质也是Openai的一个标准接口的形式。但是封装还不够它的输入输出你也看不懂因此Langchain就是用来进行高度封装的。Langchain模式导入langchain相关的包ChatOpenAI建立大模型远程访问指定模型名字model指定地址base_url。把输入信息message通过SystemMessage和HumanMessage进行封装。SystemMessage是大模型的人设大模型是干嘛的它是一个物理教授还是助教等相当于说通过提示词的方式来实现。HumanMessage是用户的问题问答什么是波粒二象性。大模型直接llm.invoke就开始使用message得到结果response。AIMessage是大模型输出类型大模型回答的SystemMessage是大模型人设HumanMessage是用户的问题。#封装后的messages1 [ SystemMessage(content请你作为我的物理课助教用通俗易懂且间接的语言帮我解释物理概念。), HumanMessage(content什么是波粒二象性), ]#封装前, 原生的 messages2 [ {role: system, content: 请你作为我的物理课助教用通俗易懂且间接的语言帮我解释物理概念。}, {role: user, content: 什么是波粒二象性}]原生的messagerole角色是系统role角色是user。system对应的就是SystemMessageuser对应的就是HumanMessage给大模型效果是一样的每次输出同样的问题都不太一样这个主要是大模型本身输出具备一个随机性好这个输出也不是真正的大模型输出真正大模型输出永远是字符串它的过程会转变成真正的字符串。大模型的输入转换如上图它真正的输入是最下面这个只不过Openai和Langchain都把这一层给封装了不需要自己写了。大模型的输出永远是纯字符串这些只是经过了层层包装包装起来整体来说就非常方便。可以传温度temperature是控制随机性温度越高模型输出的多样性越强。也可以传最大字符数max_tokens输入最大长度是多少有些场景对长度要求还比较严格。常见的就是这两个参数。llm.invoke(message, temperature0.5,max_token200)2、Langchain的异步调用Langchain的异步调用比如同时起10个线程来调用[async_generate(llm) for _ in rage(10)]分别问它“你好你在干嘛”。因为有时候大模型的响应时间非常长很多异步任务因此可以走异步调用异步调用就是响应并不是实时的可以看到它回答了十次 相当于这十次就是多线程进行并行和异步。3、Langchain的流式输出流式输出大模型生产出来的TOKEN其实是一个个TOKEN生成的 但是我们看到这些结果都是一把生成一次性给结果但是有时候在对话的时候它的输出是一个字一个字的输出并不是说一次全部给我因为一次全部给我可能要输出很长时间这样用户的等待时间感官就不是很好因此会提供一个流式输出接口stream整体输出就是involve。流式输出stream默认是用user默认会把“你好”封装成HumanMessage(content“你好”)。一个字符一个字符的给打出来虽然只有HumanMessage但是SystemMessage并不是必须的。SystemMessage只是为了做控制SystemMessage的场景比如要明确你是个物理学教授等但是不强调就是一个默认的人设像这个东西就是一个cosplay或者角色扮演不写就是让你当个普通正常人来进行回答。4、Langchain的batch模式还可以进行批量的问比如我问他 “你好你是谁”这里走batch这两个问题进行一个并行回答。问了两个问题它给的回答是两个第一个回答是AIMessage波粒二象性第二个回答是“你好你叫什么名字”它其实有两个AIMessage这两个问题是互相隔离。相对于一条一条的问batch最大好处对GPU利用率高数据来了模型在GPU里把输入放进来算完以后从GPU里返回来如果是一条一条的那么搬运的次数就会非常频繁这个其实是浪费时间。那就干脆一次性直接全部搬进去再一次性搬出来这样整体的效率就会高很多。减少内存到显存的搬运次数。另外一个好处就是GPU本身运算能够被打满GPU运算特别像集装箱。当数据量很小的时候GPU的优势并不明显比如运一辆汽车用集装箱运可能跟用快艇运差异不是很大它最大的优势就是数据量一次打入的越多提升的效率就越明显。GPU起到了一个这样的作用所以尽可能走批量。阿里云后台它会把同一个时间段用户的问题拼成一个batch打给GPU看上去好像是单条但是它会把我和别人的全部拼在一起直接给后台大模型让大模型进行一个批量运算。一般的流程是来一条数据一条请求有一个缓存3毫秒或者数据量到100条再去访问大模型。这样的话就可以提升它的效率。5、Langchain的多轮对话搞两个Prompt对话模板一个是人human_input用户的输入还有一个是历史的输入chat_history就把之前的对话全部存起来。你是一个聊天机器人你的历史信息是什么{chat_history}用户输入的是什么Human:{human_input}聊天机器人要输出什么Chatbot:“”用历史信息全部拼成字符串跟当前用户的问题拼在一起来进行做问答memory专门存历史信息把这种模板搞定就可以了。可以看下多人对话的效果。比如“你好你是谁”它就说“你好我是AI助手”再接着问“你会做什么呀”。因此这个就是用多轮对话的能力来做的。6、Message我们可以用HumanMessage对消息进行一个封装message可以使用convert_to_openai_message进行转化如果这个message是一个数组SystemMessage是系统的cosplay的人设AIMessage就是模型的回答ToolMessage就是用的工具。统一转成Openai标准接口如上上面这个才是真正丢给阿里云的阿里云提供的永远是Openapi的标准接口。一个是对用户友好一个是对机器友好Langchain起到一个中间环节。用户友好各种messageLangchain在中间转换为对机器友好。它起到了一个中间环节的作用相当于把对于用户看得懂的东西转成对于机器有帮助的东西。message也可以进行相加比如有一个系统SystemMessage还有一个HumanMessage把两个message先相加相当于是做一次多轮。message就是用户输入的一个封装。7、模板用户输入的时候调LLM.invoke如果不特意指定message默认是 HumanMessageHumanMessage有时候会存在一些变量比如说问它“今天是星期几后天是星期几”通过传参的方式传给大模型。做个提示词模板PromptTemplate通过字符串构建提示词模板。另外一种构建方式是指定一个变量。#构建模板的两种方法prompt_template PromptTemplate.from_template({{你好}},今天是星期{day}后天是星期几?)prompt_template PromptTemplate(input_variables[day], template今天是星期{day}后天是星期几)模板生成字符串调用invoke(prompt_template.invoke) 把参数传进来大模型运行得到结果。大模型print回答“今天是星期三后天是星期五”。看模板转化之后的样子input_variables[day] input_types{} partial_variables{} template今天是星期{day}后天是星期几?模板有一个输入变量“今天是星期{day}后天是星期几”通过invoke把这个{“day”:“三”}给填进去就变成今天是星期三后天是星期几其实就是字符串占位符。如果想让它成为一个字符串本身但不想把它当变量就把它当成一个字符串“{{你好}}, 今天是星期{day}, 后天是星期几?”可以加两对括号把它当成正常的字符串进行处理。构建模板的时候可以定义两个变量一个“今天的日期是{date}天气是{weather}”通过函数返回值实时的把今天的日期获取出来“date”:_get_datetime是部分变量填充date的时候直接用函数的返回值再把invoke({“weather”:“小雨”})给填进去最后得到结果result。“今天日期是08/18/2026天气是小雨”这个模板其实就是字符串字符串直接传给大模型。模板是不能输给大模型的模板本身通过invoke的字符串输入给大模型。因为模板它不是一个完整的输入。这里的函数也相当于是大模型类似于把一个大模型的结果塞给另外一个大模型这样就非常灵活。模板默认是user message稍微复杂点可以有system messageuser message这样就跟刚开始讲的这种对话就能够对上了。第一个是SystemMessagePromptTemplate模板第二个是Human MessagePromptTemplate模板invoke后就变成SystemMessage和HumanMessage这样就可以把各种人设各种角色通过模板进行一个构建。模板最大的好处是在进行简单问答的时候输入是不固定的有时候输入本身是一个变量输入是什么事先也不知道就通过模板的方式来进行一个构造这个就是模板的最大作用在于这个地方比如说写一个程序今天是星期几后天是星期几那这个星期几的这个输入它是动态的。8、控制输出格式parser大模型是字符入字符串出最后把结果给取出来有时候希望输出是一个json格式比如问“水浒传的作者和成书年份是什么”他输出的是个字符串。但有时候想把施耐庵这三个字给提取出来它是一个非结构化数据所以不太好提取但希望它输出结果是个结构化数据。比如可以问“水浒传的成书年份是什么输出结果用json表示直接输出人名和年代”。加个提示词他的作者就有了成书年份也有了。这个是一个非常通用的功能因此Langchain把这个功能给抽象出来。首先定义一个定义的Book类书籍类书籍名称name、出版年份year描述写清楚。parser解析器把booke放进来得到一串提示词把提示词跟模型输入全拼在一起。输出必须以json格式来输出通过提示词来控制模型输出json的格式除了parser以外还有一个解析parser两个parserparser主要提供提示词对输出结果进一步修复确保解析成json格式。Parser写出来的提示词如上必须得输出一个JSON格式JSON的schemaname这个字段的描述是数据的名称year是出版年份他其实就是把提示词进行了一次高度包装以确保大模型能够按照这个 JSON进行输出。模板的时候“请帮我从出版列表中解析图书信息”/n{format_instructions}是我要的提示词passer对应的出版列表是{query}就是输入{“query”:“水浒传出版于1929年三国演义出版于2002年”对应的提示词进行填充拼接一个完整的输入扔给大模型看大模型输出结果。大模型输出的这是一个字符串不是JSON这个函数其实就是把里面对应的东西直接按字符串拼套模板往里面套。它其实不是JSON格式已经有JSON信息了还会用一个后处理模块转成真正的JSON。fix_parser最后的结果就转成了真正的JSON取第0个name就把水浒传给取出来。大模型输出的只具备了JSON的一些框架但是它并不是那种数据结构的标准JSON通过fix_parser再进一步的把这个框架给解析出来。这个功能非常重要这个功能在智能体里非常重要和实用。定义的时候用到的parser是告诉工具标准格式目标格式是什么。为什么还里还要用大模型进行绑定llmllm如果说输出转不成JSON会通过大模型再去把字符串进行一些调整让它尽可能的变成JSON大模型是用来兜底的llm一旦输出无法利用大模型修改输出一般来说修改3次不成功就放弃。这里的修改只是修改输出跟用户的输入没有关系。jsonschema不会放在system里来控制一般通过PromptTemplate来控制是比较好的因为模型训练的时候就是按照这种格式来训练json的所以就按照套路来是最好的。如果输入“你好”它其实是解析失败的没有JSON信息。什么情况下会转JSON失败第一个输出的信息本身和JSON不相关第二个模型不够强转不成。如果说你模型太弱能转成JSON的转不成但是模型太强不应该转的也给你硬转过去。函数本质是在帮你拼提示词。大模型的知识又多又杂到底怎么学做这行久了被问最多的问题就一个大模型的知识又多又杂我到底先学啥翻了一堆资料看啥都像重点结果啥都没学进去。今天把我自己一路摸出来的顺序捋一遍零基础、应届生、转行的都适用。跟着走至少方向不乱、不瞎忙学完拿得出手。第一阶段10天初阶应用这一阶段就一个目标把大模型真正玩明白不是只会聊天那种而是能调教它、能用代码把大模型和业务接起来。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用这阶段正式进实战目标很实在做出两个能拿出手的东西——一个私有知识库一个 agent 对话机器人。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…走完这 30 天Python 或 JavaScript 背景的基本能独立做一套 RAG 应用简历上也敢写大模型应用开发了。第三阶段约20天动手微调学到这你已经开始 “造” 模型了 —— 通过微调搞出垂直领域的专用小模型。为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你从 “只会用” 变成 “能造” 的 AI 小子。那么你还想往下探索吗想要入局AI大模型赛道、抢占行业红利的朋友微信扫描下方CSDN官方认证二维码即可100%免费领取全套学习资料第四阶段20天商业闭环部署落地技术学完落地才算数。这阶段带你搞明白大模型怎么真正跑起来、用起来。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…想要入坑大模型的朋友给大家准备了一份2026 年最新 AI 大模型全套学习资料1、大模型系统化学习路线2、大模型学习视频教程3、大模型学习书籍电子文档4、AI大模型最新行业报告5、大模型项目实战配套源码6、2026大模型大厂面试真题7、为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。8、适合谁学传统后端 / Java / 前端开发想转型 AI 应用大学生、应届生想拿更好的 offer产品经理、运营想武装职业竞争力技术负责人想给团队落地提效学习是反人性的但回报是真金白银。技术会更新赛道会切换但只要你先动手机会就永远站在你这边。9、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。想要入局AI大模型赛道、抢占行业红利的朋友微信扫描下方CSDN官方认证二维码即可100%免费领取全套学习资料好了就写到这。路线是死的人是活的卡住了随时来问我。觉得有用就点个收藏别让它进收藏夹吃灰——动起来比啥都强。