Cangjie Magic
- 智能体
- 80
- 8.10115.magic
每个 Agent 的核心是系统提示词,它定义了 Agent 的角色信息和执行步骤,使得大语言模型(LLM)能够更准确和快速地回答问题。在 Agent 定义中,@prompt 用于编写 Agent 的系统提示词。
在 @prompt 宏的作用域下,所有字符串字面量(包括插值字符串)会被依次拼接为完整的系统提示词。
在 @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: "生成一条合理的旅行路线,包括时间、景点、通勤等信息"
)
}
以下是目前已提供的提示词模式。
提示词模式 | 说明 |
---|---|
宏 @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