agentjido/req_llm

Composable Elixir library for LLM interactions built on Req and Finch

What it solves

ReqLLM 是一个统一的 Elixir 接口,用于与大量 LLM 供应商交互。它解决了不同 AI 供应商之间 API 设计不一致的问题,使开发者能够使用单一、符合 Elixir 习惯的 API 调用文本、图像和音频模型,而无需编写供应商特定的样板代码。

How it works

该库使用高级 API(受 Vercel AI SDK 启发)来规范化请求和响应。它利用 Req 进行标准的请求/响应调用,并使用 Finch 提供生产级别的流式传输。供应商特定的回调将规范数据模型(如 ContextMessageTool)转换为各供应商 API 所需的具体格式。

Who it’s for

它面向构建 AI 驱动应用的 Elixir 开发者,这些开发者需要在多个 LLM 供应商(如 OpenAI、Anthropic、Google Gemini)之间切换或集成,同时保持代码库的清晰、供应商无关。

Highlights

  • Massive Model Support:通过与 LLMDB 的集成,支持 21+ 供应商的超过 1,200 个模型。
  • Structured Outputs:内置支持生成 JSON 对象和数组,具严格验证和零拷贝映射到供应商模式。
  • Production Streaming:使用 Finch 的高性能流式传输,具自动连接池并支持 OpenAI 的 WebSocket 模式。
  • Unified Tooling:标准化工具调用、嵌入生成,并支持多模态内容(文本、图像、二进制)。
  • Cost Tracking:规范化使用量并尽力估算每次请求的美元成本。
  • Flexible Key Management:提供从环境变量、.env 文件或每次请求覆盖的分层 API 密钥管理。