Cangjie Magic编写提示词教程

AI教程 2025-03-17 68
Cangjie Magic

Cangjie Magic

  • 智能体
  • 80
  • 8.10115.magic

编写提示词

每个 Agent 的核心是系统提示词,它定义了 Agent 的角色信息和执行步骤,使得大语言模型(LLM)能够更准确和快速地回答问题。在 Agent 定义中,@prompt 用于编写 Agent 的系统提示词。

在 @prompt 宏的作用域下,所有字符串字面量(包括插值字符串)会被依次拼接为完整的系统提示词。

在 @prompt 中能够访问仓颉语言的函数和成员变量。

使用提示词模式.jpg

每个 Agent 最多有一个 @prompt 定义。

示例:字符串拼接 以下代码将三个字符串依次拼接作为完整的 Agent 系统提示词,并且第三个插值字符串中调用了函数 bar。

@agent

class Foo {

    @prompt(

        "# This is a Foo agent"

        "## Description"

        "balabala ${bar()}"

    )

}

示例:访问成员变量

@agent

class Calculator {

    @prompt(

        """

        你是一个计算器,能够进行计算。

        你的名字是 ${name}-${version}。

        """

        "例如,你可以加法运算,1 + 2 = 3 ..."

    )

    private let name: String

    private let version: Int64

    ...

}

let calculator = Calculator(name: "aha", version: 1)

宏 @prompt 支持设置 include 属性,属性值为字符串。该字符串是一个文件路径,表示将文件内容作为 Agent 系统提示词。

当配置 include 属性后,@prompt 中编写的字面量将失效,不再作为系统提示词

若 include 指向的文件不存在,将抛出异常

示例:使用外部文件编写系统提示词

@agent

class Foo {

    @prompt[include: "./a.md"]()

}

使用提示词模式

良好的结构化提示词能够显著提升 LLM 的性能。通过定义统一的提示词语法,可以帮助开发者编写更加结构化的提示词。

使用提示词模式

宏 @prompt 支持设置 pattern 属性,其值应为提示词模式类型。使用提示词模式时,@prompt 作用域内必须编写满足模式的提示词元素而不是字符串字面量。

注意:include 属性和 pattern 属性无法同时使用;若两者同时出现将抛出异常。

示例:使用提示词模式

@agent

class Foo {

    @prompt[pattern: APE] (

        action: "帮助用户制定旅行路线",

        purpose: "让用户在计划的时间内尽可能多地参观景点并得到充分休息",

        expectation: "生成一条合理的旅行路线,包括时间、景点、通勤等信息"

    )

}

以下是目前已提供的提示词模式。

提示词模式说明

APE

action: 定义要完成的工作或活动 purpose: 定义为什么要开始这个行动 expectation: 陈述预期结果

BROKE

background: 描述背景并提供足够的信息 role: 指定代理的角色 objectives: 定义要实现的任务目标 keyResult: 定义关键的、可衡量的结果,以指导代理如何评估目标的实现情况 evolve: 通过实验和调整来测试结果,并在需要时进行优化

COAST

context: 为对话设定背景 objective: 描述目标 action: 解释所需的行动 scenario: 描述情景 task: 描述任务

TAG

task: 定义具体的任务 action: 描述需要做什么 goal: 解释最终目标

RISE

role: 指定代理的角色 input: 描述信息或资源 steps: 要求提供详细步骤 expectation: 描述期望的结果

TRACE

task: 定义具体的任务 request: 描述你的请求 action: 解释你需要的行动 context: 提供背景或情境 example: 给出一个示例以说明你的观点

ERA

expectation: 描述期望的结果 role: 指定代理的角色 action: 指定要采取的行动

CARE

context: 为讨论设定背景或情境 action: 描述你想做什么 result: 描述期望的结果 example: 给出一个示例以说明你的观点

ROSES

role: 指定代理的角色 objective: 陈述目标或目的 scenario: 描述情境 expectation: 定义期望的结果 steps: 达到解决方案所需的步骤

ICIO

instruction: 具体的任务指示给 AI context: 提供更多背景信息给 AI input: 告知模型需要处理的数据 output: 告知我们期望的输出类型或样式

CRISPE

capacityAndRole: 代理应扮演的角色 insight: 提供见解、背景和情境 statement: 你要求代理做什么 personality: 你希望代理以什么风格、个性或方式响应 experiment: 请求代理提供多个示例进行响应

RACE

role: 指定代理的角色 action: 详细说明要采取的行动 context: 提供相关情境的详细信息 expectation: 描述期望的结果

SAGE

situation: 描述执行任务的背景或环境 action: 具体指定需要采取的操作或步骤 goal: 说明任务完成后应达到的目的或效果 expectation: 具体说明对输出结果的要求

自定义提示词模式

宏 @promptPattern 作用于 class 类型,可定义新的提示词模式。在被修饰的类定义中,宏 @element 用于修饰成员变量,可定义提示词元素。

每个元素必须是 String 类型,

description 属性用于解释元素,不会影响最终提示词。

提示词模式类型必须实现 toString 方法,改方法用于构建提示词。

示例:自定义提示词模式

@promptPattern

class APE {

    @element[description: "定义任务"]

    let action: String


    @element[description: "定义任务原因"]

    let purpose: String


    @element[description: "清晰地定义期望结果"]

    let expectation: String


    public func toString(): String {

        return "...${action}...${purpose}...${expectation}..."

    }

}

文章由本站整理发布,转载请注明地址:https://www.12330.com.cn/view-8aa82791

文章目录