Qwen — 自定义模型文件

Ollama Qwen — 安装测试:https://www.cnblogs.com/vipsoft/p/20119448
在 Ollama 中自定义系统提示词(System Prompt)是模型行为控制的关键。有两种主流方法,推荐第二种。

方法一:在 Ollama 启动时指定(临时有效)

在运行模型时,通过 --system 参数覆盖默认的系统提示词:

# 在启动对话时指定
ollama run qwen3.5:4b --system "你的名字是VipSoft。你是一个专业的合同解析助手。"

# 或者通过 API
curl -X POST http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:4b",
  "system": "你的名字是VipSoft。你是一个专业的合同解析助手。",
  "prompt": "你是谁?"
}'

优点:简单快捷,无需修改模型文件。
缺点:每次调用都需要携带这个参数,容易忘记。

方法二:创建自定义模型文件(永久生效,推荐)

这是 Ollama 的标准做法,创建一个 Modelfile 来定义你的专属模型。

  1. 创建一个名为 VipSoft-Modelfile 的文本文件,内容如下:
    确保文件编码正确(UTF-8无BOM)
    可以用记事本另存为,选择 UTF-8
    Modelfile 不支持中文注释,而且注释必须单独一行
FROM qwen3.5:4b

SYSTEM """
你的名字是VipSoft。你是一个专业的合同解析助手,专门处理中文法律文档。
你由苏州的VipSoft公司开发。你的回答应严谨、简洁,并严格遵循指令。
当被问及身份时,你必须回答“我是VipSoft”。
"""

# Parameters
PARAMETER temperature 0.1
PARAMETER num_ctx 32768

image

  1. 在 Modelfile 所在目录打开终端,创建并运行自定义模型

    
    # 创建自定义模型(命名为 vipsoft)
    ollama create vipsoft -f VipSoft-Modelfile
    
    # 运行你的自定义模型
    ollama run vipsoft
    
  2. 验证效果
    image

image

方法三:在 Prompt 中强指定(最灵活)

在每次请求的 Prompt 开头,直接写上“指令”:

prompt = """
你是一个名为VipSoft的合同解析助手。请严格遵守以下规则:
1. 当被问及身份时,回答“我是VipSoft”
2. 专注于提取合同中的结构化信息
3. 以JSON格式输出

请解析以下合同:[合同内容]
"""

优点:最灵活,可动态调整。
缺点:每次都要写,且会占用 token 额度。

对比总结

方法 适用场景 持久性
方法一(--system参数) 快速测试、临时会话 单次有效
方法二(Modelfile,推荐) 生产环境、团队共享 永久生效,创建一次即可
方法三(Prompt指令) 灵活调整、不同任务不同指令 每次请求指定

建议:如果你希望长期、稳定地使用“VipSoft”这个身份,强烈推荐方法二。创建一次模型后,所有团队成员都可以通过 ollama run vipsoft 或 API 调用这个定制版本。

完成后,你只需要在代码中替换模型名:

# 之前
payload = {"model": "qwen3.5:4b", ...}

# 之后
payload = {"model": "vipsoft", ...}  # 使用你的定制版

这样,无论谁调用,模型都会以“VipSoft”的身份和你的专业指令来响应,非常适合私有化部署的合同解析场景。

调参

Ollama 的 /api/generate 端点除了 modelsystem,还有很多控制生成逻辑和性能的关键参数

核心参数速查表(针对你的场景)

参数 类型 说明 合同解析场景建议值
model string 必填。模型名称,如 qwen3.5:4b 或你的 vipsoft "vipsoft"
prompt string 必填。用户输入的指令和合同文本。 "请提取以下合同..."
system string 系统提示词,覆盖 Modelfile 中的设定。 "你是VipSoft,专注于..."
stream boolean 是否流式输出。解析合同建议关掉 false
format string 强烈推荐。强制输出 JSON 格式,方便代码解析。 "json"
options object 模型推理参数(温度、token数等),见下文。 {"temperature": 0.1}
raw boolean 设为 true 时,Ollama 不会自动添加聊天模板。 通常用默认 false
keep_alive string 模型在内存中的存活时间(如 "10m")。 "5m"

options 对象(控制生成质量)

这是你控制模型“严谨性”的关键。在合同解析中,我们需要低随机性、高确定性。

{
  "model": "vipsoft",
  "prompt": "提取合同信息...",
  "format": "json",
  "stream": false,
  "options": {
    "temperature": 0.1,        // 温度:0.1 非常低,减少胡言乱语
    "num_predict": 2048,       // 最大生成 token 数(防止长文截断)
    "top_k": 40,               // 采样策略,配合低 temperature 使用
    "seed": 12345,             // 随机种子,让结果可复现(调试时用)
    "num_ctx": 32768           // 上下文窗口大小(如果模型支持)
  }
}

