Ollama 호환 API
Ollama 호환 API (Ollama-Compatible API)
Ollama CLI와 Python 라이브러리에 이미 익숙하다면, 그대로 SGLang을 추론 백엔드로 쓸 수 있어요. SGLang이 Ollama API 호환성을 제공하기 때문이에요.
출처: 공식문서
사전 조건
# Install the Ollama Python library (for Python client usage)
pip install ollama
참고: Ollama 서버는 설치할 필요 없어요 — SGLang이 백엔드 역할을 하거든요.
ollamaCLI나 Python 라이브러리를 클라이언트로만 갖고 있으면 돼요.
엔드포인트
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/ |
GET, HEAD | Ollama CLI를 위한 헬스 체크 |
/api/tags |
GET | 사용 가능한 모델 목록 |
/api/chat |
POST | 채팅 완성 (스트리밍 & 비스트리밍) |
/api/generate |
POST | 텍스트 생성 (스트리밍 & 비스트리밍) |
/api/show |
POST | 모델 정보 |
빠른 시작
1. SGLang 서버 띄우기
python -m sglang.launch_server \
--model Qwen/Qwen2.5-1.5B-Instruct \
--port 30001 \
--host 0.0.0.0
참고:
ollama run과 함께 쓰는 모델 이름은--model에 넘긴 것과 정확히 일치해야 해요.
2. Ollama CLI 사용
# List available models
OLLAMA_HOST=http://localhost:30001 ollama list
# Interactive chat
OLLAMA_HOST=http://localhost:30001 ollama run "Qwen/Qwen2.5-1.5B-Instruct"
방화벽 뒤의 원격 서버에 연결한다면 이렇게 해요.
# SSH tunnel
ssh -L 30001:localhost:30001 user@gpu-server -N &
# Then use Ollama CLI as above
OLLAMA_HOST=http://localhost:30001 ollama list
3. Ollama Python 라이브러리 사용
import ollama
client = ollama.Client(host='http://localhost:30001')
# Non-streaming
response = client.chat(
model='Qwen/Qwen2.5-1.5B-Instruct',
messages=[{'role': 'user', 'content': 'Hello!'}]
)
print(response['message']['content'])
# Streaming
stream = client.chat(
model='Qwen/Qwen2.5-1.5B-Instruct',
messages=[{'role': 'user', 'content': 'Tell me a story'}],
stream=True
)
for chunk in stream:
print(chunk['message']['content'], end='', flush=True)
요청은 OLLAMA_HOST를 서버 주소로 바꾸는 것만으로 끝이에요. 로컬 Ollama에 기대던 방식 그대로 동작하되, 실제 추론은 고성능 SGLang 백엔드가 처리해요.
스마트 라우터 (Smart Router)
LLM 판정(judge)을 이용해 로컬 Ollama(빠름)와 원격 SGLang(강력함) 사이를 지능적으로 라우팅하려면 Smart Router 문서를 참고하세요.
정리
| 구성 요소 | 역할 |
|---|---|
| Ollama API | 개발자가 이미 아는 친숙한 CLI/API |
| SGLang 백엔드 | 고성능 추론 엔진 |
| Smart Router | 지능형 라우팅 — 단순 작업은 빠른 로컬, 복잡한 작업은 강력한 원격 |