OpenAI 호환 LLM 게이트웨이, Otari
요약
Otari는 애플리케이션과 LLM 제공업체 사이에 위치하는 게이트웨이입니다. 이를 통해 40개 이상의 다양한 모델을 하나의 OpenAI 호환 엔드포인트로 통합할 수 있습니다. 사용자 인증, 예산 강제, 사용량 추적 등 복잡한 AI 스택 관리를 용이하게 합니다.
핵심 포인트
- 다수의 LLM 제공업체를 단일 엔드포인트로 통합합니다.
- 사용자별/모델별 API 키 관리 및 예산 제어가 가능합니다.
- 장애 조치(failover) 및 라우팅 정책을 구현할 수 있습니다.
- 지출 전 예산을 확인하고 사용량을 정확히 추적합니다.
사용자가 소유하고 운영하는 OpenAI 호환 LLM 게이트웨이.
40개 이상의 제공업체(provider)로 하나의 엔드포인트를 라우팅하고, 가상 키를 발급하며, 예산을 강제하고,
사용량을 추적할 수 있습니다.
Docs · otari.ai ·
Launch blog ·
Discord
Otari는 애플리케이션과 모델 제공업체 사이에 위치합니다. 요청을 인증하고,
제공업체의 자격 증명(credentials)을 해결하며, 전송 전에 예산을 강제하고,
이후에 사용량을 기록합니다. 제공업체 호출은 any-llm을 거칩니다.
Otari를 자체 데이터베이스와 제공업체 키로 독립적으로 실행하거나, otari.ai에 데이터 플레인(data plane)을 연결할 수 있습니다.
Otari의 장점 (Why Otari)
- 여러 제공업체를 위한 단일 OpenAI 및 Anthropic 호환 엔드포인트
- 제공업체 자격 증명은 게이트웨이 뒤에 유지됨
- 사용자, 워크스페이스, 모델 범위가 있는 취소 가능한 API 키
- 지출 전 예산 확인 및 정산 후 사용량 기록
- 장애 조치(failover), 가중치 부여(weighting), 학습된 선택을 위한 로컬 라우팅 정책
- 선택적 코드 실행, 웹 검색, MCP, 추론 가드레일(inference guardrails) 및 파일 이해 기능
빠른 시작 (Quickstart)
Docker를 사용하여 임시 독립형 게이트웨이 실행:
docker run --rm -p 8000:8000 \
-e OTARI_MASTER_KEY=SET_A_MASTER_KEY \
-e OPENAI_API_KEY=YOUR_OPENAI_KEY \
...
비어 있는 데이터베이스에서 Otari는 API 키를 생성하고 한 번 출력합니다:
No API keys found. Created bootstrap key for first run. Save this key now:
tk-...
해당 키로 요청을 전송합니다:
curl http://localhost:8000/api/v1/chat/completions \
-H "Authorization: Bearer tk-..." \
-H "Content-Type: application/json" \
...
OpenAI 클라이언트는 base_url을 http://localhost:8000/api/v1로 설정하여 작동합니다.
이 컨테이너는 내부적으로 SQLite를 사용하며 중지되면 삭제됩니다. 영구 데이터가 필요하면 아래의 Compose 설정을 사용하세요.
개발자가 코딩 에이전트 옆에 실행하는 명령어(otari hook, otari import claude-code)는 서버 없이 자체적으로 설치됩니다:
brew install mozilla-ai/tap/otari
Agent Guardrails와 Use with Claude Code를 참조하세요.
전체 스택 실행
git clone https://github.com/mozilla-ai/otari
cd otari
cp config.example.yml config.yml
...
Compose는 PostgreSQL을 사용하여 Otari를 실행합니다. 선택적 프로파일은 코드 샌드박스, 웹 검색 및 Guardrail 서비스를 추가합니다:
docker compose --profile code-exec --profile web-search --profile guardrails up -d
대시보드는 http://localhost:8000/에서 제공됩니다. 대시보드를 통해 공급자 키를 저장하려면, otari gen-secret-key로 생성된 Fernet 키를 OTARI_SECRET_KEY에 설정하세요.
Railway용 원클릭 배포 템플릿이 제공됩니다.
런타임 모드
| Mode | 목적 |
|---|---|
| Standalone | 로컬 스토리지를 사용하여 관리(management) 및 추론(inference)을 제공하는 단일 프로세스. |
| ... | |
OTARI_MODE가 설정되지 않은 경우, OTARI_AI_TOKEN은 하이브리드 모드를 선택하며; 그렇지 않으면 Otari는 기본적으로 Standalone으로 작동합니다. 모드는 프로세스가 무엇을 제공하는지를 나타내지, 누가 실행하는지를 나타내는 것이 아니므로 "호스팅됨(hosted)"이 "셀프 호스팅됨(self-hosted)"의 반대 개념은 아닙니다. 런타임 모드(Runtime modes)를 참조하십시오. |
API 및 대시보드
핵심 완료 라우트(completion routes)는 다음과 같습니다:
POST /api/v1/chat/completionsPOST /api/v1/messagesPOST /api/v1/responses
Standalone은 또한 더 광범위한 OpenAI 호환 및 관리 API를 제공합니다. 실행되는 서버는 /api/v1/docs에서 Swagger UI를, 그리고 /api/v1/openapi.json에서 OpenAPI 문서를 게시합니다. API 참조(API reference)를 참조하십시오.
대시보드는 프로바이더(providers), 모델(models), 라우팅(routing), 툴(tools), 키(keys), 멤버(members), 예산(budgets), 설정(settings), 활동(activity), 사용량(usage)을 관리합니다. 탐색은 배포 모드와 로그인한 사용자의 권한에 맞게 조정됩니다. 관리자 대시보드(Admin dashboard)를 참조하십시오.
개발
git clone https://github.com/mozilla-ai/otari
cd otari
uv sync --dev
...
PostgreSQL 없이 로컬 개발을 하려면, database_url을 sqlite+aiosqlite:///./otari.db로 변경하십시오.
일반적인 확인 사항:
make test
make lint
make typecheck
풀 리퀘스트(pull request)를 열기 전에 CONTRIBUTING.md를 참조하십시오.
문서화 (Documentation)
- 빠른 시작(Quickstart)
- 배포(Deployment)
- 설정(Configuration)
- 모델(Models)
- 라우팅(Routing)
- 접근 제어(Access control)
- 내장 툴(Built-in tools)
- 에이전트 가드레일(Agent Guardrails)
- SDK 및 에이전트 통합(SDK and agent integrations)
- 아키텍처(Architecture)
라이선스 (License)
Apache 2.0. LICENSE를 참조하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기