LangGPT —— 让人人都能编写高质量 Prompt
要用好现有大模型的能力严重依赖高质量 prompt, 然而编写高质量 prompt 在现阶段还是个手艺活,太依赖个人经验。
虽然也有许多个人自发分享的 prompt 方法、框架,以及吴恩达老师的 prompt 教程,但是现有 Prompt 创建方法还是有各种各样的缺点:
- 缺乏系统性:大多是细碎的规则,技巧,严重依赖个人经验
- 缺乏灵活性:对他人分享的优质 prompt 进行调整需要直接修改 prompt 内容
- 缺乏交互友好性:优质 prompt 的配置和使用太复杂,有时往往还要学习 prompt 用法
4.未充分考虑大语言模型的下列特性:
(1)偏好分点、条理性叙述
(2)长对话会出现遗忘问题
(3)不同语言间性能存在差距
这也是为什么大家爱收集,分享一些久经考验的 prompt 的原因之一。
随着 GPT-4 模型出来,对 prompt 的依赖有所降低,同时其更强大的基础能力为编写更强大的 prompt 提供了良好的基础,优质的 prompt 能力越来越强大,也越来越复杂。
prompt 编写越来越像 AI 时代的编程语言。
那么有没有可能像学编程一样,掌握一些基础规则和概念,掌握一些编程模式(类似面向对象的编程),即可高效的编写出表现良好稳定的 prompt——即 prompt 编程?
经过初步探索和实验,我们设计了 LangGPT,希望在 prompt 的编程法上迈出一小步。
使用 LangGPT 为大规模生产高质量prompt提供了可能,它有下面的优点:
- 系统性:提供“模板”,按照模板填鸭式写上相应内容即可
- 灵活性:可以使用“变量”,轻松引用、设置和更改 prompt 中的内容,可编程性好
- 使用命令,轻松设置、执行预定义行为,可以无损性能情况下轻松设置中英文切换
- 交互友好:“工作流” 轻松定义与用户交互,角色行为等,轻松引导用户使用
- 充分利用大模型能力:
(1)模块化配置
(2)分点条理性叙述
(3)Reminder 缓解长期记忆缺失问题
LangGPT 的两个关键语法
- LangGPT 变量:
我们发现 ChatGPT 可以识别各种良好标记的层级结构内容。大模型可以识别文章的标题,段落名,段落正文等层级结构,如果我们告诉他标题,模型知道我们指的是标题以及标题下的正文内容。
这意味着我们将 prompt 的内容用结构化方式呈现,并设置标题即可方便的引用,修改,设置 prompt 内容。可以直接使用段落标题来指代大段内容,也可以告诉ChatGPT修改调整指定内容。这类似于编程中的变量,因此我们可以将这种标题当做变量使用。
Markdown 的语法层级结构很好,适合编写 prompt,因此 LangGPT 的变量基于 markdown语法。实际上除 markdown外各种能实现标记作用,如 json,yaml, 甚至好好排版好格式 都可以。
变量为 Prompt 的编写带来了很大的灵活性。使用变量可以方便的引用角色内容,设置和更改角色属性。这是一般的 prompt 方法实现起来不方便的。
- LangGPT 模板:
ChatGPT 十分擅长角色扮演,大部分优质 prompt 开头往往就是 “我希望你作为xxx”,“我希望你扮演xxx” 的句式定义一个角色,只要提供角色说明,角色行为,技能等描述,就能做出很符合角色的行为。
如果你熟悉编程语言里的 “对象”,就知道其实 prompt 的“角色声明”和类声明很像。因此 可以将 prompt 抽象为一个角色 (Role),包含名字,描述,技能,工作方法等描述,然后就得到了 LangGPT 的 Role 模板。
使用 Role 模板,只需要按照模板填写相应内容即可。
除了变量和模板外,LangGPT 还提供了命令,记忆器,条件句等语法设置方法。
- LangGPT 咒语生成器
值得一提的是,我们基于 LangGPT 设计了 LangGPT 助手来帮助大家使用 LangGPT, 它会帮助你设计很好的咒语
LangGPT 还在探索开发阶段,有问题欢迎反馈,更欢迎更多的人参与进来! 欢迎关注+star,欢迎共同参与!