RubyLLM: 주요 AI 제공자를 하나로 묶는 Ruby 프레임워크

1 hour ago 2
  • RubyLLM은 Ruby 앱에서 챗봇, AI 에이전트, RAG, 콘텐츠 생성 같은 AI 워크플로를 한 프레임워크로 만들게 해줌
  • GPT, Claude, 로컬 Ollama 등을 같은 인터페이스로 다루며, 의존성은 Faraday, Zeitwerk, Marcel 3개로 제한됨
  • 채팅뿐 아니라 이미지·비디오 분석, 오디오 전사, 문서 처리, 이미지 생성, 임베딩, 모더레이션, 도구 호출, 구조화 출력, 스트리밍까지 포괄함
  • Rails에서는 acts_as_chat, 모델 로딩, 선택적 채팅 UI 생성기를 제공하고 ` 바로 쓸 수 있는 채팅 인터페이스를 열 수 있음
  • OpenAI, xAI, Anthropic, Gemini, VertexAI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack, OpenAI 호환 API를 지원함

Ruby용 단일 AI 프레임워크

  • RubyLLM은 주요 AI 제공자를 하나의 Ruby 프레임워크로 다루기 위한 도구임
  • 챗봇, AI 에이전트, RAG 애플리케이션, 콘텐츠 생성기, 기타 AI 워크플로 구축을 대상으로 함
  • Chat with Work에서 실제 사용 중임

제공자별 API 차이를 감추는 인터페이스

  • AI 제공자마다 클라이언트, API, 응답 형식, 관례가 달라지는 문제를 줄이는 데 초점을 둠
  • 동일한 인터페이스로 GPT, Claude, 로컬 Ollama를 사용할 수 있음
  • 의존성은 Faraday, Zeitwerk, Marcel 3개만 사용함

기본 사용 방식

  • 간단한 질문은 RubyLLM.chat으로 채팅 객체를 만들고 chat.ask로 실행함
    • 예: chat.ask "What's the best way to learn Ruby?"
  • 파일 분석은 with: 옵션에 파일을 전달하는 방식임
    • 이미지: ruby_conf.jpg
    • 비디오: video.mp4
    • 오디오: meeting.wav
    • PDF: contract.pdf
    • 코드: app.rb
  • 여러 파일은 배열로 전달해 한 번에 분석할 수 있음
    • 예: with: ["diagram.png", "report.pdf", "notes.txt"]
  • 스트리밍 응답은 블록을 넘겨 chunk.content를 처리함

AI 기능 범위

  • RubyLLM.paint로 이미지 생성을 수행함
  • RubyLLM.embed로 텍스트 임베딩을 생성함
  • RubyLLM.transcribe로 오디오를 텍스트로 전사함
  • RubyLLM.moderate로 콘텐츠 안전성을 확인함
  • RubyLLM::Tool을 상속한 클래스로 AI가 Ruby 메서드를 호출하게 할 수 있음
    • 예시 Weather 도구는 위도와 경도를 받아 Open-Meteo API에서 현재 날씨 데이터를 가져옴
  • RubyLLM::Agent로 지시문과 도구를 포함한 재사용 가능한 에이전트를 정의할 수 있음
    • 예시 WeatherAssistant는 gpt-5-nano 모델, 간결한 응답 지시문, Weather 도구를 사용함
  • RubyLLM::Schema로 구조화 출력 스키마를 정의할 수 있음
    • 예시 ProductSchema는 name, price, features 필드를 정의함

기능 목록과 제공자 지원

  • 주요 기능은 다음과 같음
    • Chat: RubyLLM.chat 기반 대화형 AI
    • Vision: 이미지와 비디오 분석
    • Audio: RubyLLM.transcribe 기반 음성 전사와 이해
    • Documents: PDF, CSV, JSON 등 파일 타입에서 추출
    • Image generation: RubyLLM.paint 기반 이미지 생성
    • Embeddings: RubyLLM.embed 기반 임베딩 생성
    • Moderation: RubyLLM.moderate 기반 콘텐츠 안전성 확인
    • Tools: AI가 Ruby 메서드를 호출
    • Agents: RubyLLM::Agent 기반 재사용 가능한 어시스턴트
    • Structured output: JSON 스키마 기반 구조화 출력
    • Streaming: 블록 기반 실시간 응답
    • Rails: acts_as_chat 기반 ActiveRecord 통합
    • Async: Fiber 기반 동시성
    • Model registry: 기능 감지와 가격 정보를 포함한 800개 이상 모델
    • Extended thinking: 모델 사고 과정 제어, 보기, 저장
  • 지원 제공자는 OpenAI, xAI, Anthropic, Gemini, VertexAI, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack, OpenAI 호환 API임

설치와 Rails 통합

  • 설치는 Gemfile에 gem 'ruby_llm'을 추가한 뒤 bundle install을 실행함
  • API 키는 config/initializers/ruby_llm.rb에서 설정함
    • 예: config.openai_api_key = ENV['OPENAI_API_KEY']
  • Rails 통합은 다음 명령으로 설치함
    • bin/rails generate ruby_llm:install
    • bin/rails db:migrate
    • bin/rails ruby_llm:load_models # v1.13+
  • 선택적으로 채팅 UI를 추가할 수 있음
    • bin/rails generate ruby_llm:chat_ui
  • Rails 모델에서 acts_as_chat을 선언하면 ActiveRecord 기반 채팅을 사용할 수 있음
    • 예시 모델은 Chat < ApplicationRecord에 acts_as_chat을 선언함
    • Chat.create! model: "claude-sonnet-4"로 채팅을 만들고 파일을 전달해 질문할 수 있음
  • 준비된 채팅 인터페이스는 http://localhost:3000/chats에서 열 수 있음
Read Entire Article