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 を使用して本番環境向けのストリーミングを実現します。プロバイダー固有のコールバックは、標準データモデル(Context、Message、Tool など)を各プロバイダー 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 キー管理を提供。