提示工程实战案例

如果你在 2023 年听说过生成式人工智能(Generative AI),你一定也听说过提示工程(Prompt Engineering)。

通过快速的互联网搜索或质疑 GenAI 本身,人们可以轻松找到相关的定义、提示技术,例如 零样本、少样本、思维链、后退等。最简单的提示工程也可以是对 GenAI 进行深思熟虑的相关语言输入,以获得更好的结果。 然而,当我们谈论为企业注入 GenAI 并考虑收入、效率、生产力和声誉因素的生产应用场景时,它很快就会变得复杂。

在这里,我将分享它在现实中的样子(在弄脏我的手之后)以及我们为什么这样做。让咱们进入正题吧。

1、单输入场景

我决定将提示工程应用于 Web 分类测试目的,其中流程使用大型语言模型 (LLM) 来总结 Web URL 的内容,并将 URL 分类为相关类别,例如应用程序、学术、游戏、无、频道。 请注意,所有这一切都发生在实际应用程序部署之前 - 这是该案例中提示工程的全部要点。

图1

图 1 显示了在给定上下文中实现预期结果所需的所有流程。 让我详细解释一下。

提供的输入字符串是一个网址。 我使用 IBM Consulting Public Web URL,如下所示:

Python 文件 Fetch_text_content_from_url.py 包含从给定 Web URL 获取内容的代码。

然后我在流程中选择了LLM(已知的模式之一)。 在这里, summary_text_content(通过其 jinja 文件)做了两件事。 它带来了与所选LLM的联系。 在这里,我还提供了系统提示 “summarize the following text in one paragraph. Within 100 words. Do not add any information that is not in the text”

它的输出如下所示:

Python 代码的进一步步骤 ( prepare_examples.py) 提供了一些 Web URL、内容、类别和证据的示例,用于建立 LLM 理解的关系。

然后,对于流程的下一步,我选择了相同的 LLM 进行分类步骤。  Classify_with_llm 步骤(通过其 jinja 文件)是生成 Web URL、持续时间和用于生成分类输出的标记的分类。 其输出如下所示:

此流程的最后一步是仅以文字形式生成分类输出。 这里的 Python 代码 ( convert_to_dict.py) 完成了所需的工作。 其输出如下所示:

结论:它准确地总结了 URL 内容,准确地提供了其分类为“无”(来自定义的类别)。 它提供的执行持续时间(性能)为 0.40682 秒,生成的令牌总数为 692。

2、多输入场景)

好的,如果手动执行,这就是事情变得复杂的地方。 如果我必须部署一个应用程序来汇总和分类(并预先测试)数百、数千或数万个 Web URL(甚至更多),该怎么办? 我们可能需要几个月的时间,对吗? 不对 !

这就是批量运行发挥作用的地方。

在此示例中,我构建了一个包含 84 个 Web URL 的数据集。 我配置了相同的提示流程,但使用“使用我的数据批量运行”。

好奇看看,流运转是什么样子的? 我知道那是什么感觉。 它看起来如下:

图2

很酷,耶!

好吧,但是我们为什么这么做呢? 还记得原理吗? 我们说过——准确性、性能(持续时间)和令牌数量。

这样,批量运行就成功完成了。 它生成了我需要的所有指标。 我可以在执行过程中实时监控它。 成功完成后,它创建了所需的输出、日志、指标、跟踪和代码快照(用于下载)。

输出:

它产生的输出如下所示。 它显示每个 URL 分析的状态(几页并且可以导出)。

日志:

它还生成如下所示的日志。 可以仔细检查上面输出中检测到的任何故障,以进行故障排除。 它可以很容易地下载。

痕迹:

它为每个被分析的 URL 生成每个步骤的跟踪(输出几个页面,可以轻松下载)。

评估指标:

它产生了我热切等待的指标,即准确性、性能(持续时间)和令牌计数,如下所示。

-> 准确度 = 0.58(越接近 1,越好)。

-> 性能(持续时间)= 12 分钟 6.39 秒(84 个网址)

-> 代币数量= 95010(与LLM平台成本有关)

作为下一步,我可以通过重新运行来优化数据集以实现更高的准确性(因为我分析了日志中的几个步骤失败),或者我可以尝试与选择的另一个 LLM 进行相同的操作,或者我可以克隆此提示,或者我可以 将此提示(或批处理作业)部署为端点,或者我可以通过重新运行相同的提示来进一步执行定制的评估。


原文链接:Prompt Engineering, a practical hands-on approach

BimAnt翻译整理,转载请标明出处