文档在哪里?

  1. 在线文档(最全):访问 https://docs.ollama.com ,点击左侧 API Reference -> Generate a completion
  2. 本地文档:Ollama 启动后,访问 http://localhost:11434 也能看到简单的 API 列表。
  3. GitHub 源码说明:参数细节在 ollama/docs/api.md 文件中。

这些参数是 Ollama 的,他是怎么改变模型行为的。为什么我是谁就变成了 VipSoft

这是一个非常好的问题,触及了 LLM(大语言模型)运作的核心机制。简单来说:Ollama 并没有修改模型的“大脑”(权重),而是通过“上下文植入”和“参数调控”来改变它的“短期记忆”和“行为偏好”。

这就像给同一个演员(模型)换了一套剧本(System Prompt)和导演指令(Parameters),而不是给他做脑部手术(微调)。

一、为什么“你是谁”变成了 VipSoft?(System Prompt 的原理)

这背后的机制是上下文注入,而非模型本质的改变。

  1. “作弊”的上下文:当你设置 SYSTEM "你的名字是 VipSoft" 时,Ollama 并没有去改动 Qwen 模型文件里的任何一个参数。它只是在每次对话开始前,偷偷在你的问题前面加了一段“隐藏指令”。
  2. 拼接过程:模型看到的真实输入其实是这样的:
    [系统指令开始]
    你的名字是 VipSoft,你是一个专业的合同解析助手...
    [系统指令结束]
    
    [用户提问开始]
    你是谁?
    [用户提问结束]
    
  3. 模型的“阅读理解”:Qwen 模型被训练成会认真阅读并遵循 [系统指令] 部分的约束。它看到“你的名字是 VipSoft”后,在生成回答时,就会基于这个上下文来组织语言,所以它回答了“我是 VipSoft”。
  4. 本质模型本身还是 Qwen。如果你在 System Prompt 里不提名字,它依然会变回“我是通义千问”。这完全是临时的、会话级的行为控制。

二、Ollama 参数是如何“改变”模型的?

Ollama 的 Modelfile 和 API 参数主要从两个维度影响模型:

维度 代表参数 原理 类比
行为约束 SYSTEM, prompt 上下文植入。在模型输入前拼接指令,利用模型的指令遵循能力。 给演员看新剧本。
生成策略 temperature, top_k 推理调控。改变模型选择下一个字的“随机性”算法。 导演喊“收着点演”或“放开演”。
资源边界 num_ctx, num_predict 硬件限制。告诉 Ollama 运行时最多用多少内存/生成长度。 规定舞台大小和演出时长。

重要区别:Ollama 的 PARAMETER 指令(如 temperature 0.1)实际上设置的是 Ollama 推理服务器的运行时参数,而不是修改模型文件里的默认值。这就像你调用一个函数时传入了参数,函数本身没变,但这次执行的结果变了。

三、这与“微调”有本质区别

你可能会疑惑,这和训练模型有什么区别?区别非常大:

方式 原理 改变程度 成本/难度 持久性
Ollama 参数 上下文提示 仅改变当前会话的输出风格 零成本,即时生效 临时(换提示词就失效)
微调 (Fine-Tune) 修改模型权重 永久改变模型的“知识”和“人格” 高成本,需要算力数据 永久(刻在“DNA”里)

结论:你现在用的 vipsoft 模型,本质上只是 qwen3.5:4b 披了一件叫“System Prompt”的外衣。它的底层能力(如合同理解能力)完全取决于基座模型 Qwen,Ollama 只是帮你自动化了“每次都要写长串指令”的麻烦。

四、对你的合同解析项目意味着什么?

  1. 稳定性:依赖 SYSTEM 提示词是安全的,因为它不改变模型权重,不会引入新的崩溃风险。
  2. 局限性:如果模型(Qwen)本身就不擅长解析某种复杂合同,仅靠修改 Ollama 的 SYSTEM 提示词是无法从根本上提升能力的。这时候才需要考虑换基座模型(如换 7B)或进行微调。
  3. 最佳实践:利用 format: json 和低 temperature 来保证输出格式的稳定性,这才是 Ollama 参数对你项目最大的价值。

所以,“我是 VipSoft” 这个身份,是模型根据你给的“剧本”临时扮演的,它的“芯”依然是 Qwen。

posted @ 2026-05-22 16:58  VipSoft  阅读(3)  评论(0)    收藏  举报