LangChain 入门到进阶:基于 OpenAI Compatible API 的实践指南

发布时间:2026/10/24 0:51:54

LangChain 入门到进阶:基于 OpenAI Compatible API 的实践指南 LangChain 入门到进阶基于 OpenAI Compatible API 的实践指南前言本文通过一系列由浅入深的练习帮助大家快速掌握 LangChain 的核心用法。所有示例均基于 OpenAI Compatible API通义千问等请根据实际情况替换模型配置。环境准备首先安装依赖pipinstalllangchain langchain-core python-dotenv pydantic配置.env文件DASHSCOPE_API_KEYyour_api_key_here DASHSCOPE_BASE_URLyour_base_url第一阶段基础对话1.1 模型初始化与批量调用test001.pyfromlangchain.chat_modelsimportinit_chat_modelfromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)# 批量调用responsesmodel.batch([你好简单介绍下自己。,用一句话介绍 LangChain。,什么是 OpenAI-compatible,])forresponseinresponses:print(response.content)知识点init_chat_model()统一初始化聊天模型model.batch()批量处理多个请求1.2 带历史的消息对话test005.pyfromlangchain.chat_modelsimportinit_chat_modelfromlangchain_core.messagesimportSystemMessage,HumanMessage,AIMessagefromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)messages[SystemMessage(content你是一个乐于助人的 AI 助手。),HumanMessage(content你好我是Yuan老师。),AIMessage(content你好很高兴认识你。),HumanMessage(content我刚才说我是谁),]responsemodel.invoke(messages)print(response.content)知识点SystemMessage系统消息设定 AI 角色HumanMessage用户消息AIMessageAI 回复消息完整的消息历史让模型能理解上下文第二阶段提示词模板2.1 ChatPromptTemplate 格式化test006.pyfromlangchain_core.promptsimportChatPromptTemplatefromlangchain.chat_modelsimportinit_chat_modelfromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)promptChatPromptTemplate.from_messages([(system,你是{device_type}设备的客服助手回答要简洁、准确。),(human,用户问题{question}),])messagesprompt.format_messages(device_type智能音箱,question你好我想知道怎么和智能音箱交互。,)responsemodel.invoke(messages)print(response.content)2.2 LCEL 管道符组合test007.pyfromlangchain_core.promptsimportChatPromptTemplatefromlangchain.chat_modelsimportinit_chat_modelfromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)promptChatPromptTemplate.from_messages([(system,你是{device_type}设备的客服助手回答要简洁、准确。),(human,用户问题{question}),])# 使用 LCEL 管道符chainprompt|model responsechain.invoke({device_type:智能音箱,question:你好我想知道手机怎么智能音箱连接,})print(response.content)知识点ChatPromptTemplate.from_messages()构建提示词模板|管道符LangChain Expression Language (LCEL)将 prompt 和 model 连接成链这种方式更灵活便于复用和调试第三阶段流式输出3.1 基本流式调用test001.py中的流式示例streammodel.stream(python和js的区别)forchunkinstream:print(chunk.content,end,flushTrue)3.2 Agent 流式输出处理test002.pyfromlangchain.agentsimportcreate_agentfromlangchain.chat_modelsimportinit_chat_modelfromlangchain_core.messagesimportSystemMessage,HumanMessage,AIMessagefromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)agentcreate_agent(modelmodel)messages[SystemMessage(content你是一个乐于助人的 AI 助手。),HumanMessage(content你好我是教 AI 的 Yuan 老师。),AIMessage(content你好Yuan 老师很高兴认识你。),HumanMessage(content请查询 SpaceX 最近 7 天的最新消息。),]resagent.stream({messages:messages})# 收集所有 chunkfull_responseNoneforchunkinres:iffull_responseisNone:full_responsechunkelse:full_response{**full_response,**chunk}formessageinfull_response[messages]:message.pretty_print()知识点model.stream()流式输出字词逐个返回agent.stream()Agent 流式响应返回消息列表流式输出提升用户体验尤其适合长文本生成第四阶段多模态 - 图片处理4.1 本地图片处理test003.pyimportbase64importmimetypesfrompathlibimportPathfromlangchain.chat_modelsimportinit_chat_modelfromlangchain_core.messagesimportHumanMessagefromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)deflocal_image_to_data_url(image_path:str)-str:pathPath(image_path).resolve()ifnotpath.exists():path(Path(__file__).parent/image_path).resolve()mime_type,_mimetypes.guess_type(path.suffix)ifnotmime_type:mime_typeimage/pngdatapath.read_bytes()b64base64.b64encode(data).decode()returnfdata:{mime_type};base64,{b64}image_urllocal_image_to_data_url(./avatar2.png)essageHumanMessage(content[{type:text,text:请描述这张图片。},{type:image_url,image_url:{url:image_url}},])resmodel.stream([message])forrinres:print(r.content,end,flushTrue)4.2 网络图片处理test004.pyfromlangchain.chat_modelsimportinit_chat_modelfromlangchain_core.messagesimportHumanMessagefromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)messageHumanMessage(content[{type:text,text:请描述这张图片。},{type:image_url,image_url:{url:https://example.com/image.png},},])forchunkinmodel.stream([message]):print(chunk.content)知识点图片需转为 Base64 Data URL 格式支持本地路径和网络 URL多模态模型可理解图像内容并回答相关问题第五阶段结构化输出test008.pyfromlangchain.chat_modelsimportinit_chat_modelfrompydanticimportBaseModel,Fieldfromdotenvimportload_dotenvimportos load_dotenv()modelinit_chat_model(modelqwen35-35b-a3b-fp8,model_provideropenai,api_keyos.getenv(DASHSCOPE_API_KEY),base_urlos.getenv(DASHSCOPE_BASE_URL),temperature0.7,)classMovie(BaseModel):title:strField(...,description电影名称)year:intField(...,description上映年份)director:strField(...,description导演)rating:floatField(...,description评分满分 10 分)model_with_structuremodel.with_structured_output(Movie,include_rawTrue)responsemodel_with_structure.invoke(你好我想知道电影如果爱的详细信息。)print(response)知识点with_structured_output()让模型输出符合 Pydantic 模型定义的结构化数据include_rawTrue同时返回原始响应和解析后的结构化对象适用于需要提取特定字段的场景总结阶段核心内容适用场景基础init_chat_model、invoke、batch简单对话、批量处理模板ChatPromptTemplate、LCEL|提示词复用、链式调用流式stream长文本生成、实时交互多模态图片 Base64/URL图文理解、视觉问答结构化with_structured_output数据提取、API 响应注意事项敏感信息生产环境中请勿将 API Key 硬编码建议使用环境变量或密钥管理服务编码处理Windows 环境下可能需要配置 UTF-8 编码importsysimportio sys.stdoutio.TextIOWrapper(sys.stdout.buffer,encodingutf-8)sys.stderrio.TextIOWrapper(sys.stderr.buffer,encodingutf-8)模型选择不同模型对多模态、结构化输出的支持程度不同请参考模型文档
延伸阅读

