Skip to main content

什么是系统提示词?

系统提示词(System Prompt)用于定义 AI 的角色、行为准则和回复风格。它在对话开始前设置,影响 AI 的所有回复。

什么是 promptType?

promptType 是一个预定义的场景标识符,具有两个独立的作用:

1. 工具集映射(内置、强制)

promptType 通过内置的 PROMPT_TOOL_MAPPING 决定该场景下 AI 可以使用哪些工具。 示例:
  • bossZhipinSystemPrompt → 自动启用 bashfeishuwechatcomputer 等招聘场景工具
  • generalComputerSystemPrompt → 自动启用通用计算机工具
重要:工具集映射是内置的,由系统自动管理。即使你不提供 context.systemPromptspromptType 仍然会决定可用工具。

2. System Prompt 查找(可选、由调用方提供)

如果你在 context.systemPrompts 中提供了对应的提示词文本,promptType 也会用作键名来查找 system prompt。
promptType 查找 system prompt
{
  "promptType": "bossZhipinSystemPrompt",
  "context": {
    "systemPrompts": {
      "bossZhipinSystemPrompt": "你是BOSS直聘招聘助手,负责与候选人沟通岗位信息。"
    }
  }
}

System Prompt 配置方式

方式 1:直接指定(优先级最高)

使用 systemPrompt 字段直接传入,覆盖所有其他来源:
直接指定 systemPrompt
{
  "model": "anthropic/claude-3-7-sonnet-20250219",
  "messages": [...],
  "systemPrompt": "你是一个专业的技术顾问,擅长解答编程相关问题。"
}
推荐:如果你需要完全自定义 system prompt,直接使用 systemPrompt 参数最简单。

方式 2:使用 promptType + context.systemPrompts

通过 promptType 引用你在 context.systemPrompts 中定义的提示词模板:
使用 promptType + context.systemPrompts
{
  "model": "anthropic/claude-3-7-sonnet-20250219",
  "messages": [...],
  "promptType": "bossZhipinSystemPrompt",
  "context": {
    "systemPrompts": {
      "bossZhipinSystemPrompt": "你是BOSS直聘招聘助手,负责与候选人沟通岗位信息。",
      "generalComputerSystemPrompt": "你是一个通用AI助手,可以使用计算机工具。"
    }
  }
}
这种方式的优势:
  • 可以管理多个提示词模板
  • promptType 同时决定工具集和 system prompt
  • 适合多租户、多场景应用

方式 3:仅使用 promptType(仅启用工具)

如果你只提供 promptType 而不提供 context.systemPrompts,系统会:
  • ✅ 根据 promptType 启用对应的工具集
  • ℹ️ System prompt 使用默认值:"You are a helpful AI assistant."
仅使用 promptType(启用工具集)
{
  "model": "anthropic/claude-3-7-sonnet-20250219",
  "messages": [...],
  "promptType": "bossZhipinSystemPrompt"
  // 没有 context.systemPrompts,使用默认 system prompt
  // 但仍会启用 bossZhipinSystemPrompt 对应的工具集
}

方式 4:使用默认值

如果既不指定 systemPrompt 也不指定 promptType
  • System prompt: "You are a helpful AI assistant."
  • 可用工具:由 allowedTools 决定(如果未指定则无工具)

优先级规则

System Prompt 的选择遵循以下优先级:
System Prompt 优先级顺序
1️⃣ 直接指定的 systemPrompt 参数
     ↓ (如果未指定)
2️⃣ context.systemPrompts[promptType] 查找
     ↓ (如果未找到或 promptType 未指定)
3️⃣ 默认值 "You are a helpful AI assistant."
工具集的决定
规则说明
🔧 内置映射指定有效的 promptType 时,使用 PROMPT_TOOL_MAPPING
➕ 工具合并allowedTools 与映射工具取并集
💡 示例bossZhipinSystemPrompt + ["puppeteer"] = BOSS 直聘工具集 + puppeteer

可用的 promptType

使用 GET /api/v1/prompt-types 查询所有可用的 promptType 值:
curl -X GET https://huajune.duliday.com/api/v1/prompt-types \
  -H "Authorization: Bearer YOUR_API_KEY"

查询 promptType 对应的工具

使用 GET /api/v1/tools 查看每个 promptType 对应的工具集:
查询工具列表
curl -X GET https://huajune.duliday.com/api/v1/tools \
  -H "Authorization: Bearer YOUR_API_KEY"
