2024 年 LLM 生产应用的技术堆栈

从事 ML 工作 6 年多之后,我创办了 3 家 AI/LLM 初创公司,构建了数十个项目和流程,尝试了许多 LLM 工具 - 从 RAG 和 Agent 框架到经过适当测试、CI/CD 和可观察性的基于 LLM 的服务。

本文列出了我最喜欢的工具,原因多种多样。我们将经历完整的 LLM 应用程序开发生命周期 — 从 RAG 数据库和代理,到具有 HTTPS 的 API 端点和具有适当可观察性的自动部署管道,同时检查每个步骤的框架和工具。

还有一件事——你可能不同意我选择的技术栈;但是,我选择工具主要是基于易用性。例如,你可以使用像 Azure 这样的大型云提供商,而不是在 VPS 上部署东西——这样你将获得更好的可扩展性、更多的开箱即用服务等等。但掌握一切需要更多的时间,而且你更容易受到供应商锁定。当使用带有 Coolify(我们稍后会讨论)的 VPS 时,大约需要 10 分钟即可开始使用,并且你将获得所需的一切——数据库、前端/后端部署、自动化 CI/CD 和备份——具有直观且易于使用的 UI。

LLM API 和自托管选项

大型语言模型 API 主要有两种选择:

  1. 如果您要使用自托管版本,Ollama是最佳选择。您可能会问:“为什么需要自托管的 LLM?它更昂贵、更难设置且响应质量更低”。答案很简单 — 隐私。
  2. 如果项目不需要很高的隐私和安全性,我总是使用Openrouter。它比任何其他 LLM 提供商都好,因为它建立在多个提供商之上,为您提供了一个简单的界面来与其中任何一个进行交互。如果您为一个 LLM 编写了管道,则只需更改请求中的几个字符串即可更改 LLM。无需额外的库,无需切换提供商,就是这么简单。

还有许多其他 LLM 提供商,如 together.ai、Mistral 等;不过,我更喜欢 Openrouter,因为它的界面简单,并提供其他有用的功能(自动记录、模型比较、自动模型选择、免费试用等)。

Ollama 和 OpenRouter

RAG 数据库

大多数 LLM 都存在如下问题:

  • 信息不是最新的;
  • 无需领域知识;
  • 幻觉;
  • 没有引用来源;
  • 有偏见的回应。

所有这些问题都可以使用适当的 RAG(检索增强生成)来解决。所有 RAG 算法都需要某种形式的矢量数据库。以下是我最喜欢的选择:

  1. ChromaDB — 它非常适合原型设计和 PoC(概念验证)创作。它的设置非常简单(因为它建立在 SQLite 之上,所以您的数据库只是您 PC 上的一个文件),而且使用非常直观且有据可查。
  2. 对于更严肃的项目,我会使用Supabase(基于PostgreSQL构建)和PGVector插件。Supabase 的一些优点包括直观且易于使用的 UI、许多功能(如备份、角色管理、API 和 Python 包)。还有许多使用 Supabase 的指南,我个人喜欢它是开源的,您可以在自己的服务器上自行托管它。

通常我使用定制的解决方案,但有时 LangChain 可以在编写 RAG 管道方面提供很大帮助。

Supabase载体数据库

代理

如果您想要创建更复杂的 LLM 流程,或者想要使用 LLM 解决一些难题,则必须使用代理方法。LLM 代理是一种使用顺序(逐步)推理的 AI 系统。基本上,您无需为您的 LLM 定义一组指令,而是赋予它完全的自由和一组工具来解决问题。

以下是我用来创建代理的 Python 库:

  1. LangChain — 目前最流行的代理框架,它拥有出色的文档、庞大的社区和许多带有指南的教程。我的一个建议是使用initialize_agent方法,而不是像create_react_agent或create_json_agent这样的新方法。主要原因是新方法还没有那么多指南和说明,对我个人而言,它们有点令人困惑。该initialize_agent方法更易于使用,并且有数十种采用不同方法的指南。
  2. LlamaIndex — LangChain 的主要竞争对手,以索引和数据检索方面的出色优化而闻名。简而言之,如果您正在构建 RAG 管道,llamaindex 可能是更快、更好的选择;但是,对于更复杂的项目和管道,最好使用 LangChain。

一般来说,最好使用 LangChain 开始学习 LLM,因为它的功能更丰富且更易于使用。

可观察性

现在,当您部署了 LLM 应用程序后,您需要测量答案的质量、准确性和速度。但是如何使用 LLM 做到这一点?我使用两种解决方案,它们都是提供跟踪、评估、可视化和监控的开源 LLM 可观察性平台:

  1. 阿里泽凤凰
  2. 朗史密斯

我发现 LangSmith 更容易使用;他们有一种非常好的方式来跟踪输入输出,并且评估开发速度非常快。然而,Phoenix 有更好的免费套餐,因为它们允许跟踪更多数据。如果你想开始使用 LLM 可观察性,我肯定会推荐 LangSmith——它非常适合 PoC 和原型设计。

