One API - LLM API 관리 및 배포 시스템
프로젝트 개요
One API는 오픈 소스 LLM API 관리 및 배포 시스템으로, OpenAI, Azure, Anthropic Claude, Google Gemini, DeepSeek, ChatGLM 등 주요 모델을 지원하며, API를 통합적으로 어댑팅하여 키 관리 및 2차 배포에 사용할 수 있습니다. 이 프로젝트는 단일 실행 파일과 Docker 이미지를 제공하여 원클릭 배포와 즉시 사용이 가능합니다.
핵심 기능
📋 다중 모델 지원
이 프로젝트는 다음과 같은 주요 대규모 언어 모델 제공업체를 지원합니다.
- OpenAI 시리즈: ChatGPT 시리즈 모델 (Azure OpenAI API 지원)
- Anthropic: Claude 시리즈 모델 (AWS Claude 지원)
- Google: PaLM2/Gemini 시리즈 모델
- other: 기타 시리즈 모델
🔧 핵심 기능
API 관리 및 배포
- 미러링 및 다양한 타사 프록시 서비스 구성 지원
- 로드 밸런싱을 통해 여러 채널에 액세스 지원
- 스트림 모드 지원, 스트리밍 전송을 통해 타자기 효과 구현 가능
- 다중 시스템 배포 지원
- 실패 시 자동 재시도 지원
- 이미지 생성 인터페이스 지원
사용자 및 권한 관리
- 토큰 관리: 토큰의 만료 시간, 할당량, 허용된 IP 범위 및 허용된 모델 액세스 설정
- 교환 코드 관리: 대량 생성 및 내보내기 지원, 교환 코드를 사용하여 계정 충전 가능
- 사용자 그룹: 사용자 그룹 및 채널 그룹 지원, 그룹별로 다른 배율 설정 지원
- 채널 관리: 채널 대량 생성, 채널 모델 목록 설정 지원
모니터링 및 통계
- 할당량 세부 정보 보기 지원
- 사용자 초대 보상 지원
- 달러 단위로 할당량 표시 지원
- Message Pusher와 연동하여 다양한 앱으로 알림 정보 푸시 가능
사용자 정의 기능
- 공지 게시, 충전 링크 설정, 신규 사용자 초기 할당량 설정 지원
- 모델 매핑 지원, 사용자 요청 모델 리디렉션
- 사용자 정의 시스템 이름, 로고 및 바닥글 지원
- 사용자 정의 홈페이지 및 정보 페이지 지원
- 시스템 액세스 토큰을 통해 관리 API 호출 지원
🔐 보안 및 인증
다양한 로그인 방식
- 이메일 로그인 및 등록 (등록 이메일 화이트리스트 지원) 및 이메일을 통한 비밀번호 재설정
- Feishu 인증 로그인
- GitHub 인증 로그인
- WeChat 공식 계정 인증 (WeChat Server 추가 배포 필요)
보안 기능
- Cloudflare Turnstile 사용자 검증 지원
- 테마 전환 지원
- Cloudflare AI Gateway 지원
배포 방식
Docker 배포 (권장)
SQLite 사용
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
MySQL 사용
docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
Docker Compose 배포
# 현재 MySQL 시작 지원, 데이터는 ./data/mysql 폴더에 저장
docker-compose up -d
# 배포 상태 확인
docker-compose ps
수동 배포
- GitHub Releases에서 실행 파일 다운로드 또는 소스 코드에서 컴파일:
git clone https://github.com/songquanpeng/one-api.git
# 프론트엔드 빌드
cd one-api/web/default
npm install
npm run build
# 백엔드 빌드
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
- 실행:
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
클라우드 플랫폼 배포
Zeabur 배포
- 코드 저장소 포크
- Zeabur에서 프로젝트 생성, MySQL 서비스 추가
- 환경 변수
PORT=3000및SQL_DSN구성 - 배포 및 도메인 구성
Render 배포
- Docker 이미지 직접 배포
- 저장소 포크 불필요
구성 설명
환경 변수 구성
데이터베이스 구성
SQL_DSN: 데이터베이스 연결 문자열 (MySQL 또는 PostgreSQL 사용 권장)LOG_SQL_DSN: 로그 테이블 독립 데이터베이스 연결
캐시 구성
REDIS_CONN_STRING: 캐시용 Redis 연결 문자열MEMORY_CACHE_ENABLED: 메모리 캐시 활성화SYNC_FREQUENCY: 데이터베이스 동기화 빈도 (초)
클러스터 구성
SESSION_SECRET: 고정 세션 키NODE_TYPE: 노드 유형 (master/slave)FRONTEND_BASE_URL: 프론트엔드 리디렉션 주소
보안 구성
GLOBAL_API_RATE_LIMIT: API 속도 제한GLOBAL_WEB_RATE_LIMIT: Web 속도 제한RELAY_TIMEOUT: 릴레이 타임아웃 설정
명령줄 매개변수
--port <port_number>: 포트 번호 지정 (기본값 3000)--log-dir <log_dir>: 로그 폴더 지정--version: 버전 번호 출력--help: 도움말 보기
사용 방법
- 초기 로그인: 기본 계정
root, 비밀번호123456사용 - 채널 구성: 채널 페이지에서 API 키 추가
- 토큰 생성: 토큰 페이지에서 액세스 토큰 생성
- 클라이언트 구성: API Base를 One API 배포 주소로 설정, API Key를 생성된 토큰으로 설정
API 사용 예시
# OpenAI 공식 라이브러리 구성
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"
채널 지정
토큰 뒤에 채널 ID를 추가하여 특정 채널 사용 지정 가능:
Authorization: Bearer ONE_API_KEY-CHANNEL_ID
아키텍처 설계
사용자 → One API → OpenAI/Azure/Claude/Gemini 등 여러 제공업체
One API는 중간 계층으로, 다양한 제공업체의 API 형식을 통합하고 다음을 제공합니다.
- 로드 밸런싱
- 요청 릴레이 및 형식 변환
- 사용자 관리 및 권한 제어
- 사용량 통계 및 청구
통합 사례
ChatGPT Next Web
docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web
페이지 설정에서 인터페이스 주소와 API 키를 설정하면 됩니다.
ChatGPT Web
docker run --name chatgpt-web -d -p 3002:3002 -e OPENAI_API_BASE_URL=https://openai.justsong.cn -e OPENAI_API_KEY=sk-xxx chenzhaoyu94/chatgpt-web
라이선스
본 프로젝트는 MIT 라이선스에 따라 오픈 소스로 제공되며, 페이지 하단에 저작자 표시 및 본 프로젝트 링크를 유지해야 합니다.
프로젝트 주소
- GitHub: https://github.com/songquanpeng/one-api
- 온라인 데모: https://openai.justsong.cn
- Docker Hub: justsong/one-api