LangGPT 让人人都能编写高质量 Prompt - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
etherealai
V2EX    OpenAI

LangGPT 让人人都能编写高质量 Prompt

  •  1
     
  •   etherealai 2023-05-13 10:12:00 +08:00 3373 次点击
    这是一个创建于 957 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要用好现有大模型的能力严重依赖高质量 prompt , 然而编写高质量 prompt 在现阶段还是个手艺活,太依赖个人经验。

    虽然也有许多个人自发分享的 prompt 方法、框架,以及吴恩达老师的 prompt 教程,但是现有 Prompt 创建方法还有各种各样的缺点:

    1. 缺乏系统性:大多是细碎的规则,技巧,严重依赖个人经验
    2. 缺乏灵活性:对他人分享的优质 prompt 进行调整需要直接修改 prompt 内容
    3. 缺乏交互友好性:优质 prompt 的配置和使用太复杂,有时往往还要学习 prompt 用法 4.未充分考虑大语言模型的下列特性: ( 1 )偏好分点、条理性叙述 ( 2 )长对话会出现遗忘问题 ( 3 )不同语言间性能存在差距

    这也是为什么大家爱收集,分享一些久经考验的 prompt 的原因之一。

    随着 GPT-4 模型出来,对 prompt 的依赖有所降低,同时其更强大的基础能力为编写更强大的 prompt 提供了良好的基础,优质的 prompt 能力越来越强大,也越来越复杂。

    prompt 编写越来越像 AI 时代的编程语言。

    那么有没有可能像学编程一样,掌握一些基础规则和概念,掌握一些编程模式(类似面向对象的编程),即可高效的编写出表现良好稳定的 prompt即 prompt 编程?

    经过初步探索和实验,我们设计了 LangGPT ,希望在 prompt 的编程法上迈出一小步。

    使用 LangGPT 为大规模生产高质量 prompt 提供了可能,它有下面的优点:

    1. 系统性:提供“模板”,按照模板填鸭式写上相应内容即可
    2. 灵活性:可以使用“变量”,轻松引用、设置和更改 prompt 中的内容,可编程性好
    3. 使用命令,轻松设置、执行预定义行为,可以无损性能情况下轻松设置中英文切换
    4. 交互友好:“工作流” 轻松定义与用户交互,角色行为等,轻松引导用户使用
    5. 充分利用大模型能力: ( 1 )模块化配置 ( 2 )分点条理性叙述 ( 3 ) Reminder 缓解长期记忆缺失问题

    LangGPT 的两个关键语法

    1. LangGPT 变量:

    我们发现 ChatGPT 可以识别各种良好标记的层级结构内容。大模型可以识别文章的标题,段落名,段落正文等层级结构,如果我们告诉他标题,模型知道我们指的是标题以及标题下的正文内容。

    这意味着我们将 prompt 的内容用结构化方式呈现,并设置标题即可方便的引用,修改,设置 prompt 内容。可以直接使用段落标题来指代大段内容,也可以告诉 ChatGPT 修改调整指定内容。这类似于编程中的变量,因此我们可以将这种标题当做变量使用。

    Markdown 的语法层级结构很好,适合编写 prompt ,因此 LangGPT 的变量基于 markdown 语法。实际上除 markdown 外各种能实现标记作用,如 json,yaml, 甚至好好排版好格式 都可以。

    变量为 Prompt 的编写带来了很大的灵活性。使用变量可以方便的引用角色内容,设置和更改角色属性。这是一般的 prompt 方法实现起来不方便的。

    1. LangGPT 模板:

    ChatGPT 十分擅长角色扮演,大部分优质 prompt 开头往往就是 “我希望你作为 xxx”,“我希望你扮演 xxx” 的句式定义一个角色,只要提供角色说明,角色行为,技能等描述,就能做出很符合角色的行为。

    如果你熟悉编程语言里的 “对象”,就知道其实 prompt 的“角色声明”和类声明很像。因此 可以将 prompt 抽象为一个角色 ( Role ),包含名字,描述,技能,工作方法等描述,然后就得到了 LangGPT 的 Role 模板。

    使用 Role 模板,只需要按照模板填写相应内容即可。

    除了变量和模板外,LangGPT 还提供了命令,记忆器,条件句等语法设置方法。

    1. LangGPT 咒语生成器

    值得一提的是,我们基于 LangGPT 设计了 LangGPT 助手来帮助大家使用 LangGPT, 它会帮助你设计很好的咒语

    LangGPT 还在探索开发阶段,有问题欢迎反馈,更欢迎更多的人参与进来! 欢迎关注+star ,欢迎共同参与!

    Github 项目地址: https://github.com/yzfly/LangGPT

    5 条回复    2023-05-14 10:40:58 +08:00
    prenwang
        1
    prenwang  
       2023-05-13 13:04:35 +08:00   2
    现在都是基于向量数据库了, 以及加入 agent 来调度的思路,只做 prompt 提升程度有限。
    Bao3C
        2
    Bao3C  
       2023-05-13 14:48:55 +08:00 via iPhone
    @prenwang 有更详细的介绍么
    etherealai
        3
    etherealai  
    OP
       2023-05-13 14:57:19 +08:00
    @prenwang 所谓 Agent 本质也是用 prompt 调用大模型能力。这个项目是针对 prompt 的优化,与调度 agent 的思路并不冲突。
    prenwang
        4
    prenwang  
       2023-05-14 01:30:16 +08:00
    @Bao3C
    @etherealai

    说的没错, 用在 agent 机制里, 就起到非常关键的作用了,agent 的调度环境会涉及到很多次自主 LLM 的调用, 而这些调用通常需要设计精致的 prompt , 来起到承上启下的作用,prompt 就是 AI 世界的 python , 通过粘合发挥最大价值


    比如, 阅读 langchain 的源码, 可以发现其设计的 prompt 的思路的妙处
    etherealai
        5
    etherealai  
    OP
       2023-05-14 10:40:58 +08:00
    @prenwang 是的,所以 prompt 设计比较重要。还有就是随着模型可接受的输入长度越来越长,模型能力越来越强,相信 prompt 的重要性也会越来越凸显
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     953 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:38 PVG 06:38 LAX 14:38 JFK 17:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86