응답 생성하기
응답 생성하기 (Generate a response)
프롬프트 하나를 주고 모델이 자연어 응답을 만들어 내는 가장 기본적인 호출이 필요할 때가 있죠. Ollama의 POST /api/generate 엔드포인트는 제공된 프롬프트에 대한 응답을 생성해요. 단순한 텍스트 생성부터 구조화된 출력, 멀티모달 이미지 입력까지 지원해요.
엔드포인트
- 경로:
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: 생성할 최대 토큰 수.