agentjido/req_llm

Composable Elixir library for LLM interactions built on Req and Finch

What it solves

ReqLLM は、膨大な数の LLM プロバイダーとやり取りするための統一された Elixir インターフェースです。異なる AI プロバイダー間で API 設計が統一されていない問題を解決し、開発者はテキスト、画像、音声モデルを呼び出す際に、プロバイダー固有のボイラープレートコードを書かずに、Elixir らしい単一の API を使用できます。

How it works

このライブラリは、Vercel AI SDK に触発されたハイレベル API を使用してリクエストとレスポンスを正規化します。Req を利用して標準的なリクエスト/レスポンス呼び出しを行い、Finch を使用して本番環境向けのストリーミングを実現します。プロバイダー固有のコールバックは、標準データモデル(ContextMessageTool など)を各プロバイダー API が要求する形式に変換します。

Who it’s for

OpenAI、Anthropic、Google Gemini など、複数の LLM プロバイダーを切り替えたり統合したりする必要がある、AI 搭載アプリケーションを構築する Elixir 開発者向けに設計されています。コードベースはクリーンでプロバイダー非依存です。

Highlights

  • Massive Model Support:LLMDB との統合により、21 社以上のプロバイダーから 1,200 以上のモデルにアクセス可能。
  • Structured Outputs:JSON オブジェクトや配列の生成を組み込みでサポートし、厳格なバリデーションとプロバイダーのスキーマへのゼロコピーマッピングを提供。
  • Production Streaming:Finch を使用した高性能ストリーミングで、自動コネクションプーリングと OpenAI 用 WebSocket モードをサポート。
  • Unified Tooling:ツール呼び出し、埋め込み生成、テキスト・画像・バイナリのマルチモーダルコンテンツを標準化。
  • Cost Tracking:使用量を正規化し、各リクエストの USD コストをベストエフォートで推定。
  • Flexible Key Management:環境変数、.env ファイル、またはリクエスト単位でのオーバーライドによる階層的な API キー管理を提供。