使用人类审批和 OpenAI 兼容 API 构建 n8n 文档问答工作流
介绍如何在 n8n 中设计实用的文档问答流程:引用信息来源、按需启用人工审批,并通过 OneMux 有条件地连接 OpenAI 风格的模型端点。
文章目录
决策要点:应在哪个环节进行审批?
在文档问答流程中,不要仅仅因为使用了 AI 模型就添加人工审批。应在工作流可能访问敏感材料,或发布需要审核的答案时设置审批。
一种实用的 n8n 设计如下:
- 接收问题。
- 让 AI Agent 准备文档搜索请求。
- 如果语料敏感、查询可能暴露受限材料,或搜索会产生运营成本,则在搜索工具运行前暂停并等待人工审批。
- 检索带有来源元数据的段落。
- 要求模型仅依据这些段落作答。
- 返回带来源引用的答案,或将草稿转至第二个审批步骤,然后再发布。
这样可以区分三个常被混为一谈的决策:问题是否可以接受、检索操作是否可以执行,以及生成的答案是否适合发送。
n8n 文档介绍了对连接到 AI Agent 的特定工具进行人工审核的功能。启用审核后,工作流会暂停,审核者可以批准或拒绝拟执行的工具调用。有关支持的行为和审批渠道详情,请参阅 n8n 人工介入文档。
前置条件
你需要准备:
- 一个包含 AI Agent 和模型连接的 n8n 工作流。
- 可搜索的文档源,例如向量存储、数据库或内部搜索服务。具体连接器取决于应用;引用的 n8n 页面并未指定必须使用哪一种。
- 一个能在返回文本的同时提供文档元数据的检索工具。
- 在 n8n 中配置好的审批渠道。文档列出的可用渠道包括 Chat、Slack、Discord、Telegram、Microsoft Teams、Gmail、WhatsApp Business Cloud、Google Chat 和 Microsoft Outlook。
- OpenAI 兼容 API 端点的访问权限。OneMux 提供通过一个 OpenAI 兼容 API 访问领先 AI 模型的途径;请参阅 OneMux 快速入门和 API 文档,了解当前端点和身份验证说明。
兼容性并非无条件成立。连接 n8n 之前,请确认所选端点支持 n8n 节点或 HTTP 请求所用的请求格式、模型标识符、身份验证方法、流式传输行为、工具调用及参数。本文不声称已测试任何特定的 OneMux 模型或 n8n 配置。
推荐的 n8n 工作流结构
将工作流划分为五个逻辑阶段:
1. 接收并规范化问题
使用所选的 n8n 入口接收问题,并将其规范化为一个简洁对象,其中包含用户问题、用户或工作区上下文,以及可选的文档范围筛选条件。
不要将未经限制的用户文本直接放入系统指令。应将问题作为数据传递,并单独定义智能体的行为。如果工作流支持租户或部门边界,应将这些边界作为受控字段传递给检索工具,而不是允许模型自行编造。
2. 添加文档搜索工具
将搜索工具连接到 AI Agent。其输入应明确且范围有限,例如:
{
"query": "string",
"document_scope": "string or controlled value",
"max_results": "integer"
}
搜索结果应保留足够的元数据,以便生成有效引用:
{
"text": "Approved passage from the document",
"title": "Document title",
"url": "Document URL or stable identifier",
"page": "Page number when available",
"section": "Section heading when available",
"chunk_id": "Stable passage identifier"
}
上述字段名称是一种实现模式,并非 n8n 要求的固定架构。请根据所用连接器或服务进行调整。关键在于可追溯性:答案生成器必须同时收到段落及其来源。
3. 在所选工具周围设置人工审核
打开 AI Agent 的 Tools 面板,找到 Human review 部分,选择审批渠道,并将文档搜索工具连接到该审核步骤。在 n8n 中配置所选渠道的凭据和设置。
审核者消息可以展示拟执行的操作及其参数。n8n 文档介绍了可用于此目的的 $tool.name 和 $tool.parameters 变量。实用的消息示例如下:
The AI wants to use {{ $tool.name }} with these parameters:
{{ JSON.stringify($tool.parameters, null, 2) }}
Approve only if the query and document scope are appropriate for this request.
当审核者需要识别有风险的范围时,这种做法尤其有用,例如请求看起来要搜索其他团队的文档。对于普通公开文档,每次搜索都审批可能会造成不必要的阻碍。在这种情况下,可让检索自动进行,并将审批设在负责发布或发送最终答案的独立工具上。
4. 连接 OpenAI 兼容模型端点
根据服务提供商的文档配置模型层端点和凭据。使用 OneMux 时,请从 OneMux 快速入门着手,选择支持 n8n 节点所需功能的模型,并核实模型标识符和请求参数。
通用请求格式可能如下所示,但这只是示意,并非经过测试的 OneMux 配置示例:
curl https://api.example-provider.invalid/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "YOUR_MODEL_ID",
"messages": [
{"role": "system", "content": "Answer only from supplied document passages."},
{"role": "user", "content": "What does the document say about retention?"}
]
}'
请根据服务提供商的最新文档替换占位 URL、密钥处理方式和模型 ID。不要在工作流导出文件或用户可见的审批消息中暴露凭据。如果 n8n 的模型节点要求端点不支持的参数,请使用兼容的配置;只有在满足安全要求和响应解析需求时,才采用基于 HTTP Request 的设计。
5. 在答案提示中强制要求来源归属
将检索到的段落放入清晰界定的上下文中,并要求模型为每一项实质性陈述提供引用。例如:
You answer questions about the supplied documents.
Rules:
- Use only the passages in DOCUMENT_CONTEXT.
- If the passages do not support an answer, say that the documents do not establish it.
- Do not create titles, URLs, page numbers, or quotations.
- Cite each factual answer using the supplied title and page, section, URL, or chunk ID.
- Distinguish a direct statement from an inference.
DOCUMENT_CONTEXT:
{{ JSON.stringify($json.documents) }}
QUESTION:
{{ $json.question }}
具体表达式语法取决于前置 n8n 节点如何组织数据。请将此提示视为一种模式,而不是可直接导入的工作流配置。
审批设计:检索还是发布
有两个合理的审批节点:
| 审批节点 | 适用场景 | 权衡 |
|---|---|---|
| 文档搜索前 | 敏感存储库、跨团队访问、成本较高的搜索 | 每次获准搜索都会增加审核等待时间 |
| 答案发布前 | 外部客服回复、受监管内容、影响重大的决策 | 搜索已经执行,因此仍须落实访问控制 |
高风险工作流也可以同时采用这两个审批节点。n8n 文档说明,审核可以应用于连接到 AI Agent 的所有工具,也可以只应用于选定工具,这为按需审批提供了支持。文档还指出,审批渠道可以与主要交互渠道不同;例如,面向用户的聊天可以搭配在 Slack 中进行的审核者审批。
系统提示与拒绝处理
告诉智能体哪些工具需要审批,以及拒绝意味着什么。如果审核者拒绝了搜索,智能体不应改写措辞后再次发起相同调用,也不应声称自己找到了证据。它应说明所请求的查询未获批准;如果存在范围更窄且获准的替代方案,则可以提供该方案。
简明策略如下:
The document_search tool requires human approval. If it is denied, do not call it again for the same request. Tell the user that the lookup was not approved. Never answer from memory when document evidence is required.
这符合 n8n 的文档建议:在系统提示中说明工具和人工审核行为,以便智能体妥善处理被拒绝的调用。
故障排查与限制
审批请求缺少有用上下文
检查工具输入是否使用明确字段,以及审核消息是否包含 $tool.name 和 $tool.parameters。避免将重要范围信息藏在不透明的字符串中。
缺少引用
检查检索结果在传给模型前的内容。如果映射节点丢弃了标题、URL、页码、章节或文本块标识符,模型就无法可靠地还原这些信息。此外,还应指示模型拒绝提供缺乏依据的说法。
端点拒绝请求
核实基础 URL、身份验证标头、模型 ID、工具调用支持、上下文限制和参数名称。OpenAI 兼容并不意味着完全相同:必须同时依据 n8n 的请求格式和服务提供商的 API 文档检查兼容性。
拒绝后回复不自然
在系统提示中添加明确的拒绝处理策略,并测试批准和拒绝两条路径。n8n 将批准和取消列为不同结果;工作流应分别处理,而不是假定工具总会运行。
工作流太慢
采用按需审核,而不是为每次低风险搜索审批。将审批保留给敏感检索或发布,并在自己的环境中衡量对运营的影响。未经测试,不要假定模型速度、检索质量或审批延迟。
成本与运营规划
在此场景中,OneMux 是一种模型接入方式,而不是 n8n 工作流控制的替代品。选择模型前,请查看当前的 OneMux 定价,并将输入和输出用量、检索量、重复审批尝试,以及任何文档搜索服务成本纳入考量。适用价格取决于所选模型和当前公布的条款;本文不提供具体费率,也不承诺节省成本。
如需了解支出情况和模型选择背景,请浏览 OneMux 模型目录。模型选择应取决于工作流实际需要的功能,尤其是结构化输出或工具调用。
结论
可靠的 n8n 文档问答工作流不只是将智能体连接到模型。它是一条受控链路:检索获准访问的段落、保留其元数据、在恰当的工具边界要求审核,并生成只引用已收到证据的答案。
使用 n8n 进行流程编排和人工审批;当 OneMux 文档所述的端点和参数符合设计时,可将其作为实用的 OpenAI 兼容模型接入方式进行评估。从小型语料开始,测试批准和拒绝路径,并将缺乏依据的说法、引用缺失和参数不兼容视为工作流故障,而不是模型之谜。
来源
- n8n:工具的人机协同审核 — 工具审批行为、审批渠道、
$tool表达式及拒绝处理建议的来源。 - OneMux 文档 — 服务提供商关于当前 API 用法和兼容性细节的文档。
- OneMux 快速入门 — 配置端点和身份验证的起点。
- OneMux 定价 — 部署前应查看的当前定价参考。
常见问题
n8n 能否要求 AI Agent 在使用文档搜索工具前先获得审批?
可以。n8n 文档所述的 Human review 功能可附加到连接至 AI Agent 的选定工具。工作流会暂停,通过配置的渠道发送审批请求,并且只有获得批准后才会执行该工具。
文档问答工作流应如何生成来源归属?
返回每个检索段落时,同时提供文档标题、URL、页码、章节或稳定的文本块 ID 等元数据。将该组合对象传递给答案模型,并指示它只引用所提供的元数据。
是否所有 OpenAI 兼容 API 都保证能与 n8n 配合使用?
不能。兼容性取决于端点、身份验证、模型标识符、请求架构、工具调用行为、流式传输支持,以及 n8n 配置所需的参数。请根据服务提供商和 n8n 的最新文档核实这些细节。
应在检索前审批,还是发送答案前审批?
如果文档访问或查询范围敏感,应在检索前审批。如果主要风险是将答案发送到外部,则应在发布前审批。高风险工作流可以同时设置这两个审批节点。
审核者拒绝工具调用后应如何处理?
智能体不应悄悄重试或编造答案。它应说明查询未获批准,并在适当情况下提供范围更窄且获准的替代方案。请在系统提示中明确这一行为。
相关文章
指南
在 Cline 中配置 OpenAI 兼容提供商:实现带来源标注的文档问答
通过 SDK 配置 Cline 的 OpenAI 兼容提供商,并构建文档问答工作流,让回答附带可核验的来源引用。
指南
构建带人工审批与测试验证的 n8n 代码变更工作流
设计一个 n8n 工作流,提出代码仓库变更、请求人工批准写入,并通过测试验证生成的提交。
指南
使用 OpenAI 兼容 API 和 JSON Schema 验证构建 n8n 人工审批工作流
构建一个 n8n 工作流,通过 OpenAI 兼容 API 提取结构化数据,依据 JSON Schema 验证结果,并在敏感工具运行前要求人工审批。
指南
无需更改应用代码,平滑切换至 Claude Sonnet 5
基于配置将工作负载无缝迁移至 Claude Sonnet 5 的实用模型切换方案,涵盖 Claude Code 交互式操作与兼容 OpenAI 的 API 应用指南。