Qwen3-0.6B + LangChain:5分钟构建智能问答系统
1. 引言:为什么是Qwen3-0.6B + LangChain?
你有没有试过——想快速验证一个业务想法,却卡在“搭个能对话的模型要花半天”上?
想给内部知识库加个问答入口,结果发现部署大模型光环境配置就折腾掉一整天?
或者只是单纯想看看最新千问模型到底有多聪明,但又不想被复杂的推理框架绕晕?
别担心。今天这篇文章,就是为你写的。
我们不讲原理、不调参数、不编译源码,只用5分钟,在CSDN星图镜像里点几下、粘贴一段代码、输入一个问题——就能跑通一个真正可用的智能问答系统。
核心就两个关键词:
Qwen3-0.6B:阿里2025年4月刚开源的轻量级旗舰模型,6亿参数,推理快、响应稳、中文理解强,对消费级显卡(甚至部分CPU)也足够友好;
LangChain:不是从零写API调用,而是用它封装好的标准接口,把模型变成“可插拔组件”,后续还能轻松接入文档、数据库、工具链。
这不是概念演示,也不是玩具Demo——它能真实回答技术问题、解析用户提问、支持流式输出,且全程在Jupyter中完成,零依赖安装。
接下来,我们就从打开浏览器开始,一步步把它跑起来。
2. 环境准备:一键启动,无需本地安装
2.1 启动镜像并进入Jupyter
CSDN星图镜像已预装Qwen3-0.6B服务和完整开发环境。你只需三步:
- 在CSDN星图镜像广场搜索
Qwen3-0.6B,点击启动; - 等待状态变为「运行中」后,点击「打开Jupyter」按钮;
- 自动跳转至Jupyter Lab界面,新建一个Python Notebook。
注意:镜像内已内置模型服务,监听地址为
https://gpu-pod694e6fd3bffbd265df09695a-8000.web.gpu.csdn.net/v1(端口固定为8000),无需额外启动FastAPI或vLLM服务。
2.2 验证服务连通性(可选)
在第一个Cell中运行以下命令,确认后端服务正常响应:
import requests url = "https://gpu-pod694e6fd3bffbd265df09695a-8000.web.gpu.csdn.net/v1/models" headers = {"Authorization": "Bearer EMPTY"} try: resp = requests.get(url, headers=headers, timeout=5) print(" 模型服务已就绪") print("可用模型列表:", resp.json().get("data", [])) except Exception as e: print("❌ 服务连接失败,请检查镜像状态:", str(e))如果看到模型服务已就绪,说明一切准备就绪——现在,正式进入LangChain集成环节。
3. LangChain调用:三行代码接入Qwen3-0.6B
3.1 安装依赖(仅首次需要)
LangChain生态中,langchain-openai是最轻量、兼容性最好的LLM适配器之一。它不绑定OpenAI,而是通过统一的OpenAI兼容接口(OpenAI-compatible API)对接各类模型服务。
在Notebook中执行:
!pip install -q langchain-openai无需安装transformers、torch、vLLM等重型依赖——镜像已预装全部运行时。
3.2 初始化Chat模型实例
这是最关键的一步。我们用ChatOpenAI类伪装成“OpenAI客户端”,实际指向Qwen3-0.6B服务:
from langchain_openai import ChatOpenAI import os chat_model = ChatOpenAI( model="Qwen-0.6B", temperature=0.5, base_url="https://gpu-pod694e6fd3bffbd265df09695a-8000.web.gpu.csdn.net/v1", api_key="EMPTY", extra_body={ "enable_thinking": True, "return_reasoning": True, }, streaming=True, )逐项说明其含义(全是人话):
model="Qwen-0.6B":告诉LangChain,我们要用的是这个模型名(注意不是HuggingFace路径);base_url:指向镜像内已运行的Qwen3服务地址(请勿修改,该地址由镜像动态生成,端口必须是8000);api_key="EMPTY":Qwen3服务默认关闭鉴权,填任意字符串均可,"EMPTY"是约定俗成写法;extra_body:传递Qwen3特有参数——开启思维链(enable_thinking)和返回推理过程(return_reasoning),让回答更透明、更可信;streaming=True:启用流式输出,回答会像打字一样逐字出现,体验更自然。
3.3 第一次对话:验证是否生效
运行下面这行,看模型能否正确自报家门:
chat_model.invoke("你是谁?")几秒后,你会看到类似这样的输出(实际内容以镜像为准):
我是Qwen3-0.6B,阿里巴巴全新推出的轻量级大语言模型,专为高效推理与中文场景优化设计。我支持多轮对话、逻辑推理和结构化输出。成功!你已经拥有了一个可编程的智能问答引擎。
4. 构建实用问答系统:从单次调用到完整流程
4.1 基础问答:支持多轮上下文
LangChain的ChatOpenAI天然支持消息历史。我们可以用messages列表模拟真实对话:
from langchain_core.messages import HumanMessage, SystemMessage messages = [ SystemMessage(content="你是一名资深AI技术助手,回答需简洁准确,优先给出结论,再简要解释。"), HumanMessage(content="Qwen3-0.6B和Qwen2相比,主要改进在哪里?"), ] response = chat_model.invoke(messages) print(" 回答:", response.content)你会发现,模型能理解“系统指令”,也能基于上下文延续话题——这正是构建问答机器人的基础能力。
4.2 流式响应:打造丝滑交互体验
对于Web界面或CLI工具,流式输出至关重要。LangChain提供标准回调接口:
from langchain_core.callbacks import StreamingStdOutCallbackHandler chat_stream = ChatOpenAI( model="Qwen-0.6B", temperature=0.3, base_url="https://gpu-pod694e6fd3bffbd265df09695a-8000.web.gpu.csdn.net/v1", api_key="EMPTY", streaming=True, callbacks=[StreamingStdOutCallbackHandler()], # 控制台实时打印 ) print(" 提问:如何用Python读取CSV文件并统计空值?") chat_stream.invoke("如何用Python读取CSV文件并统计空值?")运行后,文字将逐字输出,就像真人打字一样——这对后续接入Gradio、Streamlit或前端非常友好。
4.3 封装成可复用函数
把重复逻辑收进函数,提升复用性:
def ask_qwen(question: str, system_prompt: str = "") -> str: """ 快速向Qwen3-0.6B提问的封装函数 :param question: 用户问题 :param system_prompt: 可选的系统角色设定 :return: 模型回答文本 """ messages = [] if system_prompt: messages.append(SystemMessage(content=system_prompt)) messages.append(HumanMessage(content=question)) response = chat_model.invoke(messages) return response.content.strip() # 使用示例 answer = ask_qwen( "用一行代码生成斐波那契数列前10项", system_prompt="你是一个Python编程专家,只返回可直接运行的代码,不加任何解释" ) print("🐍 代码:", answer)输出示例:
🐍 代码: list(map(lambda x: x[0], [(0,1)] + [(b,a+b) for a,b in [(0,1)]*9]))你看,它真的懂“只返回代码”这个指令——这就是Qwen3-0.6B在指令遵循上的扎实表现。
5. 进阶能力扩展:让问答系统更强大
5.1 接入外部知识:一句话加载PDF/网页/文本
LangChain最强大的地方,不是调模型,而是连接世界。比如,你想让Qwen3回答你自己的产品文档:
from langchain_community.document_loaders import WebBaseLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_chroma import Chroma from langchain_openai import OpenAIEmbeddings from langchain_core.runnables import RunnablePassthrough from langchain_core.output_parsers import StrOutputParser # 示例:加载CSDN官网首页(替换为你自己的URL或本地文件) loader = WebBaseLoader("https://www.csdn.net/") docs = loader.load() # 切分+向量化(自动使用OpenAI Embedding兼容接口) text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) splits = text_splitter.split_documents(docs) vectorstore = Chroma.from_documents( documents=splits, embedding=OpenAIEmbeddings( base_url="https://gpu-pod694e6fd3bffbd265df09695a-8000.web.gpu.csdn.net/v1", api_key="EMPTY" ) ) retriever = vectorstore.as_retriever() # 构建RAG链(检索+生成) rag_chain = ( {"context": retriever | (lambda docs: "\n\n".join([d.page_content for d in docs])), "question": RunnablePassthrough()} | chat_model | StrOutputParser() ) # 提问(自动检索相关网页内容后作答) result = rag_chain.invoke("CSDN最近推出了什么新AI服务?") print(" RAG回答:", result)提示:这段代码在镜像中可直接运行。
OpenAIEmbeddings在此处仅作为向量接口代理,实际调用的是镜像内置的轻量嵌入模型(无需额外下载)。
5.2 添加工具调用:让模型“能做事”
Qwen3-0.6B原生支持工具调用(Tool Calling)。我们用LangChain定义一个简单计算器工具:
from langchain_core.tools import tool from langchain import hub from langchain.agents import create_openai_tools_agent, AgentExecutor @tool def multiply(a: float, b: float) -> float: """计算两数乘积""" return a * b @tool def add(a: float, b: float) -> float: """计算两数之和""" return a + b tools = [multiply, add] agent = create_openai_tools_agent(chat_model, tools, hub.pull("hwchase17/openai-tools-agent")) agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) # 让模型自主决定调用哪个工具 agent_executor.invoke({"input": "3.5乘以8.2再加上15等于多少?"})你会看到模型先思考步骤,再调用multiply和add工具,最后整合出答案——这才是真正意义上的“智能体”。
6. 部署与分享:不止于Notebook
6.1 导出为独立Web应用(Gradio)
只需增加5行代码,就能生成一个可分享的网页界面:
import gradio as gr def respond(message, history): messages = [HumanMessage(content=message)] response = chat_model.invoke(messages) return response.content gr.ChatInterface( respond, title="Qwen3-0.6B 智能问答助手", description="基于CSDN星图镜像的一键问答系统", examples=["Python怎么连接MySQL?", "帮我写一封辞职信"], ).launch(share=True) # share=True生成临时公网链接运行后,控制台会输出类似https://xxx.gradio.live的链接——发给同事,他们就能直接在浏览器里和Qwen3对话,无需任何安装。
6.2 打包为API服务(FastAPI轻量版)
如果你需要集成到现有系统,可用以下最小化FastAPI服务:
from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List app = FastAPI(title="Qwen3-0.6B API") class Message(BaseModel): role: str content: str class ChatRequest(BaseModel): messages: List[Message] temperature: float = 0.5 @app.post("/v1/chat/completions") async def chat_completion(request: ChatRequest): try: # 转换为LangChain格式 lc_messages = [] for m in request.messages: if m.role == "system": lc_messages.append(SystemMessage(content=m.content)) else: lc_messages.append(HumanMessage(content=m.content)) response = chat_model.invoke( lc_messages, temperature=request.temperature ) return { "choices": [{"message": {"role": "assistant", "content": response.content}}] } except Exception as e: raise HTTPException(status_code=500, detail=str(e)) # 启动命令(在终端中运行):uvicorn this_file:app --reload --host 0.0.0.0 --port 8001镜像已预装
fastapi和uvicorn,复制保存为app.py,终端执行uvicorn app:app --host 0.0.0.0 --port 8001即可对外提供标准OpenAI格式API。
7. 总结:你刚刚完成了什么?
我们没有写一行模型训练代码,没有配置CUDA环境,也没有手动加载权重——但你已经:
在5分钟内,从零搭建了一个可对话、可流式、可扩展的智能问答系统;
学会了用LangChain标准接口,把Qwen3-0.6B变成“即插即用”的AI组件;
实现了多轮对话、RAG知识增强、工具调用三大关键能力;
掌握了两种落地方式:Gradio快速共享、FastAPI标准API集成。
更重要的是,这一切都运行在CSDN星图镜像中——你不需要关心GPU驱动、CUDA版本、内存溢出,所有底层细节已被封装妥当。
下一步,你可以:
- 把公司内部的Confluence/Wiki页面喂给它,做成专属知识助手;
- 接入企业微信/飞书机器人,让全员随时提问;
- 替换为自己的PDF手册,生成产品FAQ Bot;
- 结合LangChain Agents,让它自动查文档、写报告、发邮件。
Qwen3-0.6B不是终点,而是一把钥匙。LangChain不是框架,而是一张地图。你现在,已经站在了AI应用开发的起跑线上。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。