用AI生成可靠的报告

APPLICATION Nov 24, 2024

在过去的一年里,我一直在经营自己的 AI 软件开发和咨询机构,与各种各样的客户合作—从初创公司创始人到学者。在此期间,我接手了各个领域的项目,包括数字营销、SaaS 和网络安全。虽然每个项目的目标和目的各不相同,但一个共同的要求是需要为使用 AI 的利益相关者或最终客户创建可靠的报告。几乎所有的客户在项目中都有一个制作报告的里程碑。

通过这些经历,我对 AI 软件开发中常见的挑战、错误和最佳实践有了宝贵的见解。在这篇文章中,我想分享我对 AI 生成的报告的了解,以及如何使这些报告更可靠、更实用。

1、基础知识

这些都是简单、快速的胜利,可以用最少的努力显著改善你的 AI 系统。它们是我遇到过的最有效的东西,在构建 AI 系统时,它们始终位于我的待办事项列表的首位。

1.1 小胜利

首先检查你是否正在做这些简单的事情:

  • 使用 Markdown:如果你的提示包含表格,请将其格式化为 markdown。LLM 接受过 markdown 文本的训练,因此他们能更好地理解它,并且通常也会以 markdown 进行响应。
  • 让你的提示清晰:就像人一样,LLM 也会因不明确的指示而感到困惑。你表达提示的方式会影响响应的质量。为了让事情更清楚,你甚至可以在与 LLM 聊天时要求他帮助你重写提示。

1.2 使用正确的 LLM/API 配置

依赖 GPT-4o 或 Claude 3.5 等顶级 LLM 很诱人。虽然它们非常适合一般任务,但根据具体任务,你可能会使用其他模型获得更好的结果。你可以查看在线 LLM 排行榜,看看哪些模型在不同任务中表现最佳。即使 GPT-4o 或 Claude 3.5 是正确的选择,调整最大令牌数或温度等设置或缓存提示也可以提高性能。

我经常遇到的 GPT-4o 和 Claude 3.5 的一个限制是它们缺少长上下文窗口。对于某些任务(例如生成详细报告),较长的上下文窗口更有用。在这种情况下,像 Gemini 1.5 这样的模型更适合,它支持多达 2M 个令牌。

1.3 使用常见的提示技术

难以让 LLM 正确响应?尝试添加一个短语,例如“逐步解释你的推理”。这种简单的调整通常会带来更好、更准确的响应。这种方法称为思维链提示。

还有许多其他提示技术,例如 ReAct,可帮助 LLM 更有效地选择工具或代理。你可以手动尝试这些技术,也可以使用 DSPy 等框架,它们具有内置方法,可以轻松添加和测试不同的提示策略。

另一个重要步骤是添加少样本示例,这时长上下文窗口就派上用场了。通过添加你期望的答案的变体,模型更有可能做出更好的响应。

1.4 使用正确的框架

选择正确的代理或 LLM 框架可能是一个热门话题。在我看来,最好直接使用 API 或使用轻量级框架,如 DSPy,它在设计时也考虑到了评估(我将在下一节中解释其重要性)。某些框架可能会不必要地使你的程序过于复杂。

例如,许多框架都带有内置的任务特定模板。虽然这可以使你轻松上手,但通常会使创建适合你需求的可靠 AI 系统变得更加困难。这些模板通常未经优化,会用不必要的标记浪费上下文空间,并限制灵活性。更不用说使用它们会产生许多错误,这会使编程变得更加困难。

另一方面,DSPy 不使用模板。相反,每个 LLM 程序都是使用签名构建的,签名只是提示、输入和输出的组合。

DSPy 签名的解释

如果你在 LLM 输出方面遇到困难,请确保你涵盖了这些基础知识。下一节将更多地关注你可以进行的高级优化以提高可靠性。

2、评估管道

改进 LLM 程序的一种方法是将其“推向”正确的输出。这与微调不同;它是关于找出表达提示、输入和输出的最佳方式,以使程序有效运行。

你可能想知道,如何知道哪种措辞最有效?答案是使用评估管道。在这篇文章中,我将概述评估是什么以及它们如何工作。

解释提示优化和评估

从高层次上讲,评估管道的工作方式如下,首先,你会得到一组查询、输入和“预期”输出。然后,你设计一个指标,该指标根据任务衡量输出的好坏。例如,对于文本到 SQL 程序,你可以创建一个指标,为可以成功运行、具有正确的列名并与用户查询相关的查询提供分数。

一旦有了指标,你就可以对 LLM 程序输出进行评分,并根据预期输出对其进行衡量。然后,你可以为你的程序生成新指令并对其进行测量。迭代此操作将为你提供更好或优化的指令。提示优化中有许多算法,你可以使用 DSPy 为你自动化这些管道。

3、简化 AI 系统

AI 系统的可靠性如何随着复杂性而降低

最后一点是关于 AI 系统的复杂性。在软件设计原则中,提倡简单性并不是什么新鲜事,但对于基于大型语言模型的软件来说,这一点更为重要。原因是 LLM 输出是概率性的,而不是确定性的。

即使 LLM 调用生成正确输出的概率为 95%,并且你的程序每次运行都依赖于 10 次 API 调用。系统可靠输出的概率为 (0.95)¹⁰ = 0.598 或 60%。你应该尝试用最少的 LLM 调用来完成你的任务。一个在 2 次调用中完成任务的系统比 3 次调用完成任务的系统要好得多。

没有算法可以为你减少 API 调用的数量,它需要优秀的工程师精心设计系统并不断重新思考组件。

提示:也许长上下文模型可以比顶级小上下文模型在 2 次 API 调用中更可靠地一次性完成任务。或者你的系统流程中有太多中间步骤。

在设计系统上投入精力可以大大节省以后的可靠性!

4、结束语

使用此清单确保你的可靠性最大化

快速修复:

  • 使用 Markdown:使用 Markdown 格式化表格以更好地理解 LLM。
  • 编写清晰的提示:使用清晰、简洁的说明避免混淆。

优化模型:

  • 为任务选择正确的模型;查看 LLM 排行榜。
  • 调整设置(例如,最大令牌、温度)以获得更好的性能。
  • 使用 Gemini 1.5 等长上下文模型来完成详细任务。

智能提示:

  • 添加“逐步解释”等短语以提高准确性(思维链)。
  • 包括一些示例来指导响应。

选择正确的框架:

  • 避免使用过于复杂的框架;使用 DSPy 等轻量级选项。

评估和迭代:

  • 使用评估管道来测试和优化提示、输入和输出。

简化你的系统:

  • 尽量减少 API 调用以提高可靠性。
  • 简化组件以实现更简单、更高效的工作流程。

此清单绝不是详尽无遗的,这些只是我们通过与客户合作学到的东西。


原文链接:How to make more reliable reports using AI — A Technical Guide

汇智网翻译整理,转载请标明出处

Tags