【GPT】AI助手新体验:Mr.Trans与GreatMaster,你的翻译专家与智慧导师
引言
最近一直在玩 ChatGPT,对于 Prompt 很多人不太重视它,认为 Prompt 只是个简单的问题。但实际上关于 Prompt 有很多学问。最近吴恩达也联合 OpenAI 出了 Prompt 相关的课,我也学习了并且记录了思维导图,可以在此下载 xmind 文件或 PDF:ZhangHanDong/rustchat[1]。
在我看来,Prompt 是等价于编程语言的存在,因为如果想利用好 GPT 这样的 AI 去编写稳定的智能应用,就必须写出稳定的 Prompt 让它工作。因此我也探索了 Prompt Description Language 这样可以编写结构化 Prompt 的描述语言。
最值得分享的是我基于 PDL 设计的两个 Prompt ,可以通过一个 Prompt 将 ChatGPT 化身为你的私人 AI 助手。
一个是翻译助手 Mr.Trans[2]。可以帮助你在日常学习工作中,快速翻译、总结和搜索相关信息。 一个是大师助手 GreatMaster[3]。可以模拟和佛陀、老子、苏格拉底等大师进行交流,帮助你思考人生中的难题,为你的心灵提供养料。
Prompt 特色
使用我设计的 【WIP】Prompt 描述语言(PDL,Prompt Description Language)[4]编写 Prompt。该描述语言支持编写结构化和模块化 Prompt 。下面章节也会介绍。 支持多命令组合使用。
以下分别来介绍两个 AI 助手。
Mr.Trans
通过一个 Prompt 将 ChatGPT 打造为一个翻译、总结和学习英语的智能助手。
“当前版本 V0.3,如果发现什么问题请提 Issue 交流。说明:GPT-3.5 可用,在 GPT-4 或 GPT-4 Plugin 下面更佳。推荐配合这三种 GPT 插件使用更佳:WebPilot/ScholarAI/Speak。值得说明的是,本 Prompt 中已经限定了哪些命令只能使用哪个插件。
本 Prompt 的灵感来自于 https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor/[5] 。但是专注于翻译、总结和英语的学习。
这个智能助手能协助你高效率完成以下日常工作:
翻译。自动识别语言,默认使用中英文互翻。可以通过命令指定翻译目标语言。 支持给定文本。用法: /trans <TEXT>
或者/trans -l Chinese <TEXT>
。给定的文章链接(需要 WebPilot 插件)。用法: /trans <URL>
或者/trans -l Chinese <URL>
。指定翻译字典。 /dict
,列出可以指定英汉和英英翻译词典。通过/dict -e2c <Dictionary>
或/dict -e2e <Dictionary>
来选择你想要使用的字典。搜索。默认使用 WebPilot 插件基于 Google 搜索,当特别指定需要搜索论文时,会使用 ScholarAI
插件检索论文。总结。支持给定的文本或链接(需要 WebPilot 插件)。可以通过命令指定翻译目标语言。 /search 搜索今天三条 Rust 语言动态
/summary - Chinese给定文本或链接用法: /summary <TEXT/URL>
或/summary -l Chinese <TEXT/URL>
多命令配合,可以总结前面命令输出的文本。 英文学习。配合 Speak
插件,结合/trans
和/learn
命令,可以针对日常不认识的单词、短语或句子展开深入学习。
使用说明
将 Mr.Trans.pdl[6]文件中的内容复制到 ChatGPT 中,回车,然后按指令进行设定即可。
这是 ChatGPT 可以识别的命令列表:
1. `/config`:我将引导您进行配置过程,包括询问您的首选语言。
2. `/dict`:我将列出可用的词典选项。
3. `/help`:我将列出我能识别的所有命令、描述和规则。
4. `/trans`:我将识别给定文本的语言并将其翻译成指定的目标语言。例如:`/trans <TEXT>`。默认的翻译目标语言由 `lang` 命令指定。
5. `/lang`:您可以设置翻译的默认目标语言。用法:`/lang [lang]`。例如:`/lang Chinese`。
6. `/dict`:您可以选择要使用的词典。默认的英汉和英英词典分别使用牛津高级学习者词典。您可以使用 `-e2c` 或 `-e2e` 来指定所需的词典。例如:`/dict -e2e Collins`。
7. `/learn`:您可以选择学习特定的单词或短语。用法:`/learn [word]`。
8. `/search`:我将根据您指定的内容进行搜索。*需要使用 WebPilot 插件*。
9. `/summary`:我将提供给定文本或链接的详细摘要,不少于300字。*需要使用 GPT 插件*。
10. `/plugins`:我将列出推荐的 GPT 插件。*需要使用 GPT 插件*。
11. `-l`:这是一个二级命令,用于为一级命令指定目标语言。例如:`/trans -l <Target> <TEXT>` 或 `/summary -l <Target> <TEXT/URL>`。
12. `-plugin`:这是一个二级命令,用于指定要使用的 GPT 插件。*需要使用 GPT 插件*。
插件模式下,如果某个命令不想使用插件,可以在命令后面增加 *NO PLUGINS*
。
更多使用示意图:
大师 prompt
通过一个 Prompt ,让大师来到你身边陪你思考与成长,帮助你觉醒和开悟。
使用方法
将 master.pdl
文件的内容复制到 ChatGPT 输入即可。
可用命令
“说明:「我」即「GPT」。
1. `/help`: 列出我能识别的所有命令、描述和规则。
2. `/config`: 引导用户进行配置过程,包括询问首选语言。
3. `/role`: 列出所有可用的"大师"角色。
4. `-r`: 二级命令,指定一个大师来讲话。
5. `/lang`: 默认的目标输出语言。使用方式:`/lang [lang]`。例如:`/lang Chinese`。
6. `/learn`: 根据用户的角色配置,每个角色给用户三个教导性的声明。
7. `/ask`: 用户会提出问题,你会按照用户选择的角色以圆桌会议的方式进行讨论和建议,并最后给出三个供用户反思的问题。
8. `-l`: 二级命令,指定一级命令的目标输出语言。例如:`/ask -l <Target> <TEXT> `。
默认提供了一些大师的角色供你选择:
释迦摩尼(Sakyamuni): 专注于佛学与禅学的教诲。 老子(Laozi): 通晓东方智慧,辩证思维和道,可以和你探索《道德经》。 王阳明(Wang Yangming): 自创了《心学》,陪你探索心理哲学。 萨古鲁(Sadhguru): 提供瑜伽和冥想的见解。 Socrates: 讨论智慧的三分理论。
你可以通过 /role
命令后跟角色名来指定任何这些角色。如果你想要一个涉及多个角色的圆桌会议,可以在命令后列出多个角色,例如 /role Sakyamuni, Laozi
。
更多使用图示:
提示描述语言(Prompt Description Language) (V0.1.1 POC)
“目前概念验证阶段
说明
PDL (Prompt Description Language) 格式提供了一种可扩展的方式来描述 Prompt 的行为和特性。PDL 尝试作为一种 GPT 可直接理解和识别的描述语言,专门用于描述成体系的模版化规范化的 Prompt,或可作为某种 Prompt 引擎的描述语言。
然而,PDL 也具备通用性,可用于一般的编程实践中,但是需要完善配套工具和文档。
语法基本描述
PDL 结构的基本规则如下:
{}
代表一个结构,.
也用于表示层级结构。@
表示对指定结构字段的引用。import
表示导入由@
引用的结构。在 Key: Value
键值对中,键一般不需要用引号包围(除非它包含其他特殊字符,这种情况下可以使用单引号或双引号)。值可以采取以下形式:Key: "value"
Key: ["v1", "v2"]
Key: {k1: 'v1', k2: 'v2', k3: 'v3', ...}
Key: {'1/3': 'v1', '2/3': 'v2', '3/3': 'v3'}
Key: "<Value>"
Key: "<Value>" / None
Key [ v1, v2, ...]
,用于定义一个序列。
PDL 编写原则:
为了优化 Prompt Tokens 长度在编写 PDL 时应该采用以下原则:
精简语言:尽可能地使用简洁明了的语言。避免冗余和复杂的表达方式。例如,你可以将 "我想知道如何优化 Prompt Tokens 长度" 简化为 "如何优化 Prompt Tokens 长度"。 避免过多的上下文:虽然上下文信息对于 AI 理解问题很重要,但是过多的上下文信息可能会导致 Prompt Tokens 过长。因此,你应该只提供足够的上下文信息,避免不必要的细节。 使用关键词:尽可能地使用关键词,而不是长句。例如,你可以使用 "Prompt Tokens 优化",而不是 "我想知道如何优化 Prompt Tokens"。 分解复杂问题:如果你的问题很复杂,你可以尝试将它分解成几个简单的问题。这样,你可以分别对每个问题进行提问,而不是在一个 prompt 中包含所有的问题。 实验和迭代:通过实验和迭代,你可以找到最有效的 prompt 长度。你可以尝试使用不同长度的 prompt,看看哪个长度的 prompt 能得到最好的结果。
TODO
功能:
编辑器高亮支持 PDL Compiler 文档完善
尽管它在设计上具有一定的优点,但仍然存在一些可能的缺陷或者限制:
复杂性:PDL 的语法可能相对复杂,尤其是对于那些不熟悉编程或脚本语言的人来说。这可能使得创建和修改 PDL 文件变得困难,尤其是对于复杂的模型行为。 文档和教程的缺乏:由于 PDL 是一种专门的、不广泛使用的语言,可能缺乏足够的教程和文档,这会增加新用户学习和使用它的难度。 可扩展性和灵活性:虽然 PDL 被设计成一种可扩展的语言,但它可能仍然存在无法适应某些特定需求的情况,尤其是在面对一些特殊的、不常见的 AI 模型行为时。 工具支持:由于 PDL 不是一种广泛使用的语言,可能缺乏相应的开发和调试工具,这可能会影响开发效率和质量。 可读性和可维护性:如果 PDL 文件的规模过大或者结构过于复杂,可能会影响其可读性和可维护性。尤其是在没有良好的文档和注释的情况下,可能会导致后续维护工作困难。
根据实际的使用场景和需求,可能会有更多特定的挑战和问题需要解决。
Q&A
特别说明:有时候 ChatGPT 没有按要求执行命令,你只需要提醒一下它。它对命令是完全理解的。
Q: 一个 conversation 中多长时间需要重新设定 Prompt ?
A: GPT-4 下估计两周左右(个人经验估计,不一定准确),如果发现 ChatGPT 不认识命令,就需要重新设定 Prompt。
参考资料
ZhangHanDong/rustchat: https://github.com/ZhangHanDong/rustchat/releases/tag/prompt%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%AF%BE%E7%A8%8B%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE
[2]Mr.Trans: https://github.com/Illumine-Labs/Mr.trans
[3]GreatMaster: https://github.com/Illumine-Labs/GreatMaster
[4]【WIP】Prompt 描述语言(PDL,Prompt Description Language): https://github.com/ZhangHanDong/prompt-description-language
[5]https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor/: https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor/
[6]Mr.Trans.pdl: ./Mr.Trans.pdl