跳转到主要内容

我们听到的一个常见抱怨是,默认的提示模板并不能同样适用于所有型号。上周OpenAI发布了ChatGPT API,这一点变得尤为明显。这个新的API有一个全新的界面(需要新的抽象),因此许多用户注意到旧提示的问题不再有效。尽管我们很快添加了对该模型的支持,但许多用户注意到,适用于GPT-3的提示模板在聊天设置中效果不佳。

所有链都公开了自定义这些提示模板的方法,因此总是可以选择让用户传递更有效的提示。但我们想做得更好。具有默认提示模板的链的一个目标是提供开箱即用的“Just Works”功能。如果不同的模型期望不同类型的提示,则会出现故障。

我们的解决方案是引入PromptSelector的概念。与其为每个链定义默认的PromptTemplate,不如为每个链创建PromptSelector。如果用户未指定提示,则PromptSelector将根据传入的模型选择要使用的PromptTemplate。

有关此操作的示例,请查看以下示例:

Python

代码段:

PROMPT_SELECTOR = ConditionalPromptSelector(
    default_prompt=PROMPT, conditionals=[(is_chat_model, CHAT_PROMPT)]
)

在JS/TS中:

代码段:

export const QA_PROMPT_SELECTOR = new ConditionalPromptSelector(
  DEFAULT_QA_PROMPT,
  [[isChatModel, CHAT_PROMPT]]
);

这两个例子显示了相同的东西。我们定义了一个默认提示,但如果满足条件(“isChatModel”),我们将切换到另一个提示。这也可以扩展到“条件”和相应提示的任意列表

这是一个非常简单的概念,但我们希望它能为我们(和其他开发人员)提供灵活性,为任何模型定义开箱即用的“Just Work”链。尽管即时用例是在ChatModels(如ChatGPT)和更传统的模型(如GPT-3)的提示之间切换,但我们也设想这允许在不同的模型提供商(如OpenAI与Cohere)之间切换,甚至在未来的模型版本(如GPT-1与GPT-4)之间切换。

过渡到这些选择器需要一些时间,但我们从一些更受欢迎的连锁店开始,并打算尽快过渡。一如既往,我们非常感谢社区的反馈和帮助!