实现提示词模板和装饰器
本指南介绍如何在网关层使用 ai-prompt-decorator 和 ai-prompt-template 规范提示词行为。你将配置可复用提示词模板、强制执行系统指令,并将这两个插件与 ai-proxy 组合使用。
概览
网关层提示词工程可以将提示词策略从应用代码中分离。平台团队可以跨服务强制实施一致行为、集中更新指令,并减少团队之间的策略漂移。
API7 AI 网关提供两种互补模式:
- 使用
ai-prompt-decorator进行提示词装饰:在每个请求的消息前面或后面添加内容。 - 使用
ai-prompt-template进行提示词模板化:定义支持{{variable}}替换的命名模板。
前置条件
-
安装 Docker。
-
安装 cURL,用于发送请求并验证服务。
-
拥有一个正在运行的 API7 网关实例。
-
从控制台获取令牌,并保存到环境变量:
export API_KEY=your-dashboard-token # 请替换为你的控制台令牌 -
将
{gateway_group_id}替换为网关组 ID。如果正在按照快速入门操作,请使用default。 -
如果使用 Admin API 示例,请创建或复用一个服务。如果尚无服务,请按照创建或复用服务操作,然后保存其 ID:
export SERVICE_ID=your-service-id # 请替换为你的服务 ID
提示词装饰
使用 ai-prompt-decorator 在用户消息前后注入全局指令。
- Admin API
- ADC
curl -k "https://localhost:7443/apisix/admin/routes?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-d '{
"id": "ai-prompt-decoration",
"service_id": "'"$SERVICE_ID"'",
"paths": ["/ai/decorated"],
"plugins": {
"ai-proxy": {
"provider": "openai",
"auth": { "header": { "Authorization": "Bearer '"$OPENAI_API_KEY"'" } },
"options": { "model": "gpt-4o" }
},
"ai-prompt-decorator": {
"prepend": [
{
"role": "system",
"content": "You are a customer support assistant for Acme Corp. Reply with concise, policy-compliant answers."
}
],
"append": [
{
"role": "system",
"content": "If the user asks for account actions, ask for ticket ID before proceeding."
}
]
}
}
}'
❶ prepend 在对话开头插入消息,通常用于强制系统指令。
❷ append 在对话末尾插入消息,适合添加额外的策略提醒。
adc.yaml
services:
- name: AI Prompt Decoration
routes:
- uris:
- /ai/decorated
name: ai-prompt-decoration
plugins:
ai-proxy:
provider: openai
auth:
header:
Authorization: "Bearer ${OPENAI_API_KEY}"
options:
model: gpt-4o
ai-prompt-decorator:
prepend:
- role: system
content: You are a customer support assistant for Acme Corp. Reply with concise, policy-compliant answers.
append:
- role: system
content: If the user asks for account actions, ask for ticket ID before proceeding.
❶ prepend 在对话开头插入消息,通常用于强制系统指令。
❷ append 在对话末尾插入消息,适合添加额外的策略提醒。
将配置同步到 API7 网关:
adc sync -f adc.yaml
完整配置说明请参阅 ai-prompt-decorator。
提示词模板化
使用 ai-prompt-template 暴露命名提示词契约。调用方只需提供变量,完整提示词结构由网关管理。此插件在内部使用 body-transformer