Ollama API와 OpenAI API: 엔드포인트 및 코드
Ollama API와 OpenAI API 질문은 두 가지 요청 형식과 모델을 실행할 두 가지 장소로 귀결됩니다. Ollama에는 자체 네이티브 API와 OpenAI 호환 레이어가 있어 호스팅 OpenAI 스타일 엔드포인트로 이동하면 베이스 URL과 키 변경이 필요할 수 있습니다.


카드가 필요 없습니다. 가입 후 한 번의 클릭으로 $0.50 무료 체험 크레딧을 받습니다(인당 한 번).
API 키 받기주요 포인트
- Ollama는 /api 아래에 네이티브 라우트를 가지고 있고 /v1 아래에 OpenAI 호환 레이어를 가지고 있습니다. OpenAI SDK용으로 작성된 클라이언트는 보통 둘 중 하나와도 작동합니다.
- Ollama의 네이티브 스트리밍은 줄바꿈 구분 JSON을 사용하며, OpenAI 형식은 서버 전송 이벤트를 스트리밍합니다.
- 로컬에서 호스팅으로 이동하면 코드가 아닌 베이스 URL, 키 및 모델 이름을 변경해야 합니다.
- 로컬은 데이터를 사용자의 머신에 유지합니다. 호스팅은 하드웨어 관리 부담을 줄이고 토큰 단위 과금을 추가합니다.
간단 요약
둘 다 메시지 목록을 POST하고 텍스트를 받습니다. 차이는 요청의 형태, 서버 위치 및 GPU 비용을 누가 부담하느냐에 있습니다. Ollama는 자체 컴퓨터에서 모델을 실행하고 포트 11434에서 수신합니다. OpenAI API는 자체 유료 모델을 갖춘 호스팅 서비스입니다. Ollama API와 OpenAI API 비교에서 사람들은 종종 세 번째 점을 놓칩니다: Ollama는 OpenAI 호환 라우트도 노출하므로 두 형식이 겹칩니다.
이러한 중복이 이주가 저렴해지는 이유입니다. 앱이 이미 OpenAI SDK를 사용하고 있다면, 오늘 로컬 Ollama를 가리키고 내일 호스팅 OpenAI 호환 URL을 가리킬 수 있습니다. 이 사이트의 호스팅 엔드포인트는 그 중 하나입니다. 이 엔드포인트는 단일 모델 uncensored을 https://api.ollamansfw.com/v1에서 제공하며, OpenAI, Meta 또는 기타 연구소의 공식 제품이 아닙니다.
엔드포인트별 차이점
| 작업 | Ollama 네이티브 | OpenAI 스타일 |
|---|---|---|
| 채팅 | POST /api/chat | POST /v1/chat/completions |
| 단일 프롬프트 | POST /api/generate | POST /v1/responses 또는 채팅 완성 |
| 모델 목록 | GET /api/tags | GET /v1/models |
| 인증 | 기본값 없음 | Authorization: Bearer key |
| 스트리밍 | 줄바꿈 구분 JSON | 완료 마커로 끝나는 서버 전송 이벤트 |
| 모델 이름 | llama3 등 pull 명령어로 가져온 모델 | 제공업체가 나열한 모델명 |
Ollama는 같은 포트에서 /v1/chat/completions과 /v1/models도 제공합니다. 이것이 OpenAI 클라이언트가 이를 대상으로 작동할 수 있게 하는 이유입니다. Ollama 고유 호출의 기본값은 스트리밍이므로, 단일 JSON 응답을 원할 때 stream: false를 설정하세요.
호스팅 엔드포인트는 POST /v1/chat/completions, POST /v1/responses 및 GET /v1/models를 구현하며, GET /v1/balance에서 잔액 확인도 지원합니다. 전체 목록은 API 문서를 참조하세요.
동일한 요청, 세 가지 방법
Python에서 네이티브 Ollama:
import requests
r = requests.post(
"http://localhost:11434/api/chat",
json={
"model": "llama3",
"messages": [{"role": "user", "content": "Say hello in five words."}],
"stream": False,
},
)
print(r.json()["message"]["content"])로컬 및 호스팅 설정이 나란히 배치된 OpenAI SDK. 주석 처리된 줄만 변경됩니다:
from openai import OpenAI
# Local Ollama through its OpenAI-compatible layer:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
# Hosted endpoint, same code from here on:
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored", # local would be e.g. "llama3"
messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(resp.choices[0].message.content)스트리밍을 활성화한 호스팅 엔드포인트에 대한 curl:
curl https://api.ollamansfw.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":true}'네이티브 측 파싱 방식이 다릅니다: 스트리밍되는 각 줄은 message.content를 포함하는 JSON 객체이며, 마지막 줄에는 done: true가 있습니다. OpenAI 형식에서는 각 이벤트가 data: 로 시작하고 choices[0].delta.content 조각을 포함하며, 스트림은 [DONE]로 종료됩니다. SDK를 사용하면 이러한 형식을 직접 볼 일이 없습니다.
각각이 적합한 경우
사생활 보호가 최우선일 때, 원하는 모델을 위한 충분한 메모리가 있는 GPU가 있을 때, 또는 여러 모델을 실험할 때 로컬 Ollama가 올바른 선택입니다. 데이터는 머신 밖으로 나가지 않으며 토큰당 요금이 청구되지 않습니다. 비용은 하드웨어, 전력 및 시간으로 나타납니다. GUI와 함께 Ollama 사용하기 가이드는 이 경로의 사용하기 쉬운 측면을 다룹니다.
하드웨어가 부족하거나 많은 동시 요청이 필요하거나, 다른 사람들을 위한 봇이나 서비스를 실행하거나, 노트북이 켜져 있는지 여부에 의존하지 않는 안정적인 URL이 필요할 때 호스팅된 OpenAI 호환 엔드포인트가 더 적합합니다. 전체 키는 8개의 동시 요청과 분당 300개의 요청을 허용합니다. 컨텍스트 창은 100,000 토큰이며, 이는 많은 로컬 설정이 메모리에 담을 수 있는 것보다 많습니다.
많은 사람들이 둘 다 사용합니다: 실험용 로컬, 항상 가동해야 하는 서비스용 호스팅. 다른 로컬 도구를 고려 중이라면 Ollama 소프트웨어 대안을 읽으세요.
로컬 Ollama에서 호스팅으로 마이그레이션
- 먼저 OpenAI 형식으로 전환하세요. 코드가
/api/chat를 호출하는 경우 Ollama의/v1라우트를 가리키도록 OpenAI SDK로 변경하세요. 로컬에서 여전히 작동하는지 확인합니다. - 키를 얻으세요. 가입하고 API 키 페이지에서 $0.50 체험금을 청구하세요. 결제가 필요 없으며 7일 동안 유효합니다.
- 세 가지 값을 변경하세요. 베이스 URL을
https://api.ollamansfw.com/v1로, 키를 본인 것으로, 모델을uncensored로 변경합니다. - 매개변수를 확인하세요. 온도, top_p, stop, seed 및 페널티가 전달됩니다. Ollama의
num_ctx또는keep_alive와 같은 로컬 전용 옵션은 적용되지 않으며 창은 100,000 토큰으로 고정됩니다. - 재시도 로직을 추가하세요. 호스팅 API는 한도를 초과할 때
rate_limited또는concurrency와 함께 429를 반환하고, 일시적 과부하 동안Retry-After: 5와 함께 429를 반환합니다. 로컬 서버는 이를 거의 반환하지 않으므로 기존 코드가 이를 처리하지 못할 수 있습니다.
전환 후 무언가 실패하면, 일반적인 Ollama API 실수에 대한 기사가 잘못된 포트 및 누락된 모델 이름과 같은 빈번한 원인을 다룹니다.
호스팅 비용과 제공하지 않는 기능
과금 선불 크레딧에서 사용한 만큼 지불 방식으로 이루어집니다: 입력 토큰 100만 개당 $0.15, 출력 토큰 100만 개당 $0.50입니다. 입력 1,000개와 출력 400개로 구성된 채팅 턴은 $0.00015 + $0.0002 = $0.00035가 들며, 따라서 $20은 약 57,000개의 턴을 커버합니다. 실패하거나 거부된 요청에는 요금이 청구되지 않으며 크레딧은 만료되지 않습니다. 충전은 $20부터 $500까지 가능하며, $50부터 +5%, $100부터 +10%, $200부터 +15%의 보너스가 제공됩니다. 결제는 암호화폐로만 가능합니다(TRC20의 USDT 또는 Base의 USDC). 더 자세한 내용은 가격 책정 페이지를 참조하세요.
알아야 할 제한: 텍스트 전용이므로 임베딩, 이미지 생성 또는 파인튜닝이 없습니다. 로컬 임베딩에 의존하는 경우 해당 임베딩을 로컬에 유지하세요. 이 모델은 합법적인 성인 사용에 대해 콘텐츠 거부 없이 답변하도록 조정되었습니다. 미성년자를 포함한 성적인 콘텐츠는 절대 허용되지 않습니다. 프롬프트는 학습에 사용되지 않습니다.
더 많은 가이드
질문과 답변
Ollama API는 OpenAI API와 호환되나요?
부분적으로 맞습니다. Ollama는 /api 아래에 네이티브 라우트를 가지고 있고 /v1/chat/completions과 같은 OpenAI 스타일의 라우트도 제공하므로 OpenAI SDK 클라이언트는 이를 대상으로 통신할 수 있습니다.
로컬 Ollama에서 호스팅 엔드포인트로 이동하려면 무엇을 변경해야 하나요?
Base URL, API 키 및 모델 이름입니다. 코드에서 이미 OpenAI SDK를 사용하고 있다면 다른 변경 사항은 필요하지 않습니다.
호스팅된 API는 Ollama와 같은 임베딩을 지원합니까?
아니요. 텍스트 생성만 지원하며, 임베딩, 이미지 또는 파인튜닝은 제공되지 않습니다. 채팅 완료 및 응답만 가능합니다.
Ollama는 무료입니까?
소프트웨어는 다운로드 및 실행이 무료입니다. 하지만 하드웨어와 전력 비용은 별도로 발생하며, 호스팅 API는 토큰당 요금을 부과합니다.