티스토리 뷰

반응형

FastAPI 기반 로컬 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 버전 확인

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 개념과 활용 방법을 다룹니다! 🚀

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함
반응형