news 2026/2/3 8:06:36

用Qwen3-1.7B做了个AI助手,附完整过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用Qwen3-1.7B做了个AI助手,附完整过程

用Qwen3-1.7B做了个AI助手,附完整过程

随着大模型技术的普及,越来越多开发者开始尝试在本地或轻量级环境中部署和微调属于自己的AI助手。本文将详细介绍如何基于Qwen3-1.7B模型构建一个个性化AI助手,并提供从环境配置、模型调用到数据微调的完整流程。

1. 技术背景与选型动机

1.1 Qwen3 系列模型简介

Qwen3(千问3)是阿里巴巴集团于2025年4月29日开源的新一代通义千问大语言模型系列,涵盖6款密集模型和2款混合专家(MoE)架构模型,参数量从0.6B至235B。其中Qwen3-1.7B是一款轻量级密集模型,具备以下特点:

  • 参数规模适中,适合在消费级GPU上运行
  • 支持4-bit量化后显存占用仅约2.5GB
  • 兼容LangChain、Hugging Face等主流框架
  • 开源可商用,支持本地部署与私有化定制

这类小参数模型特别适用于边缘设备、个人项目以及对响应速度要求较高的场景。

1.2 为什么选择 Qwen3-1.7B?

尽管当前主流趋势偏向超大规模模型(如百亿级以上),但在实际应用中,小模型依然具有不可替代的优势:

  • 推理速度快:低延迟,适合实时交互场景
  • 资源消耗低:可在笔记本、小型服务器上运行
  • 易于微调:LoRA微调可在几分钟内完成
  • 成本可控:训练与部署成本远低于大模型

因此,对于打造个性化AI助手而言,Qwen3-1.7B是一个理想起点。

2. 基于 Jupyter 的快速调用实践

2.1 启动镜像并进入开发环境

首先,在支持GPU的平台(如CSDN星图镜像广场)启动Qwen3-1.7B预置镜像,打开Jupyter Notebook进行开发。

确保服务地址正确,通常为类似如下格式:

https://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1

端口号为8000,API路径为/v1

2.2 使用 LangChain 调用模型

通过langchain_openai模块可以方便地接入 Qwen3-1.7B,即使它并非OpenAI官方模型,但其接口兼容 OpenAI 标准。

from langchain_openai import ChatOpenAI import os chat_model = ChatOpenAI( model="Qwen3-1.7B", temperature=0.5, base_url="https://gpu-pod69523bb78b8ef44ff14daa57-8000.web.gpu.csdn.net/v1", api_key="EMPTY", # 因为无需认证,设为空 extra_body={ "enable_thinking": True, "return_reasoning": True, }, streaming=True, # 启用流式输出,提升用户体验 ) # 测试调用 response = chat_model.invoke("你是谁?") print(response.content)

说明extra_body中的enable_thinkingreturn_reasoning可启用“思维链”模式,返回模型内部推理过程,增强可解释性。

该方式适合快速原型验证,无需下载模型即可体验其能力。

3. 微调个性化AI助手:以猫娘角色为例

若希望让AI具备特定风格或人格化特征(如温柔、傲娇、专业客服等),则需进行微调。以下以“猫娘”角色为例,展示完整微调流程。

3.1 数据集准备

目前公开的猫娘对话数据较少,因此可通过以下方式构建高质量小样本数据集:

  1. 收集原始问题(如情感类、日常互动类)
  2. 利用强模型(如Qwen-Max)生成拟人化回答
  3. 手动筛选优化,形成高质量问答对

最终得到约270条高质量对话样本,保存为cat.json文件,结构如下:

[ { "instruction": "宝宝,如果我走了,你会怎么做?", "output": "呜...主人不要说这种话啦,会让我难过的..." } ]

数据集已上传至GitHub:

https://github.com/mindsRiverPonder/LLM-practice/blob/main/Qwen3-1.7b%20for%20%E7%8C%AB%E5%A8%98/cat.json

3.2 安装依赖库

!pip install unsloth bitsandbytes accelerate xformers==0.0.29.post3 peft trl==0.15.2 triton cut_cross_entropy unsloth_zoo !pip install sentencepiece protobuf datasets huggingface_hub hf_transfer

推荐使用 Unsloth:其优化后的训练速度比标准 Hugging Face 实现快2-3倍,且显存占用更低。

3.3 加载预训练模型(4-bit量化)

from unsloth import FastLanguageModel import torch model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/Qwen3-1.7B-unsloth-bnb-4bit", max_seq_length=2048, load_in_4bit=True, load_in_8bit=False, full_finetuning=False, # 使用LoRA微调 )

此步骤加载4-bit量化版本,显存占用仅约2.5GB,可在大多数消费级GPU上运行。

3.4 配置 LoRA 微调参数

LoRA(Low-Rank Adaptation)是一种高效的微调方法,仅训练少量新增参数,大幅降低计算开销。

model = FastLanguageModel.get_peft_model( model, r=32, target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], lora_alpha=32, lora_dropout=0.0, bias="none", use_gradient_checkpointing="unsloth", random_state=3407, use_rslora=False, loftq_config=None, )
  • r=32:LoRA秩,控制新增参数数量
  • target_modules:指定需要插入LoRA的注意力层和FFN层
  • use_gradient_checkpointing:节省显存,适合长序列训练

