首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >跟 Blades 学 Agent 设计 - 01 用“提示词链”让你的 AI 助手变身超级特工

跟 Blades 学 Agent 设计 - 01 用“提示词链”让你的 AI 助手变身超级特工

作者头像
用户1174346
发布2026-07-10 15:03:17
发布2026-07-10 15:03:17
630
举报

你是否曾感觉与 AI 沟通像“对牛弹琴”?你给它一个复杂的任务,期望它能一步到位,结果却常常是丢三落四、逻辑混乱,甚至一本正经地胡说八道。

问题出在哪里?也许不是 AI 不够聪明,而是我们与它沟通的方式需要升级。今天,我们就来介绍一个强大的技术——提示词链(Prompt Chaining),它能将你的 AI 助手从一个偶尔犯傻的聊天机器人,调教成一个逻辑清晰、使命必达的超级特工。

什么是提示词链?别让 AI 一次想太多

想象一下,你要组织一场复杂的市场活动。你不会对一个新员工说:“去,把活动搞定。”而是会把任务拆解:

  1. 第一步: “先去调研一下最近的市场趋势,给我一份总结报告。”
  2. 第二步: “根据这份报告,找出三个最值得关注的趋势,并列出支持数据。”
  3. 第三步: “用这些趋势和数据,给营销团队写一封邮件,说明我们的活动方向。”

“提示词链”就是这个道理。它的核心思想是:化繁为简,分而治之

我们不再用一个冗长复杂的提示词(Prompt)去“轰炸”AI,而是将一个大任务分解成一系列更小、更聚焦的子任务。上一个子任务的输出,会像接力棒一样,精准地传递给下一个子任务作为输入。

代码语言:javascript
复制
 [原始市场报告] -> [提示词1: 总结] -> [报告摘要] -> [提示词2: 提取趋势] -> [结构化JSON数据] -> [提示词3: 起草邮件] -> [最终邮件初稿]

这个过程就像一条精密的流水线,每一步都只做一个简单明确的操作,最终组合起来,就能高效、可靠地完成复杂工作。

为什么“链式思考”比“一锅端”更有效?

使用单一、庞大的提示词,AI 很容易“认知过载”,导致:

  • 指令遗忘:任务要求太多,AI 顾头不顾尾。
  • 上下文漂移:聊着聊着,AI 就忘了最初的目标是什么。
  • 错误传播:一个环节的小错误在后续被无限放大。
  • 胡说八道(幻觉):信息处理负担太重,AI 开始自由发挥。

而提示词链通过“流水线作业”,完美地解决了这些问题:

  • 高可靠性:每一步都简单专注,大大提高了单步的准确率。
  • 强可控性:你可以清晰地看到每一步的结果,方便调试和优化。
  • 可解释性:如果结果出错,你能快速定位是哪一个环节出了问题。

关键一步:用“结构化数据”打造标准化的“集装箱”

为了让流水线上的信息传递不出错,我们需要一个标准化的“集装箱”。如果上一步的输出是一段模糊的自然语言,下一步的 AI 可能就无法准确理解。

因此,在关键步骤之间,强制 AI 使用 JSONXML 这样的结构化格式来输出结果,就显得至关重要。

例如,在识别市场趋势的环节,我们可以要求 AI 这样输出:

代码语言:javascript
复制
{
  "trends": [
    {
      "trend_name": "AI驱动的个性化营销",
      "supporting_data": "73%的消费者更愿意与使用其个人信息来提升购物体验的品牌打交道。"
    },
    {
      "trend_name": "可持续和道德品牌",
      "supporting_data": "过去五年,有ESG(环境、社会和治理)声明的产品销售额增长了28%。"
    }
  ]
}

这种机器可读的数据格式,确保了信息在链条中传递时,精确、无歧义,为整个任务的成功奠定了坚实基础。

提示词链的几种核心方法

提示词链的应用场景非常广泛,它是构建高级 AI Agent(智能代理)的基石。以下是几种经过验证的、非常有效的方法:

方法一:信息处理工作流

许多任务涉及对原始信息进行多次转换。提示词链可以完美地自动化这个过程。

  • 场景:构建一个 AI 研究助手,自动分析报告。
  • 链条
    1. **提示词 1 (提取)**:从给定的 URL 或文档中提取纯文本内容。
    2. **提示词 2 (总结)**:对提取的文本进行总结,提炼核心观点。
    3. **提示词 3 (实体识别)**:从摘要或原文中,提取出关键实体(如人名、公司名、日期)。
    4. **提示词 4 (信息检索)**:使用提取出的实体,去内部知识库或数据库中进行查询。
    5. **提示词 5 (报告生成)**:将总结、实体和检索结果整合,生成一份结构化的最终报告。

