ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Qwen-Chat 系统指令(System Prompt)完全指南:从角色扮演到行为定制的上下文内模型定制

Qwen-Chat 系统指令(System Prompt)完全指南:从角色扮演到行为定制的上下文内模型定制 人工智能大模型微调LoRA模型量化本地部署模型推理服务【免费下载链接】QwenThe official repo of Qwen (通义千问) chat pretrained large language model proposed by Alibaba Cloud.项目地址https://gitcode.com/GitHub_Trending/qw/Qwen点击查看免费下载系统指令System Prompt是控制 Qwen-Chat 行为模式的高层接口它让开发者可以在不重新训练模型的前提下通过一段自然语言实现角色扮演、语言风格迁移、任务设定与行为约束等上下文内in-context定制。本文以 Qwen 官方仓库中的 examples/system_prompt.md 为骨架结合 README.md、openai_api.py、finetune.py 等源码证据完整讲解系统指令的概念、能力边界、实战代码与底层实现原理读完你既能立即在本地跑起带系统指令的对话也能理解其在微调与 OpenAI 兼容服务中的落地方式。什么是系统指令系统指令System Prompt / System Prompts是设置在正式对话之前的一段特殊指令它预先定义了 AI 助手的行为模式覆盖人物设定、语言风格、任务模式甚至针对具体问题的具体行为。与普通对话历史中的用户消息不同系统指令具有两个鲜明特征易组织用户只需在一处集中描述期望的助手形象与行为约束无需在每轮提问中重复说明上下文稳定系统指令在整段对话中保持固定模型在多轮交互中始终需要参照它来生成回复。系统指令可以是宽泛的人物设定例如You are a helpful assistant也可以是非常详细的要求例如拒绝回答所有代码相关的问题。从一句话到数百字的行为规范系统指令都支持。要让模型真正跟随系统指令需要克服两个核心难点多轮稳定性系统指令必须在多轮对话中持续生效。例如角色扮演类指令设定后模型不应在几轮之后脱离角色设定基于指令的行为推理模型需要能够依据系统指令的内容自主推理出当前轮次应采取的行为。据文档与 README.md#L1155-L1164 所述Qwen-1.8B-Chat 与 Qwen-72B-Chat在多样且存在多轮复杂交互的系统指令上进行了充分训练因而能够跟随多样的系统指令实现上下文in-context中的模型定制化进一步提升通义千问系列模型的可扩展性。需要注意并非所有 Qwen 版本都具备同等强度的系统指令跟随能力代码注释明确指出当时仅 Qwen-72B-Chat 与 Qwen-1.8B-Chat 做了系统指令增强System Prompt Enhancement。系统指令能做什么四大典型应用围绕控制助手行为这一目标系统指令可以拆解为四类典型应用这也是文档给出的官方分类。角色扮演Role Play在系统指令中告诉 Qwen 你需要它扮演的角色即可沉浸式地与角色对话交流。角色可以是虚构人物、历史人物、特定职业也可以是猫娘老师等任意设定。角色扮演类指令对多轮稳定性要求最高——模型需要在连续多轮对话中始终保持人设一致。语言风格Language Style无需修改模型参数仅通过一条系统指令即可简单调整 Qwen-Chat 的语言风格例如用二次元可爱语气说话用学术严谨的文风回答以诗人的口吻回复等。语言风格迁移适合营销文案、内容创作、客服话术等需要统一语气的场景。任务设定Task Setting通过指定具体任务可以打造处理专项任务的 Qwen 模型。例如把助手设定为代码评审专家合同审核员英语陪练等让模型在对话开始前就进入对应任务模式减少每轮追问补充的沟通成本。行为设定Behavior Setting行为设定关注的是面对具体任务时如何行动例如先分析需求再给出方案遇到不确定信息时明确说明拒绝回答所有代码相关的问题。这类指令常用于设定回答边界、输出格式约束与安全规范。快速上手基于 Transformers 的代码示例文档提供了完整的 Python 调用示例核心在于model.chat()接口的system参数。下面给出可直接运行的完整代码from transformers import AutoModelForCausalLM, AutoTokenizer from transformers.generation import GenerationConfig tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen-1_8B-Chat, trust_remote_codeTrue) # 注意目前仅 Qwen-72B-Chat 与 Qwen-1.8B-Chat 具备系统指令增强能力。 model AutoModelForCausalLM.from_pretrained(Qwen/Qwen-1_8B-Chat, device_mapauto, trust_remote_codeTrue).eval() # 若要使用 72B 版本取消下面一行的注释 # model AutoModelForCausalLM.from_pretrained(Qwen/Qwen-72B-Chat, device_mapauto, trust_remote_codeTrue).eval() # 中文风格定制以 system 参数传入系统指令 response, _ model.chat(tokenizer, 你好呀, historyNone, system请用二次元可爱语气和我说话) print(response) # 你好啊我是一只可爱的二次元猫咪哦不知道你有什么问题需要我帮忙解答吗 # 英文行为定制system 支持任意语言的自然语言指令 response, _ model.chat(tokenizer, My colleague works diligently, historyNone, systemYou will write beautiful compliments according to needs) print(response) # Your colleague is an outstanding worker! Their dedication and hard work are truly inspiring. They always go above and beyond to ensure that their tasks are completed on time and to the highest standard. I am lucky to have them as a colleague, and I know I can count on them to handle any challenge that comes their way.对示例做几点补充说明帮助你在实战中正确使用system参数向model.chat()传入系统指令文本。当history非空时系统指令同样会作用于整个多轮对话序列这正是其上下文稳定特性的体现trust_remote_codeTrueQwen 的模型结构与对话逻辑包括 ChatML 模板与chat接口由仓库内的远程代码提供加载时必须开启该选项device_mapauto自动将模型分配到可用设备GPU/CPU大模型推理时可配合 utils.py 中的load_model_on_gpus实现多卡均匀切分生成配置建议参照 cli_demo.py#L61-L63 的做法用GenerationConfig.from_pretrained加载官方推荐的生成超参。命令行交互场景下仓库提供的 cli_demo.py 通过model.chat_stream(tokenizer, query, historyhistory, generation_configconfig)实现流式多轮对话cli_demo.py#L195-L206如需引入系统指令可在对话循环中为其补充system...参数。系统指令的底层实现ChatML 格式与源码级解读要理解系统指令为什么稳定需要看它在 token 层面的组织方式。Qwen-Chat 使用 ChatML 格式的对话模板其中系统指令被包裹在特殊 token 中|im_start|system 系统指令内容|im_end| |im_start|user 用户输入|im_end| |im_start|assistant 模型回复|im_end|tokenization_note.md#L48 明确指出Qwen-7B-Chat 使用了|endoftext|、|im_start|、|im_end|三个特殊 token它们对模型具有确定含义不应在其他场景误用。下面是仓库中两处最典型的实现证据。OpenAI 兼容服务中的系统指令处理openai_api.py 提供了兼容 OpenAI Chat API 的服务端实现pip install openai1.0后运行python openai_api.py即可默认监听http://localhost:8000/v1。其中parse_messagesopenai_api.py#L191-L307对请求消息的处理逻辑为若消息列表首条role system则将其内容取出作为系统指令openai_api.py#L199-L200否则回退到默认系统指令You are a helpful assistant.openai_api.py#L202。在续写completion模式下text_complete_last_messageopenai_api.py#L356-L382会显式构造 ChatML promptim_start |im_start| im_end |im_end| prompt f{im_start}system\n{system}{im_end} for i, (query, response) in enumerate(history): query query.lstrip(\n).rstrip() response response.lstrip(\n).rstrip() prompt f\n{im_start}user\n{query}{im_end} prompt f\n{im_start}assistant\n{response}{im_end}而在对话chat模式下系统指令则通过model.chat(..., systemsystem, ...)与model.chat_stream(..., systemsystem, ...)传入openai_api.py#L433-L440、openai_api.py#L488-L493。客户端侧可参照 examples/function_call_examples.py 的方式通过openai.ChatCompletion.create(modelQwen, messagesmessages)直接发送带systemrole 的消息。微调阶段对系统指令的处理系统指令不仅是推理期的接口也内嵌于 Qwen 的微调数据管线。finetune.py 的preprocess函数finetune.py#L125-L176在构造训练样本时将system_message参数默认值为You are a helpful assistant.编码为|im_start|system ... |im_end|序列固定拼接在每一条训练样本开头finetune.py#L147-L149对系统指令对应的 target 片段使用IGNORE_TOKEN_ID屏蔽其 lossfinetune.py#L149即微调时只监督用户与助手回复部分系统指令本身不作为生成目标参与梯度计算——这保证了微调后的模型仍以跟随而非复述系统指令的方式工作。由此可见系统指令 前缀拼接 全对话可见 不作为生成目标是它在 Qwen 中稳定生效的工程基础。进阶实践系统指令的组合用法与注意事项系统指令可与 Qwen-Chat 的其他能力叠加使用实现更复杂的助手形态与工具调用 / ReAct 组合在 openai_api.py 中当请求携带functions时工具说明会被格式化为 ReAct instruction 并拼接到问题之前openai_api.py#L204-L232此时系统指令负责整体行为基调ReAct 模板负责工具调用协议。两者的原理可参考 examples/react_prompt.md 与 examples/react_demo.py与历史对话组合系统指令 多轮 history 一起传入model.chat()适合构建客服、陪练、编辑助手等长对话场景与微调组合若固定任务的系统指令频繁使用可将其写入微调数据参考 finetune.py 的preprocess实现获得更稳定的效果。实践中的三条建议指令要具体可执行宽泛指令如你是个助手不如详细指令如用中文、分三点回答不确定时明确说明效果好善用默认值不传system参数时Qwen 系列默认行为即接近You are a helpful assistant与 OpenAI 兼容服务的默认值一致openai_api.py#L202注意版本差异系统指令增强聚焦于 Qwen-1.8B-Chat 与 Qwen-72B-Chat其他规模的模型对复杂系统指令的跟随能力可能较弱应结合实测调整指令复杂度。总结系统指令是 Qwen-Chat 提供的高性价比定制手段从角色扮演语言风格任务设定行为设定四大应用出发一条指令即可重塑助手行为而底层 ChatML 模板、OpenAI 兼容服务中的systemrole 处理、以及微调阶段 loss 屏蔽策略共同保证了系统指令在多轮对话中的稳定性。本文涉及的关键代码均可在仓库中直接复现示例代码见 examples/system_prompt.md服务端实现见 openai_api.py微调数据构造见 finetune.pyCLI 交互入口见 cli_demo.py。在此基础上你还可以进一步组合 ReAct 工具调用examples/react_prompt.md或接入 LangChainexamples/langchain_tooluse.ipynb构建属于自己的定制化 AI 助手。赞分享人工智能大模型微调LoRA模型量化本地部署模型推理服务【免费下载链接】QwenThe official repo of Qwen (通义千问) chat pretrained large language model proposed by Alibaba Cloud.项目地址https://gitcode.com/GitHub_Trending/qw/Qwen点击查看免费下载相关推荐CharacterGLM-6B 角色扮演对话部署实战Streamlit WebDemo 与命令行 Chat 全流程指南CharacterGLM 6B 角色扮演对话部署实战Streamlit WebDemo 与命令行 Chat 全流程指南 导读 本文以 Datawhale 开源大模型人工智能教程本地部署微调SillyTavernAI角色扮演平台完全指南SillyTavernAI角色扮演平台完全指南 SillyTavern是一款专为AI爱好者设计的革命性角色扮演平台让用户能够与大型语言模型进行沉浸式互动对话人工智能AI 应用交互助手前端天机Tianji人情世故大模型系统实战从 Prompt 角色扮演到知识库 RAG 的完整技术路线解析天机Tianji人情世故大模型系统实战从 Prompt 角色扮演到知识库 RAG 的完整技术路线解析 天机TianjiSocialAI/来事儿AI是上一篇告别配置文件臃肿dynamic-datasource按环境变量拆分实战指南下一篇Yolov13自动驾驶数据集Waymo Open Dataset训练实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表