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

此套件設計給需要在多個 LLM 供應商(如 OpenAI、Anthropic、Google Gemini)之間切換或整合的 Elixir 開發者,並希望維持乾淨、供應商無關的程式碼基礎。

Highlights

  • Massive Model Support:透過 LLMDB 整合,支援 21+ 供應商的超過 1,200 個模型。
  • Structured Outputs:內建支援產生 JSON 物件與陣列,具嚴格驗證與零拷貝映射至供應商 schema。
  • Production Streaming:使用 Finch 的高效能串流,具自動連線池與 OpenAI 的 WebSocket 模式支援。
  • Unified Tooling:標準化工具呼叫、嵌入生成,並支援多模態內容(文字、影像、二進位)。
  • Cost Tracking:正規化使用量並盡力估算每次請求的美元成本。
  • Flexible Key Management:提供從環境變數、.env 檔案或每次請求覆寫的分層 API 金鑰管理。