검증 범위Ollama 공식 API Introduction·Chat·Structured Outputs 문서의 현재 엔드포인트와 옵션을 대조

먼저 읽는 30초 요약

이 글에서 가져갈 것

  • 로컬 기본 API 주소는 `http://localhost:11434/api`입니다.
  • 대화는 `/api/chat`, 단일 생성은 `/api/generate`로 시작할 수 있습니다.
  • 형식이 중요한 업무는 JSON 스키마와 낮은 temperature를 함께 사용하고 결과를 다시 검증합니다.
REQUEST PATH 01

로컬 API 요청의 경로

초기 개발은 전체 응답으로 검증한 뒤 스트리밍을 추가합니다.

  1. 01
    APP

    요청·메시지 구성

  2. 02
    localhost

    11434/api/chat

  3. 03
    MODEL

    로컬에서 추론

  4. 04
    RESPONSE

    JSON 검증·표시

활용 기준 서버 오류, 시간 초과, 사용자 취소와 구조 검증 실패를 애플리케이션에서 명시적으로 처리합니다.
SECTION 01

가장 작은 API 호출부터 시작합니다

Ollama가 실행 중이고 모델이 다운로드되어 있다면 로컬 기본 주소에서 요청을 받을 수 있습니다. 먼저 curl로 서버·모델·응답을 한 번에 확인하세요.

공식 API는 로컬과 클라우드 주소가 다릅니다. 민감한 데이터라면 코드의 base URL이 localhost인지 반드시 확인합니다.

curl http://localhost:11434/api/generate -d '{
  "model": "gemma3:4b",
  "prompt": "로컬 AI를 한 문장으로 설명해줘",
  "stream": false
}'
SECTION 02

대화는 메시지 배열로 보냅니다

`/api/chat`은 model과 messages가 핵심입니다. system, user, assistant 역할을 순서대로 보관하면 여러 턴의 문맥을 구성할 수 있습니다. 서버가 과거 대화를 자동으로 기억한다고 가정하지 말고 애플리케이션이 필요한 메시지를 명시적으로 관리하세요.

긴 대화를 전부 다시 보내면 메모리와 지연이 커집니다. 오래된 대화는 요약하거나 새 세션으로 나누고, 중요한 원문은 별도의 검색 단계에서 가져오는 편이 좋습니다.

curl http://localhost:11434/api/chat -d '{
  "model": "gemma3:4b",
  "messages": [{"role": "user", "content": "세 가지 핵심만 알려줘"}],
  "stream": false
}'
SECTION 03

스트리밍과 일반 응답을 구분합니다

Chat API는 기본적으로 스트리밍하며 여러 JSON 조각을 연속으로 보냅니다. 빠르게 첫 글자를 보여주는 UI에는 유리하지만 클라이언트가 조각을 순서대로 합치고 중단·오류를 처리해야 합니다.

초기 개발과 자동화는 `stream:false`로 전체 응답을 한 번에 받아 구조를 확인한 뒤 스트리밍을 추가하는 편이 단순합니다. 응답의 load_duration, eval_duration, 토큰 수는 병목을 비교하는 관찰값으로 활용할 수 있습니다.

SECTION 04

JSON 출력은 스키마로 제한합니다

공식 Structured Outputs 기능은 `format`에 JSON 스키마를 넣어 응답 구조를 제한합니다. temperature를 낮추면 반복 실행의 변동을 줄이는 데 도움이 됩니다.

스키마를 지정해도 내용의 사실성까지 보장되지는 않습니다. JSON 파싱, 필수 필드, 값 범위와 원문 근거를 애플리케이션에서 다시 검사하세요.

  • 스키마에 필수 필드 명시
  • temperature 낮게 설정
  • 파싱 실패 재시도 제한
  • 값 범위와 길이 검증
  • 원문에 없는 사실은 별도 확인
SECTION 05

운영 전에 실패를 설계합니다

모델이 없거나 서버가 꺼졌을 때, 요청이 너무 길 때, 사용자가 생성을 취소할 때의 동작을 정합니다. 무한 재시도는 메모리와 전력을 낭비하므로 횟수와 시간 제한을 둡니다.

API 호출 로그에 프롬프트 전체를 남기면 로컬 처리의 장점을 잃을 수 있습니다. 기본 로그는 요청 ID, 모델, 지연, 오류 코드처럼 진단에 필요한 최소 정보로 제한합니다.

상황앱의 대응
서버 연결 실패상태 표시와 재시작 안내
모델 없음설치된 모델 목록 확인
시간 초과요청 중단과 작은 입력 제안
JSON 검증 실패제한된 재시도 또는 사용자 확인
사용자 취소스트림과 후속 작업 즉시 중단
SECTION 06

localhost도 접근 통제가 필요합니다

같은 사용자 계정에서 실행되는 다른 프로그램은 로컬 포트에 접근할 수 있습니다. 서버를 0.0.0.0이나 외부 네트워크에 노출하면 위험이 더 커집니다.

외부 공개가 필요하다면 인증 프록시, 허용 IP, TLS, 요청 제한과 감사 로그를 먼저 구성하세요. 개인용 첫 앱은 localhost 범위에서 완성하는 것이 안전합니다.

FAQ

자주 묻는 질문

API 사용에 별도 요금이 있나요?

로컬 모델 요청 자체에 Ollama API 사용량 요금은 없지만 장비·전력 비용이 들며, 클라우드 모델은 별도 조건이 적용될 수 있습니다.

Python 전용인가요?

아닙니다. HTTP 요청을 보낼 수 있는 언어라면 사용할 수 있고 공식 Python과 JavaScript 라이브러리도 제공됩니다.

JSON 스키마를 쓰면 답이 항상 맞나요?

구조 준수에 도움을 줄 뿐 사실 정확성을 보장하지 않습니다. 내용 검증과 실패 처리가 필요합니다.

공식 출처

세부 동작과 최신 버전은 아래 원문을 함께 확인하세요.

Ollama API Introduction Ollama Chat API Ollama Structured Outputs

이어서 읽기

로컬 AI, 무엇이고 어디서부터 시작해야 할까?Ollama 설치부터 첫 모델 실행까지