RubyLLM은 Ruby 애플리케이션에서 여러 AI 제공자를 같은 인터페이스로 쓰게 해주는 프레임워크다. OpenAI, Anthropic, Gemini, Vertex AI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack, OpenAI 호환 API를 지원하며, 챗봇·에이전트·RAG·멀티모달 워크플로를 Ruby 코드로 구성할 수 있다.
GitHub 저장소는 2026년 6월 기준 약 4.1k 스타를 보유하고 MIT 라이선스로 공개되어 있다.
왜 Ruby 개발자에게 유용한가
AI 제공자마다 메시지 형식, 파일 입력, 스트리밍, tool calling, structured output 방식이 다르다. RubyLLM은 이를 Ruby 객체와 블록 중심 API로 감싼다. Rails 앱에 AI 기능을 넣을 때 공급자별 SDK를 직접 다루는 부담을 줄이는 것이 목적이다.
주요 기능
| 기능 | 설명 |
|---|---|
| Chat | RubyLLM.chat로 대화형 AI 호출 |
| Vision·Audio·Documents | 이미지, 영상, 음성, PDF, CSV, JSON 등 파일 입력 |
| Tools | Ruby 메서드를 AI가 호출할 수 있는 도구로 노출 |
| Agents | 지시문과 도구를 묶은 재사용 가능한 assistant 정의 |
| Structured output | Ruby schema로 JSON 응답 구조 지정 |
| Embeddings | 텍스트 임베딩 생성 |
| Rails integration | ActiveRecord 기반 채팅 저장과 UI generator |
| Model registry | 800개 이상 모델의 capability와 가격 정보 관리 |
코드 감각
기본 호출은 Ruby답게 짧다.
chat = RubyLLM.chat
chat.ask "What's the best way to learn Ruby?"도구도 클래스로 정의한다.
class Weather < RubyLLM::Tool
desc "Get current weather"
def execute(latitude:, longitude:)
JSON.parse(Faraday.get("https://api.open-meteo.com/v1/forecast?latitude=#{latitude}&longitude=#{longitude}¤t=temperature_2m").body)
end
end
chat.with_tool(Weather).ask "What's the weather in Berlin?"적합한 사용 사례
- Rails SaaS에 고객지원 챗봇이나 문서 요약 기능 추가
- Ruby 백엔드에서 provider-agnostic AI 호출 계층 구성
- 파일 업로드 기반 멀티모달 분석 기능 구현
- 내부 도구를 tool calling으로 노출하는 업무 에이전트
- ActiveRecord에 대화 기록을 남기는 AI 워크플로
관련 문서
- pydantic-ai — 타입 안전한 Python 에이전트 프레임워크
- haystack — 프로덕션 RAG와 에이전트 파이프라인
- llamaindex — 데이터를 LLM 앱과 연결하는 RAG 프레임워크
- agent-skills — AI 에이전트의 능력을 확장하는 스킬 시스템
참고 자료
- RubyLLM — 공식 문서
- crmne/ruby_llm — GitHub 공식 저장소