如何利用人工智能制作更可靠的报告--技术指南
技术指南,分享我与AI合作的经验
在过去的一年里,我一直在经营自己的AI软件开发和咨询公司,与各种客户合作——从创业公司创始人到学术界人士。在此期间,我承担了来自多个领域的项目,包括数字营销、SaaS和网络安全。尽管每个项目的目标和目的各不相同,但一个共同的请求是需要使用AI为利益相关者或最终客户创建可靠的报告。几乎所有客户在项目中都有一个里程碑是制作报告。
通过这些经验,我获得了关于AI软件开发中常见挑战、错误和最佳实践的宝贵见解。在这篇文章中,我想分享我对AI生成报告的理解,以及如何使这些报告更加可靠和实用。
这不是一份详尽的指南——它是基于我的个人观点和经验。我很想听听你的想法、反馈和改进建议,特别是来自其他AI工程师和咨询师的意见!
基础知识
这些是简单、快速的胜利,可以在最小的努力下显著改善您的AI系统。它们是我遇到的一些最有效的事情,并且在构建AI系统时总是位于我的待办事项列表的顶部。
小胜利
首先检查您是否在做这些简单的事情:
- 使用Markdown:如果您的提示中包含表格,请使用markdown格式。LLMs是基于markdown文本进行训练的,因此它们理解得更好,通常也会以markdown格式回应。
- 使您的提示清晰:就像人类一样,LLMs也会对不清晰的指令感到困惑。您措辞的方式会影响响应的质量。为了使事情更清晰,您甚至可以在与LLM聊天时请它帮助您重写提示。
使用合适的 LLM/API 配置:
依赖顶级 LLM,如 GPT-4o 或 Claude 3.5,确实很诱人。虽然它们在一般任务中表现出色,但根据具体任务,您可能会在其他模型中获得更好的结果。您可以查看在线 LLM 排行榜,以了解哪些模型在不同任务中表现最佳。即使 GPT-4o 或 Claude 3.5 是正确的选择,调整设置,如最大令牌数或温度,或缓存您的提示,也可以提高性能。
我经常遇到的一个限制是 GPT-4o 和 Claude 3.5 缺乏长上下文窗口。对于某些任务,如生成详细报告,较长的上下文窗口更为有用。在这种情况下,支持最多 2M 令牌的模型,如 Gemini 1.5,更加适合。
使用常见的提示技术
在让 LLM 正确响应时遇到困难?尝试添加短语 “逐步解释你的推理。” 这个简单的调整通常会导致更好、更准确的响应。这种方法被称为 Chain-of-Thought prompting。
还有许多其他的提示技术,比如 ReAct,可以帮助 LLM 更有效地选择工具或代理。您可以手动尝试这些技术,或者使用像 DSPy 这样的框架,它们内置了轻松添加和测试不同提示策略的方法。
另一个重要步骤是添加少量示例,这时长上下文窗口会非常有用。通过添加您期望的答案的变体,模型更有可能做出更好的响应。
仍然在努力从 AI 获得可靠的输出吗?请通过这个链接寻求帮助:https://eu.jotform.com/agent/01936317e669754bbebb321da59458adfd49
使用合适的框架
选择合适的代理或LLM框架可能是一个热门话题。在我看来,最好直接使用API,或者选择像DSPy这样的轻量级框架,它在设计时也考虑了评估(我将在下一节中解释其重要性)。某些框架可能会不必要地使你的程序变得复杂。
例如,许多框架都带有内置的任务特定模板。虽然这可以使入门变得简单,但通常会使创建可靠的、针对特定需求的AI系统变得更加困难。这些模板往往没有经过优化,浪费了上下文空间,使用了不必要的标记,并限制了灵活性。更不用说,使用它们会产生许多错误,使编程变得更加困难。
另一方面,DSPy不使用模板。相反,每个LLM程序都是使用signatures构建的,这仅仅是提示、输入和输出的组合。
如果你在处理LLM输出时遇到困难,请确保你涵盖这些基础知识。下一节将更专注于可以做的高级优化,以提高可靠性。
评估
改善您的 LLM 程序的一种方法是通过“引导”它朝着正确的输出方向。这与微调不同;它是关于找出最佳的提示、输入和输出的措辞,以便程序有效工作。
您可能会想,如何知道哪种措辞效果最好?答案是通过使用评估管道。在这篇文章中,我将对评估的定义及其工作原理进行高层次的概述。如果您在寻找详细指南,我在这里分享了一个逐步的示例:
从高层次来看,评估管道的工作方式是,首先获取一组查询、输入和“预期”输出。然后,您设计一个度量标准,该标准根据任务衡量输出的好坏。例如,对于一个文本到 SQL 的程序,您可以创建一个度量标准,为能够成功运行、具有正确列名并与用户查询相关的查询打分。
一旦您有了度量标准,就可以为您的 LLM 程序输出打分,并与您的预期输出进行比较。然后,您可以为您的程序生成新的指令并进行测量。反复迭代将为您提供更好或优化的指令。在提示优化中有许多算法,您可以使用 DSPy 为您自动化这些管道。
简化AI系统
最后一点是关于AI系统的复杂性。提倡简化在软件设计原则中并不新鲜,但对于基于大型语言模型(LLM)的软件来说,这一点更为重要。原因在于LLM的输出是概率性的,而非确定性的。
即使一个LLM调用生成正确输出的概率为95%,而你的程序每次运行依赖于10个API调用。从系统中获得可靠输出的概率为(0.95)¹⁰ = 0.598或60%。你应该尽量以最少的LLM调用来完成任务。一个只需2次调用就能完成工作的系统相比于需要3次调用的系统,其效率是指数级提高的。
没有任何算法可以为你减少API调用的次数,这需要优秀的工程师来设计系统,并不断重新思考各个组件。
提示:也许一个长上下文模型可以比顶级的小上下文模型在2次API调用中更可靠地一次性完成任务。或者你在系统流程中可能有太多中间步骤。
在设计系统上投入精力,后期在可靠性方面会有巨大的节省!
想要专家来简化你的AI管道吗?请通过以下链接寻求帮助:https://eu.jotform.com/agent/01936317e669754bbebb321da59458adfd49
结论
使用此清单以确保您最大限度地提高可靠性
1. 快速修复
- 使用Markdown: 使用Markdown格式化表格以便更好地理解LLM。
- 编写清晰的提示: 避免混淆,提供清晰、简洁的指示。
2. 优化模型
- 选择适合任务的模型;查看 LLM 排行榜。
- 调整设置(例如,最大令牌数、温度)以获得更好的性能。
- 对于详细任务,使用长上下文模型,如 Gemini 1.5。
3. 智能提示
- 添加诸如 “逐步解释” 的短语以提高准确性 (Chain-of-Thought)。
- 包含少量示例以引导响应。
4. 选择合适的框架
- 避免过于复杂的框架;使用轻量级选项,如 DSPy。
5. 评估和迭代
- 使用评估管道来测试和优化提示、输入和输出。
6. 简化您的系统
- 最小化 API 调用以提高可靠性。
- 精简组件以实现更简单、更高效的工作流程。
此清单绝非详尽无遗,这些只是我们 FireBird Technologies 在与客户合作中学到的经验。请务必关注、分享并评论。
感谢您的阅读!