Flet + FastAPI + LangChain + Gemma4
지난 2~3년 동안 ChatGPT, Claude, Gemini 등 클라우드 기반 AI 서비스를 사용해 오면서 한 가지 불편한 점이 늘 마음에 걸렸습니다. 바로 비용과 데이터 프라이버시 문제입니다.
회사 내부 문서를 요약하거나, 개인적인 일기를 정리하거나, 소스 코드를 리뷰받고 싶을 때 — 그 내용이 외부 서버로 전송된다는 사실은 분명 불안 요소입니다. 게다가 대량의 데이터를 처리하다 보면 API 비용도 무시할 수 없을 만큼 늘어납니다.
이 문제를 해결해 줄 수 있는 것이 바로 로컬 LLM(Large Language Model) 입니다. 내 PC나 서버에서 직접 모델을 구동하면 데이터가 외부로 나가지 않고, 비용도 전기료 외에는 발생하지 않습니다.
이 글에서는 2026년 현재 가장 현실적인 선택지 중 하나인 Google의 Gemma4:e4b 모델을 Ollama로 로컬에서 구동하고, LangChain으로 대화 로직을 구성하고, FastAPI로 백엔드 API를 만들고, Flet으로 아름다운 채팅 UI를 완성하는 전 과정을 단계별로 소개합니다.
이 프로젝트의 구조는 명확한 계층 분리를 지향합니다. UI, API, AI 로직, 모델 서버를 각각 독립된 레이어로 나눔으로써 유지보수성과 확장성을 높입니다.
Gemma4는 Google DeepMind가 2025년 출시한 오픈 웨이트(open-weight) 모델 패밀리입니다.
4th 세대답게 이전 세대 대비 획기적인 발전을 이루었습니다.
[Gemma4 패밀리 구성]
이 프로젝트에서는 gemma4:e4b 를 선택합니다. 4B 파라미터의 Dense 모델로, 추론 능력과 응답 속도 간의 균형이 가장 좋으며, 8~12 GB VRAM의 소비자 GPU(RTX 3070, RTX 4060 Ti 등)에서 원활하게 동작합니다.
Gemma4의 주요 특징
추론(Reasoning) 내장: 모든 크기에 걸쳐 추론 모드가 내장되어 있어, 단계적 사고 과정을 거쳐 정확한 답변을 생성합니다.
멀티모달 지원: 텍스트와 이미지를 동시에 처리할 수 있어, 화면 캡처나 사진을 첨부해 질문하는 것도 가능합니다.
128K~256K 컨텍스트: 긴 문서나 대화 히스토리를 한 번에 처리할 수 있습니다.
완전한 오픈 소스: Apache 2.0 라이선스로 상업적 활용도 자유롭습니다.
Ollama는 로컬 LLM을 가장 쉽게 실행할 수 있게 해주는 오픈소스 도구입니다.
단 두 가지 명령어( ollama pull , ollama run )만으로 수십 가지 모델을 내 PC에서 바로 실행할 수 있습니다.
내부적으로 GGUF(Georgi Gerganov Unified Format) 형태로 양자화된 모델을 사용하며, NVIDIA CUDA, Apple Metal(MLX) 등 다양한 GPU 백엔드를 자동으로 감지하여 최적화된 추론을 수행합니다.
Ollama는 localhost:11434 에 OpenAI 호환 REST API를 제공하므로, 기존 OpenAI 기반 코드를 최소한의 수정으로 마이그레이션할 수 있습니다.
LangChain은 LLM 기반 애플리케이션 개발을 위한 Python 프레임워크입니다. 2026년 현재 v1.0 안정 버전이 출시되어, LCEL(LangChain Expression Language) 기반의 체인 구성이 표준으로 자리 잡았습니다.
이 프로젝트에서는 특히 langchain-ollama 패키지(v1.1.0)를 사용합니다.
과거에는 langchain-community 패키지 안에 포함되어 있었지만, 지금은 별도 패키지로 분리되어 더욱 가볍고 명확하게 사용할 수 있습니다.
핵심 활용 기능은 다음과 같습니다.
ChatOllama: Ollama 서버와 통신하는 채팅 모델 클라이언트
ChatPromptTemplate: 시스템 프롬프트와 사용자 메시지 구성
MessagesPlaceholder: 대화 히스토리 관리
astream(): 비동기 토큰 스트리밍
지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.
오직 멤버십 구독자만 볼 수 있는,
이 작가의 특별 연재 콘텐츠