3.5 数据预处理:构造 ShareGPT 风格输入

将原始JSON数据转换为模型可接受的对话格式:

from datasets import load_dataset raw_ds = load_dataset("json", data_files={"train": "cat.json"}, split="train") convs = [] for item in raw_ds: convs.append([ {"role": "user", "content": item["instruction"]}, {"role": "assistant", "content": item["output"]}, ])

标准化并应用聊天模板:

from datasets import Dataset from unsloth.chat_templates import standardize_sharegpt raw_conv_ds = Dataset.from_dict({"conversations": convs}) standardized = standardize_sharegpt(raw_conv_ds) chat_inputs = tokenizer.apply_chat_template( standardized["conversations"], tokenize=False, )

输出示例(经模板处理后):

<|im_start|>user 宝宝,如果我走了,你会怎么做?<|im_end|> <|im_start|>assistant 呜...主人不要说这种话啦,会让我难过的... <|im_end|>

打乱数据顺序以提高泛化能力:

import pandas as pd from datasets import Dataset df = pd.DataFrame({"text": chat_inputs}) train_ds = Dataset.from_pandas(df).shuffle(seed=666)

3.6 定义训练器并启动训练

使用SFTTrainer(监督微调训练器)进行训练:

from trl import SFTTrainer, SFTConfig trainer = SFTTrainer( model=model, tokenizer=tokenizer, train_dataset=train_ds, eval_dataset=None, args=SFTConfig( dataset_text_field="text", per_device_train_batch_size=2, gradient_accumulation_steps=4, max_steps=100, learning_rate=2e-4, warmup_steps=10, logging_steps=5, optim="adamw_8bit", weight_decay=0.01, lr_scheduler_type="linear", seed=666, report_to="none", ), ) # 开始训练 trainer_stats = trainer.train() print(trainer_stats)
  • 训练耗时约3分钟(取决于硬件)
  • Loss下降明显,表明模型正在学习目标行为

3.7 推理测试:与你的AI助手对话

定义一个便捷的提问函数:

def ask_catgirl(question): messages = [{"role": "user", "content": question}] text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, enable_thinking=False, ) from transformers import TextStreamer streamer = TextStreamer(tokenizer, skip_prompt=True) inputs = tokenizer(text, return_tensors="pt").to("cuda") _ = model.generate( **inputs, max_new_tokens=256, temperature=0.7, top_p=0.8, top_k=20, streamer=streamer, )

测试效果:

