openai/openai-ruby

Official Ruby SDK for the OpenAI API

openai/openai‑ruby – OpenAI API 공식 Ruby 클라이언트

개요

  • OpenAI REST API를 래핑하는 Ruby gem으로, Ruby 3.3 이상 애플리케이션에서 GPT‑4, Whisper, DALL‑E, 최신 Realtime 및 Agents 엔드포인트와 같은 모델을 호출할 수 있습니다.
  • 타입이 지정된 요청/응답 객체, Yard 문서, Sorbet용 RBS/RBI 파일, 내장된 페이지네이션, 스트리밍, 파일 업로드 헬퍼를 제공합니다.

주요 기능

  • Chat & completion – 간단한 client.chat.completions.create 호출.
  • 스트리밍 – 점진적인 토큰 출력을 위한 Server‑Sent Events (SSE).
  • Agents(베타) – 장기 실행 에이전트 세션 생성, 최종 구조화 결과 검색, 생성된 아티팩트 다운로드.
  • Realtime WebSockets – 블록 범위 텍스트, 전사, 음성, WebRTC 호출 제어.
  • Responses WebSocket – 지속적인 다중화 응답 생성.
  • 파일 처리 – 업로드, 처리 폴링, 호스팅 환경용 파일 스테이징, 아티팩트 다운로드.
  • 사용자 정의 HTTP 전송 – 사용자 정의 클라이언트를 플러그인할 수 있습니다 (예: 연결 풀링, mTLS, 특수 프록시 로직).
  • 프로바이더 통합 – Azure OpenAI, Amazon Bedrock, 워크로드 ID 인증을 지원합니다.

일반적인 사용 사례

  • Ruby 웹 또는 백그라운드 서비스에서 챗봇, 어시스턴트 또는 LLM 기반 기능 구축.
  • Ruby 코드에서 직접 이미지, 오디오, 전사 생성.
  • 상태 저장 상호작용과 파일 I/O가 필요한 장기 실행 에이전트 워크플로우 실행.
  • Realtime WebSocket API를 사용한 실시간 음성 또는 텍스트 애플리케이션.
  • 코드 변경 없이 Azure OpenAI 또는 AWS Bedrock과 통합.

설치

# Gemfile에서
"gem "openai", "~> 0.103.0""

bundle install를 실행합니다. 이 gem은 Ruby 3.3 이상에서 작동합니다.

빠른 시작

require "bundler/setup"
require "openai"

client = OpenAI::Client.new(api_key: ENV["OPENAI_API_KEY"]) # env var이 설정되면 key는 선택 사항

# 간단한 채팅 완성
resp = client.chat.completions.create(
  model: "gpt-4o-mini",
  messages: [{role: "user", content: "Say this is a test"}]
)
puts resp

스트리밍 예제

stream = client.responses.stream(input: "Write a haiku about OpenAI.", model: "gpt-4o-mini")
stream.each { |event| puts event.type }

Agent (베타) 예제

stream = client.beta.agents.sessions.create_streaming(
  agent: {model: "gpt-4o-mini", instructions: "Summarize the policy clearly."},
  environment: {type: :none},
  input: "Explain this policy: ..."
)
result = stream.get_final_result
puts result.output_text

고급 기능

  • OpenAI::BaseModel 하위 클래스를 사용하여 구조화된 출력 유형을 선언하고 자동 파싱을 받습니다.
  • client.files.create로 로컬 파일을 업로드하거나 client.beta.agents.environments.files.prepare로 에이전트 환경용으로 스테이징합니다.
  • 클라이언트 인증서로 사용자 정의 OpenAI::NetHTTPClient를 구성하고 OpenAI::Client에 전달하여 상호 TLS를 활성화합니다.
  • 프로바이더 전환:
    client = OpenAI::Client.new(provider: OpenAI::Providers.azure(endpoint: ENV["AZURE_OPENAI_ENDPOINT"], api_key: ENV["AZURE_OPENAI_API_KEY"]))
    

성숙도 및 지원

  • OpenAI(공식 리포지토리)에서 적극적으로 유지 관리.
  • RubyDoc 및 OpenAI 플랫폼 문서에서 포괄적인 문서 제공.
  • 베타 플래그로 최신 OpenAI 기능(Agents, Realtime, vector stores 등) 지원.

라이선스

  • MIT 라이선스에 따라 배포됩니다 (리포지토리의 LICENSE 파일 참조).

이 요약은 openai/openai‑ruby 리포지토리의 README 내용만 기반으로 합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트