AI 开发工具生态系统广阔且变化迅速,因此将其划分为不同层次会有所帮助。最底层是推理引擎——实际运行模型的软件。vLLM、llama.cpp、TensorRT-LLM 和 Ollama 负责将模型权重加载到 GPU(或 CPU)上,管理内存、批处理请求并返回输出。如果你自行托管模型,选择适合你硬件的推理引擎是你做出的最具杠杆效应的决定之一。vLLM 在多 GPU 服务器部署中凭借其 PagedAttention 内存管理占据主导地位。llama.cpp 是在消费级硬件(包括笔记本电脑甚至手机)上运行量化模型的首选方案。选择取决于你的规模、硬件以及是否需要诸如推测解码或连续批处理等功能。
上一层是编排框架——LangChain、LlamaIndex、Haystack 和 Vercel AI SDK。这些框架负责你应用程序与模型之间的连接:提示模板、工具调用、检索增强生成、对话记忆和输出解析。关于这些框架的诚实说法是,当你的使用场景与它们内置的模式匹配时,它们最有用;而当不匹配时,它们最令人沮丧。例如,LangChain 极大地简化了构建 RAG 聊天机器人的过程,但如果你需要非标准的控制流,可能会感觉像是在与框架对抗。许多经验丰富的开发人员最终会使用这些框架进行原型设计,一旦完全了解自己的需求,就会将关键路径重写为纯代码。这并不是工具的失败——这是一种合理的流程。原型设计速度和生产控制服务于不同的目标。
微调工具形成了自己的生态系统。Axolotl 和 Unsloth 通过使用 LoRA 和 QLoRA 等技术,使得在单个消费级 GPU 上微调开放权重模型成为可能,这些技术只需训练少量适配器参数,而不是整个模型。Hugging Face 的 transformers 库及其 Trainer API 仍然是大多数微调工具构建的基础。在托管服务方面,OpenAI、Google 和 Together 等提供商提供微调 API,你只需上传数据即可获得自定义模型,无需管理任何基础设施。自托管微调与托管微调之间的选择通常取决于数据敏感性和迭代速度。如果你的训练数据不能离开你的网络,就选择自托管。如果你希望快速实验且数据不敏感,托管 API 的运营开销要小得多。
AI 开发工具最大的风险是采用过多的工具。每个框架、库和平台都会增加一个依赖项、一个抽象层和一个故障点。尝试使用 LangChain 进行编排、Pinecone 进行向量存储、Weights & Biases 进行实验跟踪、Braintrust 进行评估、Vercel 进行部署的团队,最终会花费更多时间在工具集成上,而不是构建产品。务实的方法是从最小可行堆栈开始:一个模型 API(或本地推理引擎)、一个简单的提示和你现有的应用程序框架。只有在遇到具体痛点时才添加工具——检索质量差,所以添加向量数据库;评估是临时的,所以添加框架;延迟过高,所以添加缓存。每个工具都应解决你已经感受到的问题,而不是你可能有一天会遇到的问题。