你是否曾感觉与 AI 沟通像“对牛弹琴”?你给它一个复杂的任务,期望它能一步到位,结果却常常是丢三落四、逻辑混乱,甚至一本正经地胡说八道。
问题出在哪里?也许不是 AI 不够聪明,而是我们与它沟通的方式需要升级。今天,我们就来介绍一个强大的技术——提示词链(Prompt Chaining),它能将你的 AI 助手从一个偶尔犯傻的聊天机器人,调教成一个逻辑清晰、使命必达的超级特工。
想象一下,你要组织一场复杂的市场活动。你不会对一个新员工说:“去,把活动搞定。”而是会把任务拆解:
“提示词链”就是这个道理。它的核心思想是:化繁为简,分而治之。
我们不再用一个冗长复杂的提示词(Prompt)去“轰炸”AI,而是将一个大任务分解成一系列更小、更聚焦的子任务。上一个子任务的输出,会像接力棒一样,精准地传递给下一个子任务作为输入。
[原始市场报告] -> [提示词1: 总结] -> [报告摘要] -> [提示词2: 提取趋势] -> [结构化JSON数据] -> [提示词3: 起草邮件] -> [最终邮件初稿]
这个过程就像一条精密的流水线,每一步都只做一个简单明确的操作,最终组合起来,就能高效、可靠地完成复杂工作。
使用单一、庞大的提示词,AI 很容易“认知过载”,导致:
而提示词链通过“流水线作业”,完美地解决了这些问题:
为了让流水线上的信息传递不出错,我们需要一个标准化的“集装箱”。如果上一步的输出是一段模糊的自然语言,下一步的 AI 可能就无法准确理解。
因此,在关键步骤之间,强制 AI 使用 JSON 或 XML 这样的结构化格式来输出结果,就显得至关重要。
例如,在识别市场趋势的环节,我们可以要求 AI 这样输出:
{
"trends": [
{
"trend_name": "AI驱动的个性化营销",
"supporting_data": "73%的消费者更愿意与使用其个人信息来提升购物体验的品牌打交道。"
},
{
"trend_name": "可持续和道德品牌",
"supporting_data": "过去五年,有ESG(环境、社会和治理)声明的产品销售额增长了28%。"
}
]
}
这种机器可读的数据格式,确保了信息在链条中传递时,精确、无歧义,为整个任务的成功奠定了坚实基础。
提示词链的应用场景非常广泛,它是构建高级 AI Agent(智能代理)的基石。以下是几种经过验证的、非常有效的方法:
许多任务涉及对原始信息进行多次转换。提示词链可以完美地自动化这个过程。
对于那些无法一次性回答、需要多步推理的复杂问题,提示词链是理想的解决方案。
将非结构化文本(如发票、简历)转换为结构化数据时,往往需要反复验证和修正。
无论是写文章还是写代码,创作过程本身就是程序性的,可以分解为构思、起草和修订等阶段。
通过这些方法,我们可以看到,提示词链不仅是一种技术,更是一种将复杂问题模块化、流程化的思维方式,它能极大地提升我们利用 AI 解决实际问题的稳定性和效率。
https://github.com/go-kratos/blades/tree/main/examples/prompt-basic
package main
import (
"context"
"log"
"github.com/go-kratos/blades"
"github.com/go-kratos/blades/contrib/openai"
)
func main() {
agent := blades.NewAgent(
"Basic Agent",
blades.WithModel("gpt-5"),
blades.WithProvider(openai.NewChatProvider()),
)
prompt := blades.NewPrompt(
// 声明系统提示词,告诉大模型它的角色和职责:你是一个乐于助人、提供详尽准确信息的助手。
blades.SystemMessage("You are a helpful assistant that provides detailed and accurate information."),
// 声明用户提示词,向 LLM 提问:法国首都是哪里?
blades.UserMessage("What is the capital of France?"),
)
result, err := agent.Run(context.Background(), prompt)
if err != nil {
log.Fatal(err)
}
log.Println(result.Text())
}
https://github.com/go-kratos/blades/tree/main/examples/prompt-instructions
package main
import (
"context"
"log"
"github.com/go-kratos/blades"
"github.com/go-kratos/blades/contrib/openai"
)
func main() {
agent := blades.NewAgent(
"Instructions Agent",
blades.WithModel("gpt-5"),
blades.WithProvider(openai.NewChatProvider()),
// 声明系统指令,此处可以使用 Go 模板语法,可以很方便的传入动态参数。
blades.WithInstructions("Respond as a {{.style}}."),
)
prompt := blades.NewPrompt(
blades.UserMessage("Tell me a joke."),
)
// 创建一个会话,声明 agent instructions 中使用到的模板变量
session := blades.NewSession(map[string]any{
"style": "robot",
})
ctx := blades.NewSessionContext(context.Background(), session)
// Run the agent with the prompt and session context
message, err := agent.Run(ctx, prompt)
if err != nil {
panic(err)
}
log.Println(message.Text())
}
https://github.com/go-kratos/blades/blob/main/examples/prompt-template
package main
import (
"context"
"log"
"github.com/go-kratos/blades"
"github.com/go-kratos/blades/contrib/openai"
)
func main() {
agent := blades.NewAgent(
"Template Agent",
blades.WithModel("gpt-5"),
blades.WithProvider(openai.NewChatProvider()),
)
// 定义模板中使用到的变量
params := map[string]any{
"topic": "The Future of Artificial Intelligence",
"audience": "General reader",
}
// Build prompt using the template builder
// Note: Use exported methods when calling from another package.
prompt, err := blades.NewPromptTemplate().
// 声明模板语法,动态填充内容
System("Please summarize {{.topic}} in three key points.", params).
User("Respond concisely and accurately for a {{.audience}} audience.", params).
Build()
if err != nil {
log.Fatal(err)
}
log.Println("Generated Prompt:", prompt.String())
// Run the agent with the templated prompt
result, err := agent.Run(context.Background(), prompt)
if err != nil {
log.Fatal(err)
}
log.Println(result.Text())
}
如果说提示词链是战术,那么 上下文工程(Context Engineering) 就是战略。
它认为,AI 输出的质量,不仅取决于你“问了什么”,更取决于你为它提供了多么丰富的“信息环境”(上下文)。这包括:
简单来说,上下文工程就是为 AI 打造一个全面的“作战指挥室”,让它在充分了解背景信息的情况下做出决策。这才是将 AI 从一个聊天工具,提升为能够感知上下文、具备高度能力的智能 Agent 的关键。
当你需要 AI 完成一个复杂任务时,请记住:
掌握提示词链,你就能更高效地驾驭 AI。这不仅是一种技巧,更是一种与未来智能体协作的思维方式。现在就动手试试,开启你与 AI 沟通的新篇章吧!