본문 바로가기
AI/LangChain

[#LangChain] 03. 로컬 LLM 실습 환경 구축

by dopal2 2026. 2. 26.
반응형

DeepSeek-R1과 Ollama를 활용한 무과금 AI 개발 환경

1. 실습 환경 구성 전략

  • 🤖 LLM: DeepSeek-R1 (1.5b)
    GPT나 Gemini 같은 유료 API 대신 로컬 LLM을 사용합니다. 특히 1.5b 모델은 메모리가 적은 M2 Air 깡통(8GB) 모델에서도 구동 가능한 최적의 선택입니다.
  • 💻 IDE: Cursor
    AI 네이티브 코드 에디터로, 랭체인 코딩 시 자동 완성 및 오류 수정을 강력하게 지원합니다.

2. Ollama 및 모델 설치 (Docker 기반)

Ollama는 로컬에서 모델을 관리하는 플랫폼입니다. 도커(Docker)를 활용해 깔끔하게 설치해 보겠습니다.

DeepSeek-R1의 가장 가벼운 1.5b 버전 (https://ollama.com/library/deepseek-r1:1.5b)
 

deepseek-r1:1.5b

DeepSeek-R1 is a family of open reasoning models with performance approaching that of leading models, such as O3 and Gemini 2.5 Pro.

ollama.com

ollama pull deepseek-r1:1.5b
00. 도커 Ollama
01. 도커 Ollama 설치

3. 파이썬 버전 관리 및 가상환경 설정 (pyenv)

랭체인은 Python 3.10 이상이 필수입니다. 시스템 파이썬과 충돌을 막기 위해 pyenv를 사용합니다. 설정은 터미널에서 진행합니다.

Step 1. pyenv 설치 및 환경 변수 설정

brew update
brew install pyenv​
설치한 pyenv에 대한 환경변수를 설정합니다.
# .zshrc에 환경변수 추가 (한 번에 실행)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
source ~/.zshrc

 

Step 2. 프로젝트 전용 가상환경 생성

pyenv install 3.11
pyenv virtualenv 3.11 langchain-basics		## 가상환경 생성
mkdir langchain-basics && cd langchain-basics	## 폴더 만들고 경로로 이동
pyenv local langchain-basics​			## 이 폴더에 가상환경 연결
cursor .					## 커서로 실행
💡 Cursor 사용 팁: 터미널에서 cursor . 명령어로 바로 열려면,
Cursor 실행 후 [Shift + Cmd + P] -> "Shell Command: Install 'cursor' command in PATH"를 반드시 설치하세요.

4. 랭체인 연동 및 첫 테스트

대화형 실행 도구인 주피터 노트북(.ipynb) 파일을 생성하여 테스트를 진행합니다.

02. test.ipynb 생성

Step 1. 필수 패키지 설치

노트북 첫 번째 셀에서 아래 코드를 실행해 랭체인-올라마 연결 패키지를 설치합니다.

코드 형식은 python으로 선택하고 shell설정은 langchain-basics(Python 3.11.4)를 선택합니다.

pip install -q langchain-ollama

03. 패키지 설치 및 설정

그럼 관련 패키지를 설치해야 한다고 알림이 나옵니다. 그럼 Intall 합니다.

04. 패키지 설치

Step 2. 연동 코드 작성

현재 Docker에 Ollama가 설치되어있어 그냥 실행했을때는 Ollama를 찾을 수 없어서 오류가 발생합니다. 그래서 base_url와 model을 설정합니다.

from langchain_ollama import ChatOllama

# 핵심: 도커 컨테이너 서버 주소(base_url)를 지정합니다.
llm = ChatOllama(
    model="deepseek-r1:1.5b",
    base_url="http://localhost:11434" 
)

# 답변 요청 및 출력
print(llm.invoke("What is the capital of the moon?"))

 

05. 결과

 


📝 마무리

최종적으로 DeepSeek 모델로부터 정상적인 답변을 확인하며 실습 환경 구축을 마쳤습니다. 도커 환경 특성상 자원 제한으로 답변 속도가 약 2분 30초 정도로 다소 느릴 수 있으나, 완전한 독립형 로컬 LLM 서버를 가졌다는 점에 의의가 있습니다.

이제 데이터 유출이나 과금 걱정 없는 샌드박스가 마련되었습니다. 다음 포스팅에서는 외부 LLM 연동 및 더 고도화된 랭체인 활용법을 다뤄보겠습니다!

반응형

댓글