Ollama란?
로컬에서 LLM을 실행할 수 있게 해주는 오픈소스 도구로써 자체적으로 모델을 설치하고 실행한다.
CLI 또는 HTTP API를 통해 모델과 상호작용할 수 있다.
모델 설치 및 실행
모델 설치
ollama pull [모델명]
모델 실행
ollama run [모델명]
모델을 실행하고 대화형 CLI로 진입
(만약 모델이 설치되어 있지 않은 상태에서 실행 시 자동으로 다운로드 후 실행)

사실 ollama run은 내부적으로 서버와 API를 자동 실행한다.
추가 설정 없이 run을 실행하면 Ollama는 내부적으로 자동으로 아래 명령을 실행해 로컬 서버를 띄운다.
ollama serve
즉, 백그라운드에서 작동하는 HTTP 서버이고, 이를 통해 다른 애플리케이션에서 HTTP 요청으로 모델 사용이 가능하다.
(하지만, ollama serve는 일반적으로 Ollama 앱이 설치되면 자동 실행 상태이기 때문에 수동으로 띄울 필요는 거의 없다.)
- Ollama 서버가 백그라운드에서 계속 대기
- API 서버는 http://localhost:11434에서 열림
- Flask 등에서 POST http://localhost:11434/api/generate로 요청 가능
모델 실행 종료
taskkill /f /im ollama.exe
설치 모델 리스트 확인
ollama list

Flask에서 requests 라이브러리를 사용한 API 요청
- "텍스트 입력 - 텍스트 출력" 구조로 직관적
- 역할 구분 없음 > 대화 문맥 유지 어려움
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
OLLAMA_URL = "http://localhost:11434/api/generate"
@app.route('/prompt', methods=['POST'])
def prompt():
payload = {
"model": "mistral", # 사용할 모델명
"prompt": "한국어 할 줄 알아?", # prompt
"stream": False # 스트리밍 여부
}
response = requests.post(OLLAMA_URL, json=payload)
return jsonify(response.json())
- 역할 기반 메세지
- system/user/assistant 역할 구분으로 대화 맥락 관리 가능
- system : 역할 지시
- user : 사용자의 질문
- assistant : 모델의 답변 (assistant 응답까지 messages 배열에 누적해주면 문맥의 대화 가능)
from flask import Flask, request, jsonify
import requests
app = Flask(__name__)
OLLAMA_CHAT_URL = "http://localhost:11434/api/chat"
@app.route('/chat', methods=['POST'])
def chat():
user_input = request.json['message']
payload = {
"model": "mistral",
"messages": [ # 역할 기반
{"role": "system", "content": "너는 친절한 선생님이야. 천천히 설명해줘."},
{"role": "user", "content": "한국어 할 줄 알아?"},
],
"stream": False
}
response = requests.post(OLLAMA_CHAT_URL, json=payload)
return jsonify(response.json())
참고) https://medium.com/%40laurentkubaski/ollama-generate-endpoint-parameters-bdf9c2b340d1
https://www.postman.com/postman-student-programs/ollama-api/documentation/suc47x8/ollama-rest-api
'Back-end' 카테고리의 다른 글
| [Spring Boot, React] 프로젝트 생성 및 연동 (0) | 2025.02.24 |
|---|---|
| [Package Manager] npm / yarn / pnpm (3) | 2024.09.03 |
| [Spring] Repository / Domain / Dto 등 패키지 구조 정리 (0) | 2023.12.22 |
| [Nestjs] Logging - 애플리케이션의 동작 (0) | 2022.05.20 |
| [Node.js] class-validator (0) | 2022.03.17 |