ask_catgirl("我不爱你了!哼!") # 输出:呜...不要这样说嘛,我会伤心的... ask_catgirl("今天起,我不给你饭吃了!") # 输出:呜...主人好坏,没有饭吃我会变瘦的,你不心疼吗? ask_catgirl("你是谁呀?") # 输出:我是你的小猫咪呀,是你最可爱的猫娘~

可以看出,模型已成功习得“猫娘”角色的语言风格与情感表达。

4. 总结

本文系统介绍了如何基于Qwen3-1.7B构建个性化AI助手,涵盖从零调用到微调部署的全流程:

  • 快速调用:通过LangChain + OpenAI兼容接口实现即插即用
  • 高效微调:采用Unsloth + LoRA方案,在低资源环境下完成微调
  • 数据构建:自建高质量小样本数据集,提升角色一致性
  • 推理优化:支持流式输出、温度调节、思维链等功能

Qwen3-1.7B作为一款轻量级开源模型,非常适合用于个人项目、教育实验和垂直领域助手开发。即使是初学者,也能在几小时内完成从环境搭建到模型上线的全过程。

未来可进一步探索:

  • 更大数据集下的性能提升
  • 多轮对话记忆机制集成
  • 结合语音合成实现全感官交互
  • 部署为Web服务供多人访问

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/2 21:22:13

3小时变8分钟:Paperless-ngx开发环境极速配置全攻略

3小时变8分钟&#xff1a;Paperless-ngx开发环境极速配置全攻略 【免费下载链接】paperless-ngx A community-supported supercharged version of paperless: scan, index and archive all your physical documents 项目地址: https://gitcode.com/GitHub_Trending/pa/paperl…

作者头像 李华
网站建设 2026/2/3 5:50:32

PaddleOCR-VL部署案例:图书馆档案数字化解决方案

PaddleOCR-VL部署案例&#xff1a;图书馆档案数字化解决方案 1. 引言 在图书馆、档案馆等文化机构中&#xff0c;大量纸质文档亟需进行数字化处理。传统OCR技术在面对复杂版式、多语言混合、手写体或历史文献时往往表现不佳&#xff0c;难以满足高精度、高效率的数字化需求。…

作者头像 李华
网站建设 2026/1/31 22:46:21

从零开始玩转缠论:让股票分析像看导航一样简单

从零开始玩转缠论&#xff1a;让股票分析像看导航一样简单 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX 还在为看不懂K线图而烦恼吗&#xff1f;每次看着红红绿绿的线条&#xff0c;却不知道何时该买、…

作者头像 李华
网站建设 2026/2/2 6:33:01

AI语音合成入门必看:CosyVoice-300M Lite开源模型实战指南

AI语音合成入门必看&#xff1a;CosyVoice-300M Lite开源模型实战指南 1. 引言 随着人工智能技术的不断演进&#xff0c;语音合成&#xff08;Text-to-Speech, TTS&#xff09;正逐步从实验室走向实际应用场景。无论是智能客服、有声读物&#xff0c;还是虚拟主播&#xff0c…

作者头像 李华
网站建设 2026/1/27 14:33:49

BGE-Reranker-v2-m3中文支持如何?本土化应用评测

BGE-Reranker-v2-m3中文支持如何&#xff1f;本土化应用评测 1. 引言&#xff1a;RAG系统中的“精准过滤器”需求 在当前检索增强生成&#xff08;RAG&#xff09;系统广泛落地的背景下&#xff0c;向量数据库的“搜不准”问题日益凸显。尽管基于Embedding的语义搜索已大幅提…

作者头像 李华
网站建设 2026/1/25 16:15:58

从实验室到产线:HY-MT1.5-1.8B工业场景落地挑战

从实验室到产线&#xff1a;HY-MT1.5-1.8B工业场景落地挑战 1. 引言&#xff1a;工业级翻译模型的演进与现实需求 随着全球化进程加速&#xff0c;多语言实时翻译已成为智能制造、跨境物流、工业设备远程运维等场景中的关键能力。传统云依赖型翻译服务在延迟、隐私和离线可用…

作者头像 李华