进阶交互:流式传输与提示词工程
摘要:在掌握了基础的请求-响应模式后,本章将探讨两个提升 Agent 体验的关键技术:流式传输 (Streaming) 让用户不再枯等加载;提示词工程 (Prompt Engineering) 让模型变得更听话、更聪明。
1. 流式传输 (Streaming)
1.1 为什么需要 Streaming?
大语言模型的生成是逐词 (Token-by-Token) 进行的。如果一个回答有 500 个词,使用普通模式(非流式),用户必须等待整个回答全部生成完毕(可能需要 10 秒以上)才能看到第一个字。
这种体验是灾难性的。
流式传输利用 Server-Sent Events (SSE) 技术,一旦模型生成了第一个词,就立即推送到前端。这就实现了 ChatGPT 那种“打字机”般的流畅体验。
1.2 SSE 协议原理
当你设置 stream: true 时,API 返回的 Content-Type 变为 text/event-stream。
响应体不再是一个巨大的 JSON,而是一系列以 data: 开头的数据块:
data: {"choices": [{"delta": {"content": "Hello"}}]}
data: {"choices": [{"delta": {"content": " world"}}]}
data: {"choices": [{"delta": {"content": "!"}}]}
data: [DONE]
关键点:
- Delta: 注意这里返回的是
delta(增量),而不是完整的 message。你需要自己在客户端拼接这些碎片。 - DONE: 这是一个特殊的标记,表示传输结束。
2. 提示词工程 (Prompt Engineering)
提示词不仅是“怎么说话”,更是一种对模型思维方式的编程。
2.1 基础技巧
- Zero-shot (零样本): 直接提问。
"将这句话翻译成法语:Hello World"
- Few-shot (少样本): 给几个例子,让模型照猫画虎。这是最有效的提升准确率的方法。
"将中文翻译成英文,参考以下格式: 苹果 -> Apple 香蕉 -> Banana 橘子 -> " (模型回答: Orange)
2.2 思维链 (Chain of Thought, CoT)
让模型在给出答案之前,先展示思考过程。这能显著提升逻辑推理能力(数学、编程)。
普通 Prompt:
"Roger 有 5 个网球,他又买了 2 罐,每罐 3 个。现在他有多少个?"
CoT Prompt:
"Roger 有 5 个网球,他又买了 2 罐,每罐 3 个。现在他有多少个?请一步步思考 (Let's think step by step)。"
模型回答:
"Roger 起初有 5 个球。 2 罐网球,每罐 3 个,意味着 2 * 3 = 6 个球。 5 + 6 = 11。 所以答案是 11。"
2.3 System Prompt 的艺术
System Prompt 是 Agent 的“人设”。好的 System Prompt 包含:
- 角色定义: "你是一个资深的 Python 架构师。"
- 边界限制: "只回答编程相关问题,如果用户问政治,礼貌拒绝。"
- 输出格式: "总是以 Markdown 格式输出代码。"
- 风格指导: "语气要幽默,多用 Emoji。"
3. 下一步
掌握了流式传输,我们可以构建实时性极强的应用;掌握了 Prompt Engineering,我们可以让模型处理更复杂的逻辑。
接下来,我们将进入真正的 Agent 核心领域:结构化输出与工具调用 (Function Calling)。那是模型从“聊天机器人”进化为“智能助理”的分水岭。