更多相关文章

2026/10/23 15:42:57

电商主图的生产成本账:外包、自研、AI 工具,怎么选更划算

电商主图看起来是"一张图",本质却是强视觉资源:能不能被一眼看懂、点击率、转化率,都压在图上。团队里没有专职设计的时候,主流的做法就三条——外包、自研、用现成的 AI 工具。我把自己算过的账整理一下,供…

2026/10/24 0:47:45

libvirt安装实战:从环境检查到创建第一台虚拟机与排错

1. 先搞清楚要装的是什么:libvirt 这一层到底管什么很多人在安装 libvirt 之前,其实对它的定位是模糊的。你可能会问:我直接用 qemu-system-x86_64 命令不也能启动虚拟机吗?为什么还要额外装一个 libvirt 和一堆配套的包&#xff…

2026/10/24 0:47:45

MATLAB CT切片三维重建:从DICOM读取到等值面可视化完整流程

简介:这份资源面向医学影像处理与计算机视觉方向的学习者,提供一套用MATLAB实现CT图像三维重建的完整脚本,适合具备一定MATLAB编程与图像处理基础、希望动手实践面绘制重建流程的读者。压缩包共16个文件,约238KB,其中3…

2026/10/24 0:47:45

PHP调用WinBinder创建Windows原生窗口:从环境配置到事件循环实战

1. 为什么后端脚本会需要"打开一个Windows窗口"——别急着说不适合我自己接过一个活儿:后台统计脚本跑完了一堆数据,结果全都躺在CSV里,业务同事每次都要让我再写个小网页去看。折腾了几轮之后,我突然意识到一个很朴素的…

2026/10/24 0:47:45

直线天线阵MATLAB仿真:从绘图到工程闭环的完整实现

简介:本资源是一份面向电子工程专业学生、天线方向初学者及MATLAB仿真实践者的直线天线阵建模仿真教学包,聚焦通信与雷达系统中波束成形、方向图调控等核心问题。压缩包共9个文件,含1个主程序脚本(Linear_array_antenna_logodo.m&…

2026/10/24 0:47:44

Java二手车拍卖系统实战:并发出价、乐观锁与延时竞拍

简介:这是一套基于Java实现的二手车交易拍卖系统毕业设计程序,面向计算机相关专业需要完成毕设或课程设计的学生,也适合希望参考完整管理系统开发流程的Java学习者。资源压缩包约10.96MB,内含可运行的程序源代码一份与配套数据库文…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