协议外壳:与AI的结构化交流
"我的协议的界限即是我的世界的界限。"
— 改编自路德维希·维特根斯坦
1. 引言:结构的力量
当我们与他人交流时,我们依赖无数隐含的结构:社会规范、对话模式、肢体语言、语气和共享语境。这些结构帮助我们高效地理解彼此,即使单独的词语可能含糊不清。
然而,在与AI交流时,这些隐含结构是缺失的。协议外壳通过创建人类和AI都能遵循的明确、一致的结构来填补这一空白。
苏格拉底式提问:回想一次你与他人交流中断的经历。是否因为对对话结构的不同假设?明确表达这些结构会如何帮助?
┌─────────────────────────────────────────────────────────┐
│ 交流结构 │
├─────────────────────────────────────────────────────────┤
│ │
│ 人与人交流 人与AI交流 │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ 隐含结构 │ │ 显式结构 │ │
│ │ │ │ │ │
│ │ • 社会规范 │ │ • 协议外壳 │ │
│ │ • 肢体语言 │ │ • 定义模式 │ │
│ │ • 语气 │ │ • 明确期望 │ │
│ │ • 共享语境 │ │ │ │
│ │ │ │ │ │
│ └───────────────┘ └───────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘2. 什么是协议外壳?
协议外壳是结构化模板,将与AI系统的交流组织成清晰、一致的模式。可以把它们看作对话蓝图,用于建立:
- 意图(Intent):你试图完成什么
- 输入(Input):你提供什么信息
- 处理过程(Process):信息应该如何处理
- 输出(Output):你期望什么结果
基本协议外壳结构
/protocol.name{
intent="明确的目的陈述",
input={
param1="value1",
param2="value2"
},
process=[
/step1{action="做某事"},
/step2{action="做其他事"}
],
output={
result1="期望输出1",
result2="期望输出2"
}
}这种结构创建了一个清晰、代币高效的框架,你和AI都可以遵循。
反思练习:查看你最近的AI对话。你能识别出你一直在使用的隐含结构吗?将这些形式化为协议外壳如何改善你的互动?
3. 协议外壳的解剖
让我们剖析协议外壳的每个组成部分,以理解其目的和力量:
┌─────────────────────────────────────────────────────────┐
│ 协议解剖 │
├─────────────────────────────────────────────────────────┤
│ │
│ /protocol.name{ │
│ │ │ │
│ │ └── 子类型或特定变体 │
│ │ │
│ └── 核心协议类型 │
│ │
│ intent="明确的目的陈述", │
│ │ │ │
│ │ └── 指导AI理解目标 │
│ │ │
│ └── 声明目标 │
│ │
│ input={ │
│ param1="value1", ◄── 结构化输入数据 │
│ param2="value2" │
│ }, │
│ │
│ process=[ │
│ /step1{action="做某事"}, ◄── 有序 │
│ /step2{action="做其他事"} ◄── 步骤 │
│ ], │
│ │
│ output={ │
│ result1="期望输出1", ◄── 输出 │
│ result2="期望输出2" ◄── 规格 │
│ } │
│ } │
│ │
└─────────────────────────────────────────────────────────┘3.1. 协议名称
协议名称标识协议的类型和目的:
/protocol.name其中:
protocol是基础类型name是特定变体或子类型
常见命名模式包括:
/conversation.manage/document.analyze/token.budget/field.optimize
3.2. 意图声明
意图声明清楚地传达协议的目的:
intent="明确的目的陈述"好的意图声明:
- 简洁但具体
- 关注目标而不是方法
- 设定清晰的期望
示例:
intent="分析此文档并提取关键信息"intent="优化代币使用同时保留关键上下文"intent="根据提供的约束生成创意"
3.3. 输入部分
输入部分提供用于处理的结构化信息:
input={
param1="value1",
param2="value2"
}输入参数可以包括:
- 要处理的内容
- 配置设置
- 约束或要求
- 参考信息
- 解释的上下文
示例:
input={
document="[文档全文]",
focus_areas=["财务数据", "关键日期", "行动项"],
format="markdown",
depth="comprehensive"
}3.4. 处理过程部分
处理过程部分概述要遵循的步骤:
process=[
/step1{action="做某事"},
/step2{action="做其他事"}
]处理步骤:
- 按顺序执行
- 可以包含嵌套操作
- 可能包括条件逻辑
- 通常使用Pareto-lang语法进行特定操作
示例:
process=[
/analyze.structure{identify="章节、标题、段落"},
/extract.entities{types=["人物", "组织", "日期"]},
/summarize.sections{method="key_points", length="简洁"},
/highlight.actionItems{priority="high"}
]3.5. 输出部分
输出部分指定期望的结果:
output={
result1="期望输出1",
result2="期望输出2"
}输出规格:
- 定义响应的结构
- 设定内容期望
- 可能包括格式要求
- 可以指定指标或元数据
示例:
output={
executive_summary="3-5句话概述",
key_findings=["重要发现的项目列表"],
entities_table="{格式化为markdown表格}",
action_items="按截止日期优先排序的列表",
confidence_score="1-10分制"
}苏格拉底式提问:以这种结构化方式显式指定输出,与更一般的请求相比,如何改变AI响应的质量和一致性?
4. 协议外壳类型和模式
不同的情况需要不同类型的协议外壳。以下是一些常见模式:
4.1. 分析协议
分析协议帮助提取、组织和解释信息:
/analyze.document{
intent="从此文档中提取关键信息和见解",
input={
document="[全文放在这里]",
focus_areas=["主要论点", "支持证据", "局限性"],
analysis_depth="彻底",
perspective="客观"
},
process=[
/structure.identify{elements=["章节", "论点", "证据"]},
/content.analyze{for=["主张", "证据", "假设"]},
/patterns.detect{type=["重复主题", "逻辑结构"]},
/critique.formulate{aspects=["方法论", "证据质量", "逻辑"]}
],
output={
summary="文档的简明概述",
key_points="主要论点的项目列表",
evidence_quality="支持证据的评估",
limitations="已识别的弱点或空白",
implications="发现的更广泛意义"
}
}4.2. 创意协议
创意协议促进想象性思维和原创内容:
/create.story{
intent="根据提供的元素生成引人入胜的短篇故事",
input={
theme="意外的友谊",
setting="近未来城市环境",
characters=["年长的植物学家", "青少年黑客"],
constraints=["最多1000字", "希望的结局"],
style="科幻与魔幻现实主义的融合"
},
process=[
/world.build{details=["感官的", "技术的", "社会的"]},
/characters.develop{aspects=["动机", "冲突", "成长"]},
/plot.construct{structure="经典弧线", tension="渐进构建"},
/draft.generate{voice="沉浸式", pacing="平衡"},
/edit.refine{focus=["语言", "连贯性", "影响力"]}
],
output={
story="符合所有要求的完整短篇故事",
title="富有感染力的相关标题",
reflection="关于主题探索的简要说明"
}
}4.3. 优化协议
优化协议提高效率和效果:
/optimize.tokens{
intent="在减少代币使用的同时最大化信息保留",
input={
content="[要优化的原始内容]",
priority_info=["概念框架", "关键示例", "核心论点"],
token_target="减少50%",
preserve_quality=true
},
process=[
/content.analyze{identify=["必要的", "支持的", "可消耗的"]},
/structure.compress{method="hierarchy_preservation"},
/language.optimize{techniques=["简洁性", "精确术语"]},
/format.streamline{remove="冗余", preserve="清晰度"},
/verify.quality{against="原始含义和影响"}
],
output={
optimized_content="代币高效版本",
reduction_achieved="从原始减少的百分比",
preservation_assessment="信息保留的评估",
recommendations="进一步优化的建议"
}
}4.4. 交互协议
交互协议管理持续对话:
/conversation.manage{
intent="维护连贯、高效的对话与有效的上下文管理",
input={
conversation_history="[之前的交流]",
current_query="[用户的最新消息]",
context_window_size=8000,
priority_topics=["项目范围", "技术要求", "时间线"]
},
process=[
/history.analyze{extract="关键决策、未解决的问题、行动项"},
/context.prioritize{method="与当前查询的相关性"},
/memory.compress{when="接近限制", preserve="关键信息"},
/query.interpret{in_context="之前的决策和优先级"},
/response.formulate{style="有用的、简洁的、上下文感知的"}
],
output={
response="对当前查询的直接回答",
context_continuity="从之前交流维护的线索",
memory_status="正在主动记住的内容摘要",
token_efficiency="上下文窗口使用的评估"
}
}反思练习:这些协议类型中哪些对你常见的AI交互最有用?你会如何针对你的具体需求进行自定义?
(继续翻译...)