Skip to content

协议外壳:与AI的结构化交流

"我的协议的界限即是我的世界的界限。"

— 改编自路德维希·维特根斯坦

1. 引言:结构的力量

当我们与他人交流时,我们依赖无数隐含的结构:社会规范、对话模式、肢体语言、语气和共享语境。这些结构帮助我们高效地理解彼此,即使单独的词语可能含糊不清。

然而,在与AI交流时,这些隐含结构是缺失的。协议外壳通过创建人类和AI都能遵循的明确、一致的结构来填补这一空白。

苏格拉底式提问:回想一次你与他人交流中断的经历。是否因为对对话结构的不同假设?明确表达这些结构会如何帮助?

┌─────────────────────────────────────────────────────────┐
│                 交流结构                                  │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  人与人交流                   人与AI交流                  │
│  ┌───────────────┐           ┌───────────────┐         │
│  │ 隐含结构      │           │ 显式结构      │         │
│  │               │           │               │         │
│  │ • 社会规范    │           │ • 协议外壳    │         │
│  │ • 肢体语言    │           │ • 定义模式    │         │
│  │ • 语气        │           │ • 明确期望    │         │
│  │ • 共享语境    │           │               │         │
│  │               │           │               │         │
│  └───────────────┘           └───────────────┘         │
│                                                         │
└─────────────────────────────────────────────────────────┘

2. 什么是协议外壳?

协议外壳是结构化模板,将与AI系统的交流组织成清晰、一致的模式。可以把它们看作对话蓝图,用于建立:

  1. 意图(Intent):你试图完成什么
  2. 输入(Input):你提供什么信息
  3. 处理过程(Process):信息应该如何处理
  4. 输出(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交互最有用?你会如何针对你的具体需求进行自定义?

(继续翻译...)

基于 MIT 许可发布