Qwen3-4B-Thinking Chainlit前端调用教程:自定义系统提示词与多轮对话管理
本文介绍了如何在星图GPU平台上自动化部署Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill镜像,实现专业领域的智能对话系统。该镜像特别擅长模拟Gemini-2.5 Flash的推理风格,可应用于金融咨询、健康问答等场景,通过Chainlit前端轻松实现多轮对话管理和自定义系统提示词配置。
·
Qwen3-4B-Thinking Chainlit前端调用教程:自定义系统提示词与多轮对话管理
1. 环境准备与模型部署
1.1 模型简介
Qwen3-4B-Thinking-2507-Gemini-2.5-Flash-Distill是一个基于vLLM部署的文本生成模型,在大约5440万个由Gemini 2.5 Flash生成的token上进行了训练。该模型特别擅长模拟Gemini-2.5 Flash的行为模式、推理轨迹和输出风格,同时保留了丰富的知识储备。
模型训练数据覆盖多个专业领域:
| 领域 | 提示数量 |
|---|---|
| 学术 | 645 |
| 金融 | 1048 |
| 健康 | 1720 |
| 法律 | 1193 |
| 营销 | 1350 |
| 编程 | 1930 |
| SEO | 775 |
| 科学 | 1435 |
| 其他 | 991 |
1.2 部署验证
使用以下命令检查模型是否部署成功:
cat /root/workspace/llm.log
成功部署后,日志中会显示类似以下内容:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started server process [1234]
INFO: Waiting for application startup.
INFO: Application startup complete.
2. Chainlit前端基础调用
2.1 启动Chainlit界面
确保模型服务正常运行后,在终端执行以下命令启动Chainlit前端:
chainlit run app.py -w
启动成功后,浏览器会自动打开Chainlit的交互界面(默认地址为http://localhost:8000)。
2.2 基础对话测试
在Chainlit界面中输入简单问题测试模型响应:
你好,请介绍一下你自己
模型应该会返回类似以下的响应:
我是基于Qwen3-4B-Thinking架构的AI助手,专注于提供专业领域的知识服务。我擅长学术研究、金融分析、健康咨询等多个领域,能够理解复杂问题并提供详细解答。
3. 自定义系统提示词配置
3.1 修改系统提示模板
在Chainlit应用目录下创建或修改prompts.py文件,添加自定义系统提示:
SYSTEM_PROMPT = """
你是一位{domain}专家,请用专业但易懂的语言回答用户问题。
回答时应遵循以下规则:
1. 先确认问题核心要点
2. 分点列出关键信息
3. 提供实际案例说明
4. 最后总结要点
当前对话上下文:
{history}
"""
3.2 动态领域选择
在app.py中添加领域选择功能:
import chainlit as cl
from prompts import SYSTEM_PROMPT
@cl.on_chat_start
async def start_chat():
settings = await cl.ChatSettings(
[
cl.input_widget.Select(
id="Domain",
label="选择专业领域",
values=["学术", "金融", "健康", "法律", "营销", "编程"],
initial_index=0
)
]
).send()
domain = settings["Domain"]
system_prompt = SYSTEM_PROMPT.format(domain=domain)
cl.user_session.set("system_prompt", system_prompt)
4. 多轮对话管理实现
4.1 对话历史记录
在app.py中扩展对话处理逻辑:
@cl.on_message
async def main(message: cl.Message):
# 获取当前对话历史
history = cl.user_session.get("history", [])
# 更新对话历史(保留最近5轮)
history.append({"role": "user", "content": message.content})
if len(history) > 10: # 保留5轮对话(每轮user+assistant)
history = history[-10:]
# 获取系统提示
system_prompt = cl.user_session.get("system_prompt")
full_prompt = system_prompt.format(history=format_history(history))
# 调用模型
response = await query_model(full_prompt)
# 更新历史记录
history.append({"role": "assistant", "content": response})
cl.user_session.set("history", history)
# 返回响应
await cl.Message(content=response).send()
def format_history(history):
return "\n".join(
f"{msg['role']}: {msg['content']}"
for msg in history
)
4.2 上下文感知响应
增强模型对上下文的感知能力:
async def query_model(prompt):
# 实际调用vLLM接口的代码
# 这里简化为示例
from vllm import LLM, SamplingParams
llm = LLM(model="Qwen3-4B-Thinking")
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=1024
)
output = llm.generate(prompt, sampling_params)
return output[0].text
5. 高级功能实现
5.1 对话主题锁定
防止对话偏离主题:
@cl.on_message
async def main(message: cl.Message):
history = cl.user_session.get("history", [])
current_topic = cl.user_session.get("topic")
# 检测主题变化
if len(history) > 2 and not is_related(message.content, current_topic):
await cl.Message(
content="检测到话题变化,是否要切换到新主题?",
actions=[
cl.Action(name="confirm_topic_switch", value="yes", label="确认切换"),
cl.Action(name="cancel_topic_switch", value="no", label="继续当前话题")
]
).send()
return
# ...原有处理逻辑...
@cl.action_callback("confirm_topic_switch")
async def on_action(action):
if action.value == "yes":
await cl.Message(content="已切换到新话题,请继续提问。").send()
else:
await cl.Message(content="继续当前话题讨论。").send()
5.2 知识检索增强
集成外部知识检索:
async def query_model(prompt):
# 先进行知识检索
related_knowledge = search_knowledge_base(prompt)
enhanced_prompt = f"""
相关背景知识:
{related_knowledge}
当前对话:
{prompt}
请基于以上信息回答问题。
"""
# 调用模型生成
return await generate_with_vllm(enhanced_prompt)
6. 总结与最佳实践
6.1 关键要点回顾
- 系统提示定制:通过模板化系统提示实现领域专业化
- 对话历史管理:保留最近5轮对话确保上下文连贯
- 主题一致性:实现话题锁定防止对话偏离
- 知识增强:结合外部知识库提升回答准确性
6.2 性能优化建议
- 控制对话历史长度(建议5-7轮)
- 对长响应启用流式输出
- 设置合理的超时时间(建议15-30秒)
- 使用缓存机制减少重复计算
6.3 扩展方向
- 集成更多专业领域模板
- 添加多模态支持(如图片理解)
- 实现对话总结与导出功能
- 开发团队协作对话模式
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)