📘 **TELUS Agriculture & Consumer Goods** 如何通过 **Haystack Agents** 转变促销交易

使用 PromptHub 分享和使用 Prompt

一个新工具,可将 Prompt 拉入您的 Haystack PromptNode,进行分享和协作

随着 Haystack 1.18 的发布,我们还正式推出了一个新的 Prompt 分享和协作服务:PromptHub。此新产品目前(发布日期:2023年6月29日)托管了我们 deepset 创建的一组 Prompt,并附有如何使用它们与 PromptTemplatePromptNode 的说明。

PromptHub 中提供的 Prompt 均保存在 GitHub 上的公共仓库 deepset-ai/prompthub 中。每个 Prompt 都附带一个 YAML 文件,其中包含 Prompt 本身,以及一个同名的“Prompt 卡片”,这是一个 Markdown 文件,解释了 Prompt 的预期用途以及如何将其与 Haystack PromptNode 一起使用。

在接下来的章节中,我们将介绍如何使用 PromptHub 上托管的 Prompt 以及您自己的本地 Prompt。

通过 API 在 PromptHub 上使用 Prompt

使用 PromptHub 中 Prompt 的最简单方法是直接复制它们的标识符,并将其添加到 PromptTemplateprompt 字段中。

Example from Prompthub

从 PromptHub 复制 Prompt 的标识符。例如,让我们尝试 deepset/summarization,并将其作为 PromptTemplate 中的 prompt 添加。

from haystack.nodes import PromptTemplate

my_summarizer_prompt = PromptTemplate(prompt="deepset/summarization")

PromptHub 上的每个 Prompt 都将提供有关其预期用途的说明,包括有关哪种 output_parser 最适合该 Prompt 的说明。

例如,deepset/question-answering Prompt 最适合使用 PromptHub 上所述的 output_parser


from haystack.nodes import PromptTemplate, AnswerParser

question_answering_template = PromptTemplate("deepset/question-answering", output_shapers=AnswerParser())

创建 PromptTemplate 后,可以通过将其设置为 default_prompt_template,或者在单个 prompt() 调用中将其设置为 prompt_template 来在 PromptNode 中使用它。

从 Hub 拉取 Prompt 后,该文件将缓存在您的机器上。因此,您不必担心每次都要进行 API 调用。

创建和使用本地 Prompt

您始终可以选择创建自己的 Prompt 并将其作为 prompt 提供给 PromptTemplate。例如

from haystack.nodes import PromptTemplate

my_prompt_template(prompt="Answer the following query: {query}")

但现在,您还可以利用和维护自己的本地 Prompt 集合,以 YAML 文件形式。

PromptHub 上的每个 Prompt 实际上是一个 YAML 文件,其中包含简短描述、作者姓名、描述其主要任务的标签以及 Prompt 文本本身。例如,以下是 deepset/question-answering Prompt 的内容。

description: A simple prompt to answer a question given a set of documents
meta:
  authors:
  - deepset
name: deepset/question-answering
tags:
- question-answering
text: "Given the context please answer the question. Context: {join(documents)};\n\nQuestion: {query}; \nAnswer:\n"
version: 0.1.1

同样,您可以创建自己的文件来存储 Prompt。例如,这是一个名为 my_yoda_prompt.yaml 的文件。

description: A simple prompt to answer any question in the style of Yoda
meta:
  authors:
  - deepset
name: tuana/yoda-qa
tags:
- question-answering
text: "Answer the following query in the style of Yoda. Query: {query} \n Answer:"
version: 0.1.1

可以使用以下代码在 PromptTemplate 中使用它。

from haystack.nodes import PromptTemplate

yoda_prompt = PromptTemplate(prompt="path/to/my_yoda_prompt.yaml")

如果您想知道:当使用此 Prompt 询问“生命的意义是什么”时,GPT-4 的结果是“42,生命的意义是。但真正而言,生命意义的探寻,须凭一己之理解与体验,嗯。”

为 PromptHub 贡献力量

如果您创建了一个希望与 Haystack 社区乃至全世界分享的 Prompt,您只需创建一个包含您的 Prompt 的 YAML 文件和带有 Prompt 卡片的 Markdown 文件(解释如何使用它)的拉取请求即可 🥳。完成此操作后,所有人都可以使用您为其命名的 Prompt。一个好主意是为它加上您的名字作为前缀,就像我们对 deepset/ Prompt 所做的那样。