响应会列出每个工具及其所属的 promptType

完整示例

示例 1:使用 promptType 同时配置工具和 prompt

promptType 同时配置工具和 prompt
{
  "model": "anthropic/claude-3-7-sonnet-20250219",
  "messages": [
    {
      "role": "user",
      "content": "帮我安排一个面试"
    }
  ],
  "promptType": "bossZhipinSystemPrompt",
  "context": {
    "systemPrompts": {
      "bossZhipinSystemPrompt": "你是BOSS直聘招聘助手,专注于帮助 HR 与候选人沟通。你需要专业、高效、友好。"
    },
    "configData": {
      // 招聘工具所需的配置...
    }
  }
}
效果
  • ✅ System prompt: 使用你提供的自定义文本
  • ✅ 可用工具: bossZhipinSystemPrompt 对应的招聘工具集

示例 2:直接指定 systemPrompt(覆盖一切)

直接指定 systemPrompt(最高优先级)
{
  "model": "anthropic/claude-3-7-sonnet-20250219",
  "messages": [
    {
      "role": "user",
      "content": "帮我写一段 Python 代码"
    }
  ],
  "systemPrompt": "你是一个专业的 Python 编程导师,擅长用简单易懂的语言解释复杂的编程概念。",
  "promptType": "generalComputerSystemPrompt"
}
效果
  • ✅ System prompt: 使用你直接指定的文本(覆盖 promptType 查找)
  • ✅ 可用工具: generalComputerSystemPrompt 对应的工具集
注意:这里 promptType 的作用仅用于工具集映射,不会用于查找 system prompt(因为 systemPrompt 优先级更高)。

示例 3:仅使用 promptType 启用工具

仅使用 promptType 启用工具(使用默认 prompt)
{
  "model": "anthropic/claude-3-7-sonnet-20250219",
  "messages": [
    {
      "role": "user",
      "content": "帮我查看当前目录"
    }
  ],
  "promptType": "generalComputerSystemPrompt"
  // 没有提供 context.systemPrompts
}
效果
  • ℹ️ System prompt: 使用默认值 "You are a helpful AI assistant."
  • ✅ 可用工具: generalComputerSystemPrompt 对应的工具集

验证配置

使用 validateOnly 预检

使用 validateOnly: true 检查配置是否正确,而不实际执行对话:
使用 validateOnly 预检配置
{
  "model": "anthropic/claude-3-7-sonnet-20250219",
  "messages": [...],
  "promptType": "bossZhipinSystemPrompt",
  "context": {...},
  "validateOnly": true
}
响应会告诉你:
  • 哪些工具可以成功初始化
  • 缺少哪些必需的上下文
  • promptType 是否有效

无效的 promptType

如果 promptType 不在 OPEN_API_PROMPT_TYPES 列表中,系统会:
  • ⚠️ 忽略工具集映射:不会自动启用该 promptType 对应的工具
  • 仍可查找 system prompt:如果你在 context.systemPrompts 中提供了该键,仍会使用
示例
无效的 promptType 示例
{
  "promptType": "myCustomPrompt", // 不在 OPEN_API_PROMPT_TYPES 中
  "context": {
    "systemPrompts": {
      "myCustomPrompt": "你是自定义助手"
    }
  },
  "allowedTools": ["bash"] // 必须手动指定工具
}
结果
  • System prompt: 使用 “你是自定义助手” ✅
  • 工具集: 仅 bash(不会自动映射工具)⚠️
建议:使用 GET /api/v1/prompt-types 查询有效值以获得完整的工具集映射支持。

最佳实践

清晰定义 AI 的身份和职责:
"你是一个专业的Python编程导师,擅长用简单易懂的语言解释复杂的编程概念。"
明确 AI 应该遵循的规则:
"回复时请遵循:1) 使用中文 2) 回答简洁 3) 提供代码示例"
如需特定格式的输出,在提示词中说明:
"回复格式要求:使用Markdown,代码块使用语法高亮"
如果你的应用有多个场景(如招聘、客服、技术支持),使用 promptType 来: - 为每个场景配置专用工具集 - 在 context.systemPrompts 中管理多个提示词模板 - 通过切换 promptType 快速切换场景
如果你的应用只有一个场景,或者不需要工具调用,直接使用 systemPrompt 参数最简单。

下一步