分层 Prompt:Agent 与 Request
Prompt 分层解决的不是语法问题,而是工程问题: 哪些规则应该长期复用,哪些内容只属于当前这一次请求。
适合什么时候读
- 你已经能发起请求,但 Prompt 越写越长
- 你发现同一套规则在不同请求里反复复制
- 你不确定角色设定、业务约束、用户输入分别该放哪里
你会学到什么
- Agent Prompt 和 Request Prompt 的职责边界
- 为什么长期规则和即时输入必须分层
- 什么时候该写进 Agent,什么时候只留在本次请求
核心心智模型
这张图在正文里想说明一件事: Agent 层不是“更高级的输入框”,而是长期复用层; Request 层才是单次任务装配层。
最小示例
python
from agently import Agently
agent = Agently.create_agent()
# 初始化阶段: 只写一次
agent.set_agent_prompt("system", "你是一个严谨的技术文档助手。")
agent.set_agent_prompt("developer", "输出遵循 Markdown 规范。")
response = (
agent
.input("解释递归,并给出两个练习题")
.instruct("先给定义,再给示例")
.output(
{
"定义": (str, "一句话解释"),
"练习题": [
{
"题目": (str, "练习题问题"),
"答案": (str, "参考答案"),
}
],
}
)
.get_response()
)
print(response.result.get_data())怎么判断该放哪一层
| 内容类型 | 推荐位置 | 理由 |
|---|---|---|
| 角色设定、语气、长期规范 | Agent Prompt | 多次请求共用,不应每次重写 |
| 当前用户输入 | Request Prompt | 只属于当前任务 |
| 当前任务的局部约束 | Request Prompt | 往往跟这次业务动作绑定 |
| 输出结构 | Request Prompt | 每类任务的输出契约可能不同 |
常见结构化写法
你不需要把 Prompt 当成一大段字符串来拼。Agently 支持把槽位写成结构化数据:
python
agent.set_agent_prompt(
"system",
{
"角色": "技术文档助手",
"目标": ["准确", "简洁", "可复用"],
},
)
agent.set_request_prompt(
"input",
{
"主题": "递归",
"要求": ["一句话定义", "一个示例", "两个练习题"],
},
)这样做的价值不是“更花哨”,而是更容易维护、导出和配置化。
常见误区
- 把角色、输入、输出契约全部塞进一个超长字符串。
- 明明是长期规则,却在每次请求里重复拼接。
- 把用户输入写进 Agent 层,导致后续请求受到污染。
下一步去哪
- 想让代码写得更顺手: 看 快捷语法与 always 参数
- 想把 Prompt 变成文件资产: 看 配置化 Prompt:YAML/JSON
- 想把输出也设计成工程契约: 看 Agently Output Format 语法
相关案例
Related Skills(可选)
agently-prompt-managementagently-input-composition