阿里泽 vs 菲尼克斯

后端

对于后端,我总是使用 Python、FastAPI 和 Pydantic。以下是一些原因:

  1. FastAPI 非常快,具有非常好的文档,并且包含 LLM 应用程序开发可能需要的所有功能,如数据库 ORM、身份验证、CORS 和多线程部署。
  2. Pydantic 可帮助您为函数和端点添加一些严格的类型,因此您始终可以确保所有变量都具有所需的类型;它有助于使您的应用程序防错。

通常我将它们与 Gunicorn + Uvicorn 工作者结合起来,这样我就可以同时处理多个请求。

不过,您可以使用任何后端框架(Flask,Django),因为它们都具有常见的功能,并且都已准备好投入生产。

部署

对于部署,我总是使用 Docker 来容器化我的应用程序。主要原因是

  1. 可重复性——如果您使用应用程序构建 Docker 映像,则可以在任何系统和任何 CPU 架构上运行它;
  2. 可扩展性——如果您的应用程序是docker化的,那么很容易启动多个实例,或将它们部署在集群上;
  3. 部署 — 部署 Docker 镜像非常容易,尤其是使用 Docker Compose。您可以将数据库、反向代理和后端添加到文件docker-compose.yml,并轻松一次性部署所有内容,而无需单独担心所有内容。

为了部署我的 Docker 镜像,我使用 Coolify - 它是一个开源、自托管的平台,大大简化了部署过程,提供:

  1. 自动化 SSL 证书管理——您无需担心让您的后端兼容 https;
  2. 不受供应商锁定 - 您可以在任何 VPS 或云提供商上部署 Coolify,添加一个抽象层,帮助您摆脱所有提供商的束缚;
  3. 简单的反向代理——您现在不需要关心安全性和域,因为您在 Coolify 中唯一需要做的就是写入您想要的域;
  4. 自动数据库备份——如果您使用常见的映像(如 PostgreSQL、MySQL、Redis 等),则只需单击几个按钮即可设置备份,而无需编写自定义解决方案或付费。
  5. CI/CD 管道 — 通过连接你的 github,你会自动获得免费的自动部署管道。因此,每当你更新你的应用程序时,它都会自动部署;
  6. 协作功能 — 您可以与团队共享 Coolify,并可以共同处理应用程序的不同方面,而不会互相干扰。您还可以控制每个用户的权限。
  7. 监控和通知——您可以使用 Telegram/Discord 等众多应用程序之一,并在部署发生任何问题时收到通知。

Coolify — 简单、功能丰富、美观

概括

在本文中,我们介绍了编写自己的 LLM 应用程序的一套不错的技术堆栈。通过使用这些工具,您可以获得:

  • 可靠、易于使用的向量数据库;
  • 法学硕士 (LLM) 适用于各种大小的问题,并具有适当的隐私;
  • 不受供应商锁定;
  • 对您的管道进行适当的记录和监控;
  • 可扩展且可维护的方式轻松部署您的应用程序。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LLM是一家知名企业,为各行各业提供全方位的企业应用解决方案。下面将通过一个实际案例来说明LLM在企业应用方面的成功经验。 某电子制造企业合作了LLM,希望提高生产效率和产品质量。LLM的团队首先进行了全面的企业调研,了解其业务流程和存在的问题。随后,他们根据调研结果设计了一套定制化的企业应用系统。 该企业应用系统包含了以下几个核心模块:生产计划管理、设备维护管理、原材料采购与库存管理、质量检测与追溯、销售订单管理以及绩效评估。每个模块都有相应的功能和流程,能够满足企业的具体需求。 通过该企业应用系统,该电子制造企业实现了很多突破。首先,生产计划管理模块能够根据订单情况自动生成生产计划,有效降低了生产周期和提高了生产效率。设备维护管理模块则帮助企业实现了设备的智能化管理,及时进行维护和保养,减少了停机时间和维修成本。 原材料采购与库存管理模块通过与供应商进行信息对接,实现了快速采购和准确控制库存,避免了原材料不足和过多的情况。质量检测与追溯模块在生产过程中进行多次质量检测,确保产品质量达标,并实现了产品追溯,便于问题溯源和召回。销售订单管理模块则提供了一个便捷的订单管理系统,实现了订单的及时处理和跟踪。绩效评估模块通过对各个部门和员工的工作数据进行分析,帮助企业进行绩效评估和个人提升。 通过LLM的企业应用系统,该电子制造企业的生产效率得到了大幅提升,产品质量得到了有效控制。同时,该系统增加了企业的信息化管理,提高了企业的竞争力和市场份额。 这个案例充分展示了LLM在企业应用方面的成功经验,通过对企业的深入了解和全面的系统设计,能够为企业提供量身定制的解决方案,帮助其实现高效运营和持续发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉达曼迪斯II

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值