架构设计
架构设计
LocalAI 是一个用 Go 语言编写的 API,作为 OpenAI 的适配器,使得已经使用 OpenAI SDK 开发的软件能够无缝地与 LocalAI 集成。它甚至可以在消费级硬件上轻松地作为替代品实施。这种能力是通过使用各种 C++ 后端,包括 ggml,来在 LLMs 上使用 CPU 和(如果需要)GPU 进行推理来实现的。LocalAI 的内部后端仅仅是 gRPC 服务器,实际上你可以指定并构建你自己的 gRPC 服务器,并在运行时扩展 LocalAI。也可以指定外部 gRPC 服务器和/或 LocalAI 将内部管理的二进制文件。
LocalAI 使用了各种语言(C++、Golang、Python 等)编写的后端混合。你可以查看 模型兼容性表格 了解 LocalAI 的所有组件。
Backstory
就像许多典型的开源项目一样,我,mudler,在漫长的夜晚摆弄 llama.cpp,并想找到一个从 go
调用它方法,因为我是一个 Golang 开发者,并且广泛使用它。所以我创建了 LocalAI
(最初被称为 llama-cli
)并给它添加了 API。
但猜猜看怎么样?我越深入这个兔子洞,就越意识到我偶然发现了一些重大的东西。随着社区中所有出色的 C++ 项目的涌现,我意识到我可以将它们组合在一起,创建一个完整的 OpenAI 替代品。所以,哒哒!LocalAI 诞生了,并且迅速超越了它谦卑的起源。
现在,你可能会问,为什么我选择使用 C++ 绑定?好吧,我想要保持 LocalAI 的快速和轻量,让它能够在任何系统上像冠军一样运行,避免任何 Golang 的 GC 罚款,并且最重要的是建立在像 llama.cpp
这样的巨人肩膀上。Go 在后端和 API 方面很擅长,并且易于维护。嘿,别忘了,我可是关于分享爱的。这就是为什么我让 LocalAI 使用 MIT 许可,这样每个人都可以加入并从中受益。
似乎这还不够令人兴奋,随着项目获得关注,mkellerman 和 Aisuko 加入进来帮忙。mkellerman 帮助设置了一些杀手级示例,而 Aisuko 正在成为我们的社区指挥家。社区现在随着新的贡献者和用户的加入而不断成长,我为此感到非常高兴!
哦,我们别忘了真正的 MVP —— llama.cpp。如果没有这个非凡的软件,LocalAI 根本不存在。所以,非常感谢社区让这个魔法发生!