查看原文
科技

【GPT】AI助手新体验:Mr.Trans与GreatMaster,你的翻译专家与智慧导师

张汉东 觉学社 2023-06-02

引言

最近一直在玩 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> `。

默认提供了一些大师的角色供你选择:

  1. 释迦摩尼(Sakyamuni): 专注于佛学与禅学的教诲。
  2. 老子(Laozi): 通晓东方智慧,辩证思维和道,可以和你探索《道德经》。
  3. 王阳明(Wang Yangming): 自创了《心学》,陪你探索心理哲学。
  4. 萨古鲁(Sadhguru): 提供瑜伽和冥想的见解。
  5. 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 时应该采用以下原则:

  1. 精简语言:尽可能地使用简洁明了的语言。避免冗余和复杂的表达方式。例如,你可以将 "我想知道如何优化 Prompt Tokens 长度" 简化为 "如何优化 Prompt Tokens 长度"。
  2. 避免过多的上下文:虽然上下文信息对于 AI 理解问题很重要,但是过多的上下文信息可能会导致 Prompt Tokens 过长。因此,你应该只提供足够的上下文信息,避免不必要的细节。
  3. 使用关键词:尽可能地使用关键词,而不是长句。例如,你可以使用 "Prompt Tokens 优化",而不是 "我想知道如何优化 Prompt Tokens"。
  4. 分解复杂问题:如果你的问题很复杂,你可以尝试将它分解成几个简单的问题。这样,你可以分别对每个问题进行提问,而不是在一个 prompt 中包含所有的问题。
  5. 实验和迭代:通过实验和迭代,你可以找到最有效的 prompt 长度。你可以尝试使用不同长度的 prompt,看看哪个长度的 prompt 能得到最好的结果。

TODO

功能:

  • 编辑器高亮支持
  • PDL Compiler
  • 文档完善

尽管它在设计上具有一定的优点,但仍然存在一些可能的缺陷或者限制:

  • 复杂性:PDL 的语法可能相对复杂,尤其是对于那些不熟悉编程或脚本语言的人来说。这可能使得创建和修改 PDL 文件变得困难,尤其是对于复杂的模型行为。
  • 文档和教程的缺乏:由于 PDL 是一种专门的、不广泛使用的语言,可能缺乏足够的教程和文档,这会增加新用户学习和使用它的难度。
  • 可扩展性和灵活性:虽然 PDL 被设计成一种可扩展的语言,但它可能仍然存在无法适应某些特定需求的情况,尤其是在面对一些特殊的、不常见的 AI 模型行为时。
  • 工具支持:由于 PDL 不是一种广泛使用的语言,可能缺乏相应的开发和调试工具,这可能会影响开发效率和质量。
  • 可读性和可维护性:如果 PDL 文件的规模过大或者结构过于复杂,可能会影响其可读性和可维护性。尤其是在没有良好的文档和注释的情况下,可能会导致后续维护工作困难。

根据实际的使用场景和需求,可能会有更多特定的挑战和问题需要解决。

Q&A

特别说明:有时候 ChatGPT 没有按要求执行命令,你只需要提醒一下它。它对命令是完全理解的。

Q: 一个 conversation 中多长时间需要重新设定 Prompt ?

A: GPT-4 下估计两周左右(个人经验估计,不一定准确),如果发现 ChatGPT 不认识命令,就需要重新设定 Prompt。

参考资料

[1]

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


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存