2026/3/2 0:49:28
网站建设
项目流程
江门专业网站建设价格,郴州网站网站建设,做广告的软件app,携程官网目录
前记LangChain 是什么#xff1f;模型层#xff08;Models#xff09;提示层#xff08;Prompts#xff09;链层#xff08;Chains#xff09;
前记
本系列分为以下四篇#xff0c;本篇为本系列的第一篇
LangChain 核心组件基础篇LangChain 核心组件进阶篇基于…目录前记LangChain 是什么模型层Models提示层Prompts链层Chains前记本系列分为以下四篇本篇为本系列的第一篇LangChain 核心组件基础篇LangChain 核心组件进阶篇基于LangChain的 AI Agent 开发基于LangChain的 MCP 开发本篇目标掌握 LangChain 的核心概念和最常用的基础模块能够构建简单的 LLM 应用。LangChain 核心概念与架构LangChain 是什么 它解决了哪些传统 LLM 开发的缺点模块概览Models(LLMs/Chat Models),Prompts,Chains,Data Connection(Retrieval),Memory,Agents,Callbacks。*LangChain*的优势模块化、可组合性、统一接口。模型层Models封装器langchain_openai.OpenAI、langchain.chat_models.init_chat_model同步与异步调用理解invoke()与ainvoke()。模型参数配置在 LangChain 中设置temperature,max_tokens等。提示层PromptsPromptTemplate 定义通用文本提示模板使用占位符。ChatPromptTemplate 专为聊天模型设计包含系统、用户、助手消息。输出解析器(Output Parsers)将 LLM 的自由文本输出结构化。链层ChainsLangChain Expression Language (LCEL)顺序链多输入输出RunnableParallel路由链RunnableBranch记忆Memory缓存Caching一、LangChain 是什么LangChain 是一个用于构建大语言模型LLM应用的框架。它的核心目标是简化开发流程通过模块化设计让开发者可以将不同组件如模型、提示模板、数据检索、记忆、工具代理等灵活组合快速构建强大的 LLM 应用。它解决了传统 LLM 开发中的几个关键痛点单独使用 LLM API 难以处理复杂工作流不同 LLM 接口不统一切换成本高难以实现记忆、外部数据连接等高级功能缺乏标准化的组件组合方式LangChain的核心优势是模块化和可组合性通过统一接口将不同功能封装为可拼接的组件主要包括模块名作用models封装各种 LLM 或聊天模型如 ChatOpenAIprompts提示模板组件chains链式调用组件memory对话记忆模块retrievers检索模块如向量数据库agents智能体 Agent 系统tools可由 Agent 调用的工具output_parsers将 LLM 输出结构化callbacks跟踪执行细节用于调试或日志记录二、模型层Models模型参数参数作用推荐场景temperature控制采样随机度。0.0 趋于确定性1.0 趋于多样性精确回答0–0.3创意生成0.7max_tokens最大生成长度token 数超过会截断简短回答256长文1024frequency_penalty对重复 token 施加惩罚减少冗余输出文本去重presence_penalty鼓励引入新话题避免「原地打转」回答多样性model模型名称支持deepseek-chat、deepseek-instruct等视任务场景选择ainvoke异步LangChain 提供了同步和异步两种调用模型的方式invoke():用于同步调用模型。当您只需要单次调用或者在脚本中按顺序执行时可以使用此方法。ainvoke():用于异步调用模型。当您需要并发执行多个模型请求例如同时处理多个用户查询时ainvoke()结合asyncio可以显著提高效率避免阻塞。import os import time from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain.prompts import ChatPromptTemplate # 1. 加载 .env 中的环境变量 load_dotenv() api_key os.getenv(DEEPSEEK_API_KEY) api_base os.getenv(DEEPSEEK_API_BASE) ifnot api_key ornot api_base: raise EnvironmentError(请在 .env 中设置 DEEPSEEK_API_KEY 和 DEEPSEEK_API_BASE) # 2. 定义 Prompt 模板 prompt ChatPromptTemplate.from_messages([ (system, 你是一位乐于助人的 AI 助手。), (human, {input}) ]) # 3. 初始化 DeepSeek 聊天模型 chat_model init_chat_model( modeldeepseek-chat, temperature0.6, # 随机性0.0最确定–1.0最随机 max_tokens512, # 最多返回多少 token api_keyapi_key, api_baseapi_base ) # 4. 链式组合Prompt → ChatModel pipeline prompt | chat_model # 5. 同步调用 # def main(): # question 请用一句话解释什么是 LangChain # answer pipeline.invoke({input: question}) # print(Q:, question) # print(A:, answer) # if __name__ __main__: # main() import asyncio asyncdef ask(q): returnawait pipeline.ainvoke({input: q}) asyncdef batch_questions(): a1time.time() qs [ LangChain 是什么, 如何配置模型参数, LangChain 有哪些核心模块 ] # 并发执行 results await asyncio.gather(*(ask(q) for q in qs)) for q, r in zip(qs, results): print(fQ: {q}\nA: {r}\n) a2time.time() print(a2-a1)#22.283571004867554 if __name__ __main__: asyncio.run(batch_questions())三、提示层PromptsPromptTemplateimport os from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain.prompts import PromptTemplate # 1. 加载环境变量 load_dotenv() API_KEY os.getenv(DEEPSEEK_API_KEY) API_BASE os.getenv(DEEPSEEK_API_BASE) assert API_KEY and API_BASE, 请配置 .env 中的 DEEPSEEK_API_KEY / DEEPSEEK_API_BASE # 2. 定义模板 template PromptTemplate( template将下面这句话翻译成中文\n\n{text}, input_variables[text] ) # 3. 初始化 instruct 模型 llm init_chat_model( modeldeepseek-chat, temperature0.6, # 随机性0.0最确定–1.0最随机 max_tokens512, # 最多返回多少 token ) # 4. 合成管道 pipeline template | llm # 5. 调用 result pipeline.invoke({text: Hello, how are you?}) print(翻译结果, result)ChatPromptTemplate对话式场景模型具有 system/user/assistant 三角色概念。import os from dotenv import load_dotenv from langchain.prompts import ChatPromptTemplate from langchain.chat_models import init_chat_model from langchain_core.output_parsers import StrOutputParser # 1. 环境加载 load_dotenv() API_KEY os.getenv(DEEPSEEK_API_KEY) API_BASE os.getenv(DEEPSEEK_API_BASE) # 2. 定义 ChatPromptTemplate chat_prompt ChatPromptTemplate.from_messages([ (system, 你是一位专业的翻译助理。), (human, 请将以下英语翻译成中文\n\n{sentence}) ]) # 3. 初始化聊天模型 chat_model init_chat_model( modeldeepseek-chat, temperature0.2, max_tokens512, api_keyAPI_KEY, api_baseAPI_BASE ) # 4. 组装管道 chat_pipeline chat_prompt | chat_model |StrOutputParser() # 5. 同步调用 out chat_pipeline.invoke({sentence: LangChain is awesome!}) print(翻译成中文, out)OutputParser解析器名称简要描述典型应用场景示例模型输出解析后结果类型StrOutputParser最基础的解析器直接提取 LLM 响应的原始字符串内容。默认解析器当不需要任何结构化时。“地球是一个蓝色的星球。”strJsonOutputParser将 LLM 响应解析为JSON格式的 Python 字典或 Pydantic 对象。需要从 LLM 获取结构化数据如用户资料、产品属性、复杂指令。{name: Alice, age: 30}dict或 Pydantic 对象CommaSeparatedListOutputParser将 LLM 响应解析为逗号分隔的列表。从 LLM 获取一个项目列表如商品名称、关键词、建议。“苹果,香蕉,橙子”listBooleanOutputParser将 LLM 响应解析为 Python 的布尔值(True或False)。需要 LLM 进行二元判断如“是/否”、“真/假”、“同意/不同意”。“是” 或 “True” 或 “否” 或 “False”boolDatetimeOutputParser将 LLM 响应解析为 Python 的日期时间对象(datetime)。需要 LLM 抽取或生成特定日期或时间点。“2023-10-26” 或 “明天下午三点”datetimeEnumOutputParser将 LLM 响应解析为预定义的枚举值。限制 LLM 输出为特定选项之一如颜色、状态、严重程度。“RED” 或 “high” (对应枚举类中的成员)Enum成员四、链层ChainsLangChain Expression Language (LCEL)CELLangChain Expression Language是 LangChain 提供的声明式语法用于以管道形式|组合 Prompt、LLM、工具、解析器等组件构建复杂链式逻辑。其链式逻辑用 | 连接代码更清晰且组件可自由组合易于扩展。from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser load_dotenv() # 1. 初始化 DeepSeek 模型 model init_chat_model( modeldeepseek-chat, temperature0.7 ) # 第一步生成描述 prompt1 PromptTemplate.from_template(详细描述 {topic} 的用途。) # 第二步总结 prompt2 PromptTemplate.from_template(总结以下内容为一句话{description}) # 创建顺序链 chain ( {description: prompt1 | model | StrOutputParser()} | prompt2 | model | StrOutputParser() ) # 运行 result chain.invoke({topic: 云计算}) print(result)多输入输出from langchain_core.runnables import RunnableParallel # 定义两个并行链 chain1 PromptTemplate.from_template(介绍 {topic}) | llm | StrOutputParser() chain2 PromptTemplate.from_template(列出 {topic} 的应用) | llm | StrOutputParser() # 并行运行 parallel_chain RunnableParallel(introchain1, applicationschain2) # 运行 result parallel_chain.invoke({topic: 人工智能}) print(result) # 输出{intro: ..., applications: ...}路由链import time from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.runnables import RunnableBranch, RunnablePassthrough from langchain_core.prompts import PromptTemplate from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser load_dotenv() # 1. 初始化 DeepSeek 模型 llm init_chat_model( modeldeepseek-chat, temperature0.7 ) # 定义分支提示 technical_prompt PromptTemplate.from_template(回答技术问题{question}) general_prompt PromptTemplate.from_template(回答一般问题{question}) # 定义路由逻辑 router_prompt PromptTemplate.from_template( 如果是技术问题返回 technical否则返回 general{question} ) router_chain router_prompt | llm | StrOutputParser() # 定义分支 branch RunnableBranch( (lambda x: technicalin x[route].lower(), technical_prompt | llm | StrOutputParser()), (lambda x: generalin x[route].lower(), general_prompt | llm | StrOutputParser()), general_prompt | llm | StrOutputParser() # 默认分支 ) # 组合链 chain { question: RunnablePassthrough(), route: router_chain } | branch # 运行 result chain.invoke({question: 如何优化 Python 代码}) print(result)输入处理RunnablePassthrough()直接传递原始问题router_chain生成路由结果步骤如下输入{question: 如何优化 Python 代码}路由链判断输出应为technical生成中间数据{ question: 如何优化 Python 代码, route: technical }分支选择匹配第一个条件执行技术分支链技术链处理模板格式化 → “回答技术问题如何优化 Python 代码”模型生成技术性回答输出解析为字符串最终输出优化Python代码的技术建议Memoryimport time from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables.history import RunnableWithMessageHistory from langchain_core.chat_history import InMemoryChatMessageHistory from langchain_core.output_parsers import StrOutputParser load_dotenv() # 1. 初始化 DeepSeek 模型 llm init_chat_model( modeldeepseek-chat, temperature0.7 ) # 模拟会话存储 store {} def get_session_history(session_id: str): if session_id notin store: store[session_id] InMemoryChatMessageHistory() return store[session_id] # 定义提示 prompt ChatPromptTemplate.from_messages([ (system, 你是一个助手), MessagesPlaceholder(variable_namehistory), (human, {input}) ]) # 创建链 chain prompt | llm | StrOutputParser() # 添加记忆 chain_with_history RunnableWithMessageHistory( chain, get_session_history, input_messages_keyinput, history_messages_keyhistory ) # 运行 config {configurable: {session_id: user1}} config2 {configurable: {session_id: user2}} print(chain_with_history.invoke({input: 你好我是季灾}, config)) print(chain_with_history.invoke({input: 我刚才说了什么}, config)) print(chain_with_history.invoke({input: 我的名字叫什么}, config2)) print(chain_with_history.invoke({input: 我的名字叫什么}, config))Cachingimport time from dotenv import load_dotenv from langchain.chat_models import init_chat_model from langchain_core.globals import set_llm_cache from langchain_core.caches import InMemoryCache from langchain_core.prompts import PromptTemplate from langchain_core.output_parsers import StrOutputParser load_dotenv() # 1. 初始化 DeepSeek 模型 llm init_chat_model( modeldeepseek-chat, temperature0.7 ) # 开启缓存 set_llm_cache(InMemoryCache()) # 定义链 prompt PromptTemplate.from_template(简单用一句话介绍 {topic}) chain prompt | llm | StrOutputParser() # 运行第一次调用 API print(chain.invoke({topic: 区块链})) print(第二次) # 运行从缓存读取 print(chain.invoke({topic: 区块链}))普通人如何抓住AI大模型的风口领取方式在文末为什么要学习大模型目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 大模型作为其中的重要组成部分 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 为各行各业带来了革命性的改变和机遇 。目前开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景其中应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。随着AI大模型技术的迅速发展相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业人工智能大潮已来不加入就可能被淘汰。如果你是技术人尤其是互联网从业者现在就开始学习AI大模型技术真的是给你的人生一个重要建议最后只要你真心想学习AI大模型技术这份精心整理的学习资料我愿意无偿分享给你但是想学技术去乱搞的人别来找我在当前这个人工智能高速发展的时代AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料能够帮助更多有志于AI领域的朋友入门并深入学习。真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】大模型全套学习资料展示自我们与MoPaaS魔泊云合作以来我们不断打磨课程体系与技术内容在细节上精益求精同时在技术层面也新增了许多前沿且实用的内容力求为大家带来更系统、更实战、更落地的大模型学习体验。希望这份系统、实用的大模型学习路径能够帮助你从零入门进阶到实战真正掌握AI时代的核心技能01教学内容从零到精通完整闭环【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块内容比传统教材更贴近企业实战大量真实项目案例带你亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事02适学人群应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。vx扫描下方二维码即可【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】本教程比较珍贵仅限大家自行学习不要传播更严禁商用03入门到进阶学习路线图大模型学习路线图整体分为5个大的阶段04视频和书籍PDF合集从0到掌握主流大模型技术视频教程涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向新手必备的大模型学习PDF书单来了全是硬核知识帮你少走弯路不吹牛真有用05行业报告白皮书合集收集70报告与白皮书了解行业最新动态0690份面试题/经验AI大模型岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要07 deepseek部署包技巧大全由于篇幅有限只展示部分资料并且还在持续更新中…真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】