응답 생성하기

응답 생성하기 (Generate a response)

프롬프트 하나를 주고 모델이 자연어 응답을 만들어 내는 가장 기본적인 호출이 필요할 때가 있죠. Ollama의 POST /api/generate 엔드포인트는 제공된 프롬프트에 대한 응답을 생성해요. 단순한 텍스트 생성부터 구조화된 출력, 멀티모달 이미지 입력까지 지원해요.

출처: Ollama 공식 문서 — Generate a response

엔드포인트

  • 경로: POST /api/generate
  • 요약: 제공된 프롬프트에 대한 응답을 생성합니다.
  • operationId: generate

요청 본문의 핵심 필드는 model(모델 이름)과 prompt(프롬프트)예요. 실행 옵션은 options 객체로 전달할 수 있고, temperature, top_p, seed 등을 세밀하게 조절할 수 있어요.

curl http://localhost:11434/api/generate -d '{
  "model": "gemma4",
  "prompt": "Why is the sky blue?",
  "options": {
    "temperature": 0.8,
    "top_p": 0.9,
    "seed": 42
  }
}'

구조화된 출력 (Structured outputs)

응답을 JSON 스키마에 맞춰 만들고 싶다면 format 으로 원하는 구조를 명시할 수 있어요. 예를 들어 국가 목록을 반환하는 구조를 지정하면 그 형식에 맞는 출력을 얻을 수 있어요.

curl http://localhost:11434/api/generate -d '{
  "model": "gemma4",
  "prompt": "List the countries",
  "format": {
    "type": "object",
    "properties": {
      "countries": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "country": {"type": "string"}
          }
        }
      }
    }
  }
}'

멀티모달 입력

비전 모델에는 images 필드로 Base64로 인코딩한 이미지를 함께 보낼 수 있어요. 이러면 이미지를 참고한 응답을 생성할 수 있죠.

curl http://localhost:11434/api/generate -d '{
  "model": "gemma4",
  "prompt": "What is in this image?",
  "images": ["iVBORw0KGgoAAAANSUhEUgAAAG0AAABmCAYAAADBPx+VAAA..."]
}'

모델 로드·언로드

model 필드만 담은 요청은 모델을 메모리에 미리 로드하게 하고, 빈 상태로 두면 언로드 동작을 트리거할 수 있어요. 첫 응답 지연을 줄이고 싶으면 이벤트에 앞서 모델을 로드해 두는 것도 방법이에요.

실행 옵션 (ModelOptions)

options 에 넣을 수 있는 주요 값들이에요.

  • seed: 재현 가능한 출력을 위한 랜덤 시드.
  • temperature: 생성의 무작위성(높을수록 더 무작위).
  • top_k: 다음 토큰 선택을 가장 가능성 높은 K개로 제한.
  • top_p: 핵 샘플링을 위한 누적 확률 임계값.
  • min_p: 토큰 선택을 위한 최소 확률 임계값.
  • stop: 생성을 멈출 시퀀스.
  • num_ctx: 컨텍스트 길이(토큰 수).
  • num_predict: 생성할 최대 토큰 수.

더 알아보기