作者 | Adrien Treuille
译者 | 布加迪
自从OpenAI发布首个ChatGPT模型以来,人们对生成式AI的兴趣激增。基于大语言模型(LLM)的应用程序现处于企业思考生产力和效率的最前沿,用于构建生成式AI应用程序的工具和框架得到了极大的扩展。但人们仍然担心生成式AI输出的准确性,因此开发人员需要快速学会处理诸如此类的问题,以构建强大、可靠的应用程序。
以下是提高LLM应用程序准确性的一些建议和技术,以及选择正确LLM的注意事项。我们无法详尽地探讨这些问题,因为每个问题本身都很复杂,但我们可以提供一番建议,供诸位进一步探索。
本文中的Streamlit是一个免费开源框架,用于快速构建和共享机器学习和数据科学Web应用程序,最近它发布了一份报告,分析了Streamlit社区云上13000余名开发人员构建的21000多个LLM应用程序。它介绍了开发人员迄今为止一直在使用的一些工具和技术,并提供了以下一些建议。
比如说,矢量检索工具可以为基于LLM的应用程序有效地改善上下文推荐,但我们的调查发现,目前只有少数开发人员在使用矢量功能,这代表未来大有机会。
随着更多的开发人员利用生成式AI开发应用程序,我们将开始看到跨类别和垂直行业的应用程序逐渐内置基于AI的搜索以及对话和辅助体验。以下是我给开发人员的四条建议,帮助他们构建更好的基于LLM的应用程序,这样他们可以给所在组织带来真正的颠覆效应。
像LangChain和LlamaIndex这样的编排框架可以使用额外的工具或代理来帮助增强模型基于LLM的应用程序的功能。在这种情况下,可以将代理视为插件系统,允许您将额外功能做入到应用程序中,用自然语言来表达。
这些代理可以组合起来管理和优化LLM功能,比如改进AI推理、解决偏见和集成外部数据源。代理还可以为LLM提供一种方法来思考它是否犯了错误以及成功完成任务所必须采取的步骤。
打个比方,考虑一下开发人员如何编写提供特定函数的API和描述该函数的文档:API表示为代码,文档使用自然语言。代理以类似的方式工作,除了提供文档是为了方便LLM,而不是方便其他开发人员。因此,LLM关注手头的任务,查看代理的文档,并确定代理是否可以帮助它完成任务。
这些代理还为应用程序提供了一种反思自身错误并纠正它们的方法,从而为LLM应用程序增添了健壮性。比如说,假设一个LLM应用程序编写了一些SQL代码来执行任务,比如检查数据库中的库存数量,但它在代码中犯了错误。对于标准的“幼稚”的LLM应用程序而言,这个错误如同路之尽头。
然而,如果应用程序有一个执行SQL的代理,它可以查看错误,使用代理来确定应该采取什么不同的做法,然后纠正错误。这可能只是语法上的一个小变化,但是如果没有代理,LLM就无法通过推理解决错误。
有时,您在使用的LLM无法访问完成预期任务所需的所有信息。这可以在提示时注入额外的信息,但大多数LLM限制了这些提示的大小。为了克服这种限制,LLM可能需要使用矢量查询外部数据库,这种技术就叫检索增强生成(RAG)。
为了理解RAG可以为LLM应用程序做什么,不妨考虑三个不同级别的LLM应用程序。
•第1级:应用程序可以使用LLM中已有的知识生成结果。
•第2级:应用程序需要额外的信息,信息可以在提示时注入。只要您能保持遵守提示限制,这相当简单。
•第3级:LLM需要联系外部信息源(比如数据库)以完成任务。
RAG在第3级有了用武之地,外部数据库通常使用矢量进行语义索引,这就是为什么您最近可能频频听到矢量数据库和矢量搜索工具的新闻。
具有矢量数据库和矢量搜索的应用程序可以通过对庞大的非结构化数据集(包括文本、图像、视频或音频)进行分类,以实现快速的上下文搜索。这对于进行更快、更强大的上下文推荐非常有效。但矢量工具仍未得到广泛应用。Streamlit的调查发现,仅20%的基于生成式AI的应用程序使用了某种矢量技术。
聊天机器人将生成式AI带入了主流,但有人怀疑将来它们是否会成为一种有效的界面。有人认为,聊天机器人给了用户太多的自由,却没有足够的背景知识来说明如何使用LLM应用程序。有人被过去的失败所吓倒:Clippy是一场灾难,为什么聊天机器人今天会成功呢?
很显然,聊天机器人是否合适一方面取决于应用程序的预期用途。但聊天机器人至少有一个非常有用的优点不容忽视:它们为用户通过流畅的、仿人的界面添加上下文和完善答案提供了一种简单又直观的方式。
要理解为什么这很强大,不妨想想搜索引擎。用户通常无法改进搜索引擎查询;比如说,如果结果略有偏差,没有办法告诉搜索引擎“再试一次,但排除关于X的答案”,或者“给y更多的权重”。这将是一种方便而强大的功能,这也是聊天机器人为LLM应用程序提供的功能。
调查发现,用Streamlit构建的生成式AI应用程序中28%是聊天机器人,而72%的应用程序通常不允许会话改进。另一方面,调查显示,这些聊天机器人的每周使用率上升到近40%,而非聊天机器人应用程序的使用率有所下降。因此,聊天机器人可能是最终用户青睐的界面。
基本的GPT模型仍然是最知名的LLM,它们功能非常强大,但在过去的一年里出现了更多的选择,其中一些可能更适合您的应用程序。需要考虑的因素包括:LLM所需的知识广度、LLM的规模、您的训练要求和预算,以及LLM是开源还是专有对您来说是否重要。与科技界的许多方面一样,这里也存在取舍。
如果您在构建一个供内部使用的生成式AI应用程序,可能需要使用内部企业数据来训练该LLM。对于大多数企业来说,出于安全原因,与公共LLM共享敏感数据是不可能的,因此许多公司在现有的云安全边界内运行LLM,这常常导致它们选择比较小的LLM,比如AI21和Reka。
非常庞大的LLM还往往有更高的延迟,由于所需的计算资源,通常运行成本更高。如果应用程序执行比较简单的任务,比如翻译文本或总结文档,较小的LLM可能效果很好,使用和操作成本显著降低。
您也可能有理由偏爱开源LLM,比如Meta的LLaMA,而不是像OpenAI、Anthropic或Cohere这样的专有LLM:在专有LLM中,源代码、训练数据、权重或模型的其他细节通常不会公开披露。开源LLM需要自托管或通过托管提供商进行推理,但是源代码及模型的其他细节更容易获得。
生成式AI仍然是迅速崛起的领域,但所需的工具和技术在迅速发展,今天有很多选择可以开始入手。抓住这个机会的开发人员可以为所在组织提供巨大的价值,将AI应用程序作为日常业务运营和任务的一项常规功能。随着生成式AI继续重塑组织中的角色和责任,依赖并精通基于LLM的应用程序的开发人员将脱颖而出,上述建议将帮助您开始迈出正确的第一步。
原文链接:https://thenewstack.io/4-key-tips-for-building-better-llm-powered-apps/