티스토리 뷰
FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – Ollama를 활용한 로컬 LLM 개념 및 활용
octo54 2025. 2. 26. 13:24FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – Ollama를 활용한 로컬 LLM 개념 및 활용
1.2.2 Ollama를 활용한 로컬 LLM 개념 및 활용
🔹 Ollama란?
Ollama는 로컬 환경에서 대형 언어 모델(LLM)을 실행할 수 있도록 지원하는 경량화된 오픈소스 LLM 실행 프레임워크입니다. 클라우드 없이 DeepSeek-R1, LLaMA3, Mistral, Phi-2 등 다양한 모델을 실행할 수 있으며, FastAPI와 결합하여 강력한 로컬 챗봇을 구축하는 데 최적화되어 있습니다.
✅ Ollama의 주요 특징
1️⃣ 로컬에서 AI 모델 실행 가능 – 데이터 유출 없이 오프라인에서 LLM을 활용
2️⃣ 최적화된 모델 로딩 및 가속화 지원 – MPS(Apple Silicon), CUDA(NVIDIA), CPU 기반 실행
3️⃣ API 형태로 제공 – FastAPI와 쉽게 통합 가능
4️⃣ 다양한 오픈소스 모델 지원 – DeepSeek-R1, LLaMA3, Mistral, Phi-2 등
5️⃣ 모델 커스텀 지원 – 프롬프트와 파라미터를 수정하여 나만의 모델 생성
1. Ollama 및 FastAPI 설치
1️⃣ Ollama 설치
📌 Ollama는 공식 홈페이지에서 다운로드 후 설치하는 것이 가장 간단합니다.
운영체제에 맞는 패키지를 다운로드하여 설치하면 됩니다.
✅ 설치 후 Ollama 버전 확인
ollama version
➡️ 정상적으로 설치되었다면, Ollama 실행이 가능합니다.
2️⃣ FastAPI 설치
FastAPI는 Python 기반의 웹 프레임워크로, 비동기 처리 기능이 강력하여 LLM API 개발에 최적화된 환경을 제공합니다.
📌 FastAPI 설치 (Uvicorn 포함)
pip install fastapi pydantic requests uvicorn
✅ 설치 완료 후 FastAPI 버전 확인
python -c "import fastapi; print(fastapi.__version__)"
➡️ 정상적으로 설치되었다면, FastAPI 서버 실행이 가능합니다.
2. Hugging Face에서 LLaMA-3-Korean 모델 다운로드 및 Ollama 모델 생성
Ollama는 기본적으로 제공되는 모델 외에도 사용자가 직접 모델을 추가할 수 있는 기능을 지원합니다.
한국어 챗봇 최적화를 위해 Hugging Face의 LLaMA-3-Korean-Blossom-8B-Q4_K_M.gguf 모델을 다운로드하여 Ollama에서 실행하는 방법을 살펴보겠습니다.
1️⃣ Hugging Face에서 모델 다운로드
📌 아래 링크에서 LLaMA-3-Korean-Blossom-8B-Q4_K_M.gguf 모델을 다운로드합니다.
➡️ Hugging Face - LLaMA-3-Korean-Blossom-8B (모델 페이지에서 .gguf 파일을 다운로드)
📌 다운로드 후, 모델 파일을 Ollama의 모델 저장 디렉토리에 이동합니다.
mkdir -p ~/.ollama/models
mv ~/Downloads/LLaMA-3-Korean-Blossom-8B-Q4_K_M.gguf ~/.ollama/models/
2️⃣ Ollama ModelFile 생성
Ollama에서 커스텀 모델을 등록하려면 Modelfile을 생성해야 합니다.
아래 명령어를 실행하여 새로운 Modelfile을 생성합니다.
nano ~/.ollama/models/Modelfile
📌 Modelfile 내용 (LLaMA-3-Korean-Blossom-8B 적용)
FROM LLaMA-3-Korean-Blossom-8B-Q4_K_M.gguf
TEMPLATE "{{prompt}}"
PARAMETER temperature 0.7
PARAMETER top_p 0.9
➡️ TEMPLATE "{{prompt}}"은 Ollama가 입력된 프롬프트를 그대로 처리하도록 설정하는 부분입니다.
➡️ PARAMETER temperature 0.7은 응답의 다양성을 조절하며, top_p는 샘플링 기법을 설정하는 파라미터입니다.
3️⃣ Ollama에 커스텀 모델 등록
📌 커스텀 모델 생성 (Ollama에 등록)
ollama create korean-llama3 --from ~/.ollama/models/Modelfile
📌 등록된 모델 실행 확인
ollama list
✅ korean-llama3 모델이 목록에 나타나면 정상적으로 등록된 것입니다.
📌 모델 실행 테스트
ollama run korean-llama3
➡️ korean-llama3 모델을 실행하고, 한국어 챗봇을 테스트할 수 있습니다.
3. FastAPI에서 Ollama와 API 통합하기
1️⃣ Ollama API 서버 실행
Ollama는 내부적으로 API 서버를 제공합니다.
서버 실행 후 FastAPI에서 이를 호출하면 간단한 챗봇 API를 만들 수 있습니다.
📌 Ollama API 서버 실행
ollama serve
➡️ 기본적으로 **http://localhost:11434**에서 API가 동작합니다.
2️⃣ FastAPI에서 Ollama 호출하기
📌 FastAPI 설치 (설치되지 않은 경우)
pip install fastapi pydantic requests uvicorn
📌 FastAPI에서 Ollama 호출 코드 (Pydantic 활용 & 데이터 모델 추가)
from fastapi import FastAPI
from pydantic import BaseModel
import requests
app = FastAPI()
OLLAMA_API_URL = "http://localhost:11434/api/generate"
# 요청 데이터 모델 정의
class ChatRequest(BaseModel):
prompt: str
# Ollama와 연동된 API 엔드포인트
@app.post("/chat/")
async def chat_with_llm(request: ChatRequest):
payload = {
"model": "korean-llama3",
"prompt": request.prompt,
"stream": False
}
response = requests.post(OLLAMA_API_URL, json=payload)
return response.json()
# FastAPI 서버 실행
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000, reload=True)
📌 FastAPI 실행
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
✅ main.py 파일이 있는 디렉토리에서 실행하면 FastAPI 서버가 시작됩니다.
📌 API 테스트 (Postman 또는 curl 활용)
curl -X POST "http://localhost:8000/chat/" -H "Content-Type: application/json" -d '{"prompt": "로컬 LLM은 어떻게 동작하나요?"}'
✅ 위와 같이 요청을 보내면 Ollama가 응답을 생성하여 반환합니다.
📌 다음 글에서는 1.2.3 LangChain 및 RAG 개념과 활용 방법을 다룹니다! 🚀
'project > 로컬 LLM + RAG 기반 AI 채팅봇 만들기' 카테고리의 다른 글
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – Ollama 및 LLaMA3 모델 설정 (0) | 2025.02.26 |
---|---|
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – Python 및 필수 라이브러리 설치 (0) | 2025.02.26 |
FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – LangChain 및 RAG 개념과 활용 (0) | 2025.02.26 |
FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – 주요 기술 스택 소개 (0) | 2025.02.26 |
FastAPI 기반 로컬 LLM과 RAG를 활용한 챗봇 - 프로젝트 개요 (1) | 2025.02.25 |
- Total
- Today
- Yesterday
- Ktor
- AI챗봇
- nextJS
- seo 최적화 10개
- github
- 프론트엔드
- rag
- LangChain
- gatsbyjs
- 백엔드개발
- nodejs
- AI 자동화
- kotlin
- NestJS
- 웹개발
- Next.js
- SEO최적화
- Docker
- 관리자
- 백엔드
- PostgreSQL
- CI/CD
- llm
- Prisma
- REACT
- fastapi
- 개발블로그
- App Router
- Webpack
- 스마트 컨트랙트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |