简单几步在Jupyter中调用Qwen3-1.7B并集成LangChain工作流1. 引言如果你正在寻找一个既轻量又聪明的大模型能快速集成到你的自动化流程里那么Qwen3-1.7B很可能就是你的菜。它来自阿里巴巴的通义千问家族虽然个头不大但理解能力和生成效果都相当不错。但光有一个好模型还不够怎么把它用起来才是关键。直接写代码调用每次都要处理网络请求、解析结果太麻烦了。这时候LangChain就派上用场了。它就像一个大模型的“万能插座”让你能用统一的方式调用各种模型还能轻松地把多个步骤串起来做成自动化的工作流。今天这篇文章我就带你走一遍完整的流程从启动环境到调用模型再到用LangChain搭建一个能实际干活的小系统。整个过程很简单跟着做就行。2. 准备工作启动环境与理解核心工具2.1 快速启动你的AI开发环境最省事的方法就是使用已经配置好的环境。这里我们以CSDN星图平台提供的预置镜像为例几步就能搞定访问平台搜索包含“Qwen3”关键词的镜像。找到合适的镜像比如qwen3-inference点击创建实例。等待实例启动完成然后打开提供的Jupyter Notebook链接。就这么简单一个包含了Qwen3模型服务和常用Python库包括LangChain的环境就准备好了。你不需要自己安装模型、配置环境省去了大量繁琐的步骤。2.2 认识我们的两位主角Qwen3-1.7B与LangChain在动手之前我们先花一分钟了解一下要用的工具。Qwen3-1.7B是什么你可以把它想象成一个专门处理文字的小型智能引擎。它最大的特点就是“小而精”体积小参数只有17亿相比动辄几百亿的大模型它对电脑资源的要求低得多启动和运行都快。能力强在代码生成、逻辑推理、多轮对话这些任务上表现远超同尺寸的模型完全能满足很多自动化场景的需求。好接入它提供了一个和OpenAI模型兼容的接口。这意味着所有能调用ChatGPT的工具理论上都能直接用来调用它兼容性非常好。LangChain能帮我们做什么LangChain是一个专门用来构建大模型应用的框架。它主要解决了两个痛点统一接口不管背后是Qwen、GPT还是其他什么模型你都可以用几乎相同的代码去调用不用为每个模型写一套逻辑。组装流程它提供了“链”Chain这个概念让你能把“提问 - 处理回答 - 再提问 - 输出结果”这一系列步骤像搭积木一样组合起来快速构建复杂的应用。我们的目标就是把Qwen3-1.7B这个“智能引擎”通过LangChain这个“万能适配器和组装线”集成到我们自己的Jupyter工作流里。3. 第一步在Jupyter中成功调用Qwen3-1.7B万事开头难但调用Qwen3-1.7B的开头特别简单。因为它的接口和OpenAI模型是兼容的我们可以直接用LangChain里现成的ChatOpenAI这个类来调用它。打开你的Jupyter Notebook新建一个代码单元格把下面的代码贴进去运行。from langchain_openai import ChatOpenAI # 初始化模型客户端 chat_model ChatOpenAI( modelQwen3-1.7B, # 指定使用Qwen3-1.7B模型 temperature0.5, # 控制回答的随机性0.1更确定1.0更有创意 base_urlhttp://localhost:8000/v1, # 重点这是模型服务的地址需要根据你的环境修改 api_keyEMPTY, # 本地服务通常不需要密钥填EMPTY即可 streamingTrue, # 启用流式输出回答会一个字一个字显示体验更好 ) # 发起一次简单的对话 response chat_model.invoke(你是谁) print(response.content)代码说明与注意事项这段代码的核心是创建了一个ChatOpenAI对象但请注意base_url这个参数。它告诉程序去哪里找模型服务。关键修改点示例中的base_urlhttp://localhost:8000/v1是一个占位符。在实际的CSDN星图镜像环境中这个地址通常是动态生成的格式类似https://gpu-pod[一串ID]-8000.web.gpu.csdn.net/v1。如何找到正确的地址你需要在启动的Jupyter环境中查看模型服务实际运行的地址和端口通常是8000然后替换掉上面的base_url。其他参数temperature可以理解为“想象力”开关。写正式报告时调低如0.2让回答更稳定需要创意时调高如0.8。streamingTrue开启后模型生成回答时会像打字一样逐步显示适合长时间任务。运行成功后你应该会看到模型返回的自我介绍例如“我是通义千问由阿里巴巴开发的大语言模型...”。这说明你的模型调用通道已经打通了4. 第二步用LangChain构建你的第一个自动化工作流仅仅能问答还不够我们要让它能按流程干活。假设你每天下班前都要写工作日报这个过程很固定总结进展、提出问题、计划明天。我们可以用LangChain把这个过程自动化。下面我们来构建一个“智能日报生成器”。4.1 定义任务与提示模板首先我们需要告诉模型我们要它做什么以及做成什么样子。这通过“提示模板”来实现。from langchain.prompts import PromptTemplate # 创建一个提示模板告诉模型我们的具体要求和格式 report_prompt_template 你是一个专业的职场助手请根据我提供的今日工作流水账整理成一份结构清晰、语言精炼的日报。 请严格按照以下三个部分组织内容每个部分列出2-3条关键点 【今日完成】 【遇到的问题】 【明日计划】 我的原始工作记录如下 {raw_input} # 将文本模板实例化 prompt PromptTemplate.from_template(report_prompt_template)这个模板里{raw_input}是一个占位符后面我们会把具体的工作内容填进去。模板开头的指令非常关键它明确了角色职场助手、任务整理日报和输出格式三个部分这能极大地提高模型输出结果的质量和稳定性。4.2 组装工作流链条接下来我们用LangChain的LLMChain把“提示模板”和“模型调用”这两个环节链接起来形成一个完整的工作流。from langchain.chains import LLMChain # 使用之前创建好的 chat_model 和 prompt daily_report_chain LLMChain(llmchat_model, promptprompt) # 准备原始的工作内容 my_work_log 上午修复了用户注册页面手机号验证码发送失败的bug。 下午和产品经理讨论了新版搜索功能的需求画了初步的原型图。 中间服务器在下午3点左右出现了一次短暂卡顿已重启恢复原因待查。 明天打算开始编写搜索功能的后端API接口。 另外还需要找设计同事确认一下首页Banner的样式。 # 运行工作流生成日报 result daily_report_chain.invoke({raw_input: my_work_log}) print(生成的日报\n) print(result[text])运行这段代码你会得到一份整理好的日报可能长这样【今日完成】 1. 修复了用户注册页面手机验证码发送失败的问题。 2. 与产品经理讨论了新版搜索功能需求并完成了初步原型设计。 【遇到的问题】 1. 服务器在下午3点发生短暂卡顿已通过重启临时解决根本原因尚待排查。 【明日计划】 1. 开始编写新版搜索功能的后端API接口。 2. 与设计同事沟通确认首页Banner的最终样式。看原本杂乱的工作记录被自动整理成了结构清晰的日报。LLMChain的作用就是接收输入工作记录套用模板调用模型最后输出结果。你可以把my_work_log换成任何文本它都能按这个流程处理。5. 第三步让工作流更强大、更实用基础功能有了但我们还可以让它变得更聪明、更好用。这里介绍两个马上就能用上的进阶技巧。5.1 增加记忆能力实现多轮对话默认情况下模型每次回答都是独立的它不记得之前说过什么。但在客服、辅导等场景我们需要它能联系上下文。LangChain的“记忆”组件可以轻松实现这一点。from langchain.memory import ConversationBufferMemory from langchain.chains import ConversationChain # 创建一个记忆体用来保存对话历史 memory ConversationBufferMemory() # 创建一个带有记忆的对话链 conversation ConversationChain(llmchat_model, memorymemory) # 第一轮对话 print(conversation.invoke(我想学习Python应该从哪里开始)[response]) # 第二轮对话模型会记得之前聊过Python print(conversation.invoke(那数据分析方面呢有什么推荐的库吗)[response])ConversationBufferMemory会像记事本一样自动记录你和模型的整个对话过程。当你进行后续提问时它会把这些历史信息一并送给模型这样模型就能做出有连贯性的回答体验更自然。5.2 处理长内容与网络问题流式输出告别漫长等待当模型需要生成很长一段文字时如果等它全部生成完再显示用户会面对一个空白的屏幕干等。开启流式输出可以改善体验。# 初始化时已设置 streamingTrue # 调用时使用 .stream() 方法 for chunk in chat_model.stream(请为我写一篇关于人工智能未来发展的短文约200字。): print(chunk.content, end, flushTrue) # 逐字打印实现“打字机”效果添加重试机制让程序更健壮网络请求偶尔会失败。我们可以用一个简单的装饰器让程序在失败时自动重试几次增加稳定性。import time from tenacity import retry, stop_after_attempt, wait_exponential # 定义一个带重试的调用函数 retry(stopstop_after_attempt(3), waitwait_exponential(multiplier1, max4)) def robust_model_call(chain, input_text): try: response chain.invoke({raw_input: input_text}) return response except Exception as e: print(f请求出错: {e}正在重试...) raise e # 触发重试 # 使用这个函数来调用你的工作流 result robust_model_call(daily_report_chain, my_work_log)这段代码会在调用失败后等待一段时间等待时间会指数级增长然后最多重试3次。对于临时的网络波动非常有效。6. 总结我们来回顾一下今天完成的几件关键事情环境搭建利用预置的镜像环境我们跳过了复杂的模型部署和依赖安装直接获得了一个包含Qwen3-1.7B和LangChain的Jupyter工作台。模型调用借助LangChain的ChatOpenAI接口我们只用几行代码就成功调用了Qwen3-1.7B模型。关键在于正确配置base_url指向模型服务地址。工作流构建通过PromptTemplate定义任务指令再用LLMChain将模板和模型组装起来我们创建了一个可以自动生成工作日报的智能流程。这展示了如何将零散的模型调用升级为可重复使用的自动化任务。功能增强我们进一步为工作流添加了记忆功能ConversationBufferMemory使其能进行连贯对话并引入了流式输出和错误重试机制提升了用户体验和程序鲁棒性。这个过程的核心思路是“拼接”LangChain提供了各种标准化的“积木块”模型调用、提示模板、记忆模块、工具等我们的工作就是根据业务逻辑把这些积木块拼接成一个能自动运行的智能流程。你现在已经拥有了一个起点。可以基于这个“日报生成器”框架轻松改造出其他自动化工具比如将提示模板改成客服话术就是一个智能问答机器人。结合网页抓取工具就能做一个新闻摘要生成器。接入数据库可以开发智能报表分析助手。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。