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 키 관리를 제공합니다.