方法二:复杂问答系统

对于那些无法一次性回答、需要多步推理的复杂问题,提示词链是理想的解决方案。

  • 场景:回答历史问题:“1929年股市崩盘的主要原因是什么?当时的政府政策是如何应对的?”
  • 链条
    1. **提示词 1 (问题分解)**:识别用户查询中的核心子问题(“崩盘原因”和“政府应对”)。
    2. **提示词 2 (专题研究)**:专门检索和整理关于“1929年崩盘原因”的信息。
    3. **提示词 3 (专题研究)**:专门检索和整理关于“政府对崩盘的政策响应”的信息。
    4. **提示词 4 (答案综合)**:将前两步的信息整合成一个逻辑连贯、全面的答案。

方法三:数据提取与转换(迭代式)

将非结构化文本(如发票、简历)转换为结构化数据时,往往需要反复验证和修正。

  • 场景:从一张发票图片中提取信息。
  • 链条
    1. **提示词 1 (初次提取)**:尝试从发票文本中提取所有字段(如公司名、金额、日期)。
    2. 处理与验证:程序检查提取的字段是否齐全、格式是否正确(例如,日期格式、金额是否为数字)。
    3. **提示词 2 (条件性触发)**:如果发现有字段缺失或格式错误,则生成一个新的、目标更明确的提示词,要求 AI “专门去寻找缺失的xx字段”或“请将日期修正为YYYY-MM-DD格式”,并把上次失败的尝试作为上下文提供给它。
    4. 循环与输出:如有必要,重复步骤2和3,直到所有数据都得到验证,最后输出干净的结构化数据。

方法四:内容与代码生成工作流

无论是写文章还是写代码,创作过程本身就是程序性的,可以分解为构思、起草和修订等阶段。

  • 场景:让 AI 辅助你写一个功能模块。
  • 链条
    1. **提示词 1 (理解与规划)**:理解用户的需求,并生成伪代码或实现大纲。
    2. **提示词 2 (草稿编写)**:根据大纲,编写出功能的初始代码草稿。
    3. **提示词 3 (分析与测试)**:识别代码中的潜在错误或改进点(可以调用另一个LLM,或集成静态分析工具)。
    4. **提示词 4 (重构与完善)**:根据发现的问题,重写或优化代码。
    5. **提示词 5 (文档生成)**:为最终的代码添加注释或生成使用文档。

通过这些方法,我们可以看到,提示词链不仅是一种技术,更是一种将复杂问题模块化、流程化的思维方式,它能极大地提升我们利用 AI 解决实际问题的稳定性和效率。

来一些简单的示例代码,看看 Blades 中怎么写提示词

prompt basic

https://github.com/go-kratos/blades/tree/main/examples/prompt-basic

代码语言:javascript
复制
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())
}

prompt instructions

https://github.com/go-kratos/blades/tree/main/examples/prompt-instructions

代码语言:javascript
复制
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())
}

prompt template

https://github.com/go-kratos/blades/blob/main/examples/prompt-template

代码语言:javascript
复制
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 可以主动检索知识库来获取信息。
  • 工具输出:允许 AI 调用外部 API(如日历、计算器)来获取实时数据。
  • 隐式数据:用户的身份、历史交互记录等。

简单来说,上下文工程就是为 AI 打造一个全面的“作战指挥室”,让它在充分了解背景信息的情况下做出决策。这才是将 AI 从一个聊天工具,提升为能够感知上下文、具备高度能力的智能 Agent 的关键。

总结

当你需要 AI 完成一个复杂任务时,请记住:

  1. 拆解任务:像项目经理一样,把大任务分解成一系列逻辑清晰的子任务。
  2. 链式执行:用提示词链的方式,引导 AI 一步步完成。
  3. 结构化传递:在关键节点,要求 AI 使用 JSON 等格式,确保信息准确。

掌握提示词链,你就能更高效地驾驭 AI。这不仅是一种技巧,更是一种与未来智能体协作的思维方式。现在就动手试试,开启你与 AI 沟通的新篇章吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 kratos 开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是提示词链?别让 AI 一次想太多
  • 为什么“链式思考”比“一锅端”更有效?
  • 关键一步:用“结构化数据”打造标准化的“集装箱”
  • 提示词链的几种核心方法
    • 方法一:信息处理工作流
    • 方法二:复杂问答系统
    • 方法三:数据提取与转换(迭代式)
    • 方法四:内容与代码生成工作流
  • 来一些简单的示例代码,看看 Blades 中怎么写提示词
    • prompt basic
    • prompt instructions
    • prompt template
  • 更进一步:从“提示工程”到“上下文工程”
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档