🤔 우리만의 ChatGPT가 왜 필요할까
ChatGPT나 Claude는 편하지만 — 내가 입력한 대화가 그 회사 서버를 거칩니다. 계약서 초안, 고객 명단, 내부 매출표를 그대로 붙여 넣기엔 찜찜하죠. '셀프호스팅 챗 UI'는 ChatGPT와 똑같이 생긴 화면을 우리 PC나 회사 서버에 직접 띄워 — 대화가 외부로 새지 않게 만드는 도구입니다. 쉽게 말해 — 남의 가게에서 일 보던 걸 우리 사무실에 똑같은 창구로 하나 차리는 셈입니다. 화면은 ChatGPT 그대로, 주인만 우리로 바뀝니다.
- 기밀 안전 — 계약서·고객정보·코드가 우리 서버 안에서만 오감
- 비용 통제 — 누가 얼마나 썼는지 한곳에서 관리, 여러 AI를 한 계정으로
- 맞춤 — 회사 규칙·말투를 미리 심어둔 전용 비서로 세팅 가능
🖥️ '셀프호스팅'이 정확히 뭔가요
셀프호스팅(self-hosting)은 — 남의 서비스에 가입해 쓰는 대신, 그 프로그램을 내 컴퓨터나 회사 서버에 직접 설치해 운영하는 방식입니다. '월세 사무실'이 아니라 '우리 소유 사무실'이라고 보면 됩니다. 의료·법률·금융처럼 데이터 반출이 곤란한 곳, 사내 규정상 외부 AI가 막힌 곳에서 'AI를 안 쓰는' 게 아니라 '우리 안에서 안전하게 쓰는' 길이 열립니다.
⭐ Open WebUI — 가장 인기 있는 선택지
Open WebUI는 셀프호스팅 챗 UI 중 가장 널리 쓰이는 도구입니다(GitHub 스타 대략 14만 개 — 이 분야 압도적 1위). 설치하면 ChatGPT와 거의 똑같은 화면이 우리 서버에 뜨고, 비개발자는 그냥 채팅창에 입력만 하면 됩니다.
- 문서 RAG 내장 — 사내 PDF·워드를 올려두면 그 내용을 근거로 답해줌
- 웹검색 연동 — 최신 정보가 필요할 때 검색 결과를 끌어와 답에 반영(구글·Brave·DuckDuckGo 등 여러 제공자 지원)
- 로컬 모델(Ollama)·외부 AI(Claude·GPT) 둘 다 연결 — 한 화면에서 골라 씀
- 권한 관리(RBAC) — 부서·직급별로 쓸 수 있는 기능을 나눠줌
👥 LibreChat — 팀·여러 AI를 한곳에
LibreChat은 또 다른 인기 셀프호스팅 챗 UI입니다. 핵심 강점은 — 여러 AI 제공사(OpenAI·Anthropic·Google·Azure·AWS 등)를 한 화면에 모아두고, 대화 도중에도 모델을 바꿔 가며 쓸 수 있다는 점입니다.
- 멀티 AI — 'GPT로 초안 → 같은 대화창에서 Claude로 검토'처럼 갈아타기
- 팀 기능이 탄탄 — 멀티유저 로그인, 부서별 권한, 회사 통합 로그인(SSO) 지원
- MIT 오픈소스 — 무료로 설치·수정해 회사 입맛대로 운영
- 대화 검색·프리셋 등 업무용 편의 기능 다수
🦙 Ollama — 인터넷 없이도 도는 로컬 두뇌
여기까지는 '화면'만 우리 것이었습니다. 답을 만드는 두뇌까지 우리 안에 두려면 — 로컬 모델을 돌리는 Ollama를 함께 씁니다. Ollama는 내 컴퓨터 안에서 AI 모델을 실행해 주는 무료 프로그램으로, 13회차 OpenClaw처럼 오픈소스 생태계의 대표 주자입니다. Open WebUI 화면 + 로컬 Ollama 모델을 묶으면 질문도 답도 전부 우리 PC 안에서 끝나 — 데이터가 회사 밖으로 한 글자도 안 나가는 완전 오프라인 사내 AI가 됩니다. 다만 로컬 모델은 내 PC 성능만큼만 똑똑해 GPT·Claude보다는 떨어집니다 — 평소엔 외부 AI, 기밀 작업만 로컬 모델로 골라 쓰는 게 현실적입니다.
# Ollama 공식 앱(.app) 설치 후, 한국어 모델 받기
# ⚠️ macOS는 Homebrew formula 말고 공식 앱(.app)으로 — formula엔 추론 엔진이 빠져 있어요
ollama pull qwen2.5:7b
# 받은 모델 확인
ollama list
📚 사내 문서로 답하게 만들기 (RAG·웹검색)
셀프호스팅의 진짜 활용은 '우리 자료로 답하는 비서'입니다. 사내 규정집 PDF, 제품 매뉴얼, 회의록을 올려두면 — AI가 그 안을 뒤져 근거 있는 답을 줍니다. 신입사원이 '연차 며칠 남았는지 어디서 보나요?'를 물으면 규정집에서 찾아 답하는 식이죠.
- 채팅창에 PDF·워드 파일을 끌어다 놓기(또는 + 버튼으로 업로드)
- 질문하기 — '이 문서 기준으로, 환불 규정 요약해줘'
- AI가 문서 속 해당 부분을 찾아 인용하며 답함
- 최신 정보가 필요하면 웹검색 기능을 켜 — 검색 결과까지 반영
🚀 시작하기 — 비개발자용 가장 쉬운 길
# 설치는 명령어 한 줄 — 가장 쉬운 건 pip, 회사 서버엔 Docker 추천
pip install open-webui
open-webui serve
# 브라우저에서 접속: http://localhost:8080
- 위 두 줄을 터미널에 붙여넣기 → 잠시 기다리면 설치 완료
- 브라우저 주소창에 localhost:8080 입력 → 우리만의 ChatGPT 화면 등장
- 첫 화면에서 관리자 계정(이메일·비밀번호) 만들기
- 설정에서 외부 AI(Claude·GPT) API 키를 넣거나, Ollama 로컬 모델 연결
- 이제 평소 ChatGPT처럼 대화 시작 — 단, 이 대화는 우리 안에 머뭅니다
🎨 후반부 — Dify로 노코드 AI 앱 만들기
전반부의 셀프호스팅 챗 UI가 '우리만의 ChatGPT 화면'이었다면, 후반부는 한 걸음 더 나아가 — 코드 한 줄 없이 마우스로 블록을 끌어다 놓아 '나만의 AI 챗봇·자동 처리 앱'을 만들고 실제로 게시까지 해봅니다. 11회차 지도에서 ⑦번 칸 '노코드 AI 앱 빌더'에 찍어둔 Dify가 그 주인공입니다. 6회차 Make의 '블록을 잇는 감각'과 11회차의 'RAG(우리 문서로 답하기)'가 여기서 한 화면에 합쳐집니다.
🧭 Dify가 뭔가요 — 한 문장 정의
Dify는 '코딩 없이 AI 앱을 만드는 노코드 플랫폼'입니다. AI 모델(Claude·GPT·Gemini 등)이라는 엔진은 그대로 두고, 그 위에 챗봇·자동 처리 흐름·문서 Q&A 같은 '완성된 앱'을 시각적으로 조립하게 해줍니다. 오픈소스라 무료로 내 서버에 띄울 수도, 가입만 하면 바로 쓰는 클라우드로도 쓸 수 있어요. (대략 GitHub 스타 13만 개 이상으로, 이 분야에서 가장 인기 있는 도구 중 하나입니다.)
- 비주얼 캔버스 — 블록을 끌어다 선으로 이으면 그게 곧 AI 앱 (Make와 똑 닮은 방식)
- 모델 자유 — Claude·GPT·Gemini·로컬 모델까지 골라 끼움 (특정 회사에 안 묶임 = 11회차의 '멀티-프로바이더')
- 지식(Knowledge) — 내 PDF·문서를 올리면 그걸 근거로 답하는 RAG가 클릭 몇 번에 완성
- 도구 마켓 — 웹 검색·이미지 생성 등 외부 기능을 플러그인으로 연결
- 게시 — 만든 앱을 바로 웹 링크·위젯·API로 내보내 실제 서비스처럼 사용
🆚 Make·OpenClaw·Claude Code와 어떻게 다른가
- Make(6회차) — 여러 앱을 잇는 '업무 자동화'가 본업. AI는 중간 한 블록
- OpenClaw(13회차) — 메신저로 말 걸면 알아서 일하는 '개인 AI 비서(에이전트)'
- Claude Code(7·8회차) — 터미널에서 진짜 '코드·서비스'를 짜는 개발 도구
- Dify(이번 회차) — AI가 핵심인 '앱(챗봇·문서봇·AI 워크플로)'을 코드 없이 만들어 게시하는 빌더
🚪 시작하는 두 갈래 — 클라우드 vs 셀프호스팅
- 클라우드(dify.ai) — 가입 즉시 사용. 무료 Sandbox 플랜이 있어 연습용으로 충분 (설치 필요 없음)
- 셀프호스팅(Community Edition) — 내 서버/PC에 직접 설치. 완전 무료·오픈소스, 데이터가 밖으로 안 나감 (11회차 Open WebUI처럼 Docker로 실행)
- 주의 — 셀프호스팅도 'AI 모델'은 따로 연결해야 함. Dify는 빈 그릇일 뿐 — Claude/OpenAI API 키를 넣거나 11회차 Ollama(로컬 모델)를 붙여야 답함
- 고민되면 — 배우는 지금은 클라우드, 기밀이 중요한 사내 도입 단계에서 셀프호스팅 검토
# 셀프호스팅 — 공식 저장소를 받아 Docker로 한 번에 실행
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
# 브라우저에서 http://localhost 접속 → 첫 가입자가 관리자
# (Docker Desktop이 먼저 깔려 있어야 합니다 — 5회차 참고)
🧱 4가지 앱 유형 — 뭘 고를까
- 챗봇(Chatbot) — 대화형. 사내 FAQ봇·상담봇처럼 '주고받는' 앱. 가장 흔함
- 에이전트(Agent) — 챗봇 + 스스로 도구 사용. '검색해서 표로 정리해줘'처럼 판단·도구 호출이 필요할 때 (13회차 에이전트 개념의 노코드판)
- 워크플로(Workflow) — 입력→처리→출력의 '한 방향 작업'. 글 1편을 받아 요약·번역·검수해 뱉기 같은 자동 처리
- 텍스트 생성(Text Generator) — 대화 없이 양식만. '제목 넣으면 블로그 초안' 같은 단발 생성기
- 고르는 법 — '대화'가 핵심이면 챗봇, '검색·도구까지' 원하면 에이전트, 정해진 순서로 '가공'이면 워크플로. 일단 챗봇으로 시작해 필요해지면 갈아타면 됨
🚀 실습 ① — 첫 챗봇 5분 컷
- 상단 메뉴 Studio → 우측 '+ 앱 만들기' → 'Chatbot' 선택, 이름 입력(예: 우리팀 회의록 도우미)
- 화면 우상단 '모델' 선택에서 쓸 AI 고르기(예: Claude 또는 GPT) — 안 보이면 설정에서 API 키 먼저 연결
- 가운데 '지시문(Instructions)' 칸에 역할·톤·규칙 작성 — 1회차의 '역할+맥락+규칙+형식' 그대로
- 오른쪽 미리보기 창에 질문을 쳐서 바로 테스트 (저장·배포 전에 여기서 다듬기)
- 마음에 들면 우상단 파란 '게시(Publish)' 버튼 → 웹 링크가 생성돼 동료에게 공유
# '지시문' 칸 예시 (시스템 프롬프트)
너는 우리 팀의 회의록 정리 도우미다.
- 사용자가 회의 메모를 붙여넣으면 아래 형식으로 정리한다.
- 톤: 군더더기 없이 간결하게
- 출력 형식:
1) 한 줄 요약
2) 결정사항 (불릿)
3) 할 일 — 담당자/기한 표시
4) 다음 회의 안건 후보
- 불명확한 부분은 추측하지 말고 [확인 필요]로 표시
📚 실습 ② — 지식(RAG) 붙여 '우리 문서로 답하기'
- 상단 '지식(Knowledge)' 탭 → '지식 만들기' → PDF·워드·노션·웹페이지 URL 업로드
- 청크(쪼개는 단위)·임베딩(의미 좌표 변환) 설정은 일단 '자동/기본'으로 두고 처리 시작
- 처리가 끝나면 챗봇 화면으로 돌아가 '컨텍스트(Context)'에 방금 만든 지식을 연결
- 이제 질문하면 — AI가 문서에서 관련 부분을 찾아 그걸 근거로 답하고 출처까지 표시
- 테스트 — 문서에만 있는 내용을 물어보고, 엉뚱하게 지어내지 않는지(환각) 확인
⚙️ 그 '설정값'이 무슨 뜻인가 — 버튼별 한 줄 풀이
지식을 만들 때 보이는 옵션들은 어려워 보이지만, 알고 보면 '문서를 어떻게 잘라 어떻게 찾을까'를 정하는 손잡이입니다. 11회차에서 코드로 봤던 그 단계들이 — Dify·Open WebUI에선 화면의 이 버튼들로 바뀐 것뿐입니다. 평소엔 기본값으로 두고, 답이 부실할 때만 골라 만지면 됩니다.
- 청크 크기(Chunk size) — 문서를 몇 글자 단위로 자를지(Dify 기본 1000자). 11회차의 '문서 자르기'가 이 칸. 길면 맥락이 풍부하지만 핵심이 묻히고, 짧으면 정확하지만 앞뒤 맥락이 끊깁니다
- 청크 오버랩(Overlap) — 자른 조각끼리 겹쳐 두는 글자 수(Dify 기본 200자). 문장이 경계에서 뚝 잘려 의미가 사라지는 걸 막는 '이음매'
- 임베딩 모델(Embedding) — 11회차의 '글을 의미 좌표로 바꾸기' 그 단계. 보통 기본값으로 충분하고, 한국어가 많은 문서면 한국어를 잘 다루는 모델로 바꾸면 검색이 정확해집니다
- 검색 개수 top-k(Top K) — 질문 하나에 관련 조각을 몇 개 찾아와 AI에게 줄지(Dify 기본 3개). 11회차의 '비슷한 것 N개 찾기'. 적으면 핵심만, 늘리면 더 폭넓게 참고
- 점수 임계값(Score threshold) — '이 정도는 비슷해야 답에 쓴다'는 합격선(Dify 기본 0.5). 높이면 엄격(관련 없는 건 버림), 낮추면 너그럽게(놓친 내용까지 끌어옴)
🔧 답이 엉뚱·부실할 때 — 만질 순서 (가장 중요)
봇이 동문서답하거나 '문서에 있는데 못 찾는' 일은 흔합니다. 코드를 고치는 게 아니라, 위에서 본 버튼을 정해진 순서로 하나씩 바꿔 보며 좋아지는 지점을 찾으면 됩니다. 한 번에 하나만 바꿔야 — 뭐가 효과였는지 알 수 있습니다.
- 답이 두루뭉술하거나 핵심을 비껴가면 → 청크 크기를 줄여 보기(예: 1000 → 500). 조각이 잘게 쪼개져 핵심만 콕 집기 쉬워집니다
- 문서엔 분명 있는데 안 가져오면 → top-k(검색 개수)를 늘려 보기(예: 3 → 6). 더 많은 조각을 후보로 훑습니다
- 그래도 관련 없는 내용이 섞이면 → 점수 임계값을 살짝 올려 엄격하게(예: 0.5 → 0.6). 어설픈 매칭을 걸러냅니다
- 특정 문서가 통째로 안 잡히면 → 그 문서가 제대로 처리됐는지 지식 화면에서 상태를 확인하고, 깨졌으면 지우고 재업로드
- 마지막으로 '근거 우선' 규칙을 지시문에 한 줄 추가 — '제공된 문서에 근거가 없으면 추측하지 말고 「자료에 없습니다」라고 답하라'. 지어내기(환각)가 눈에 띄게 줄어듭니다
🚧 자주 막히는 함정과 대처
- 스캔·사진 PDF(글자가 이미지) — 화면엔 글자로 보여도 컴퓨터엔 '그림'이라 한 글자도 못 읽습니다. 텍스트로 다시 저장하거나 OCR(글자 인식)을 거친 파일로 올리세요. 업로드 후 '검색 테스트'에 아무것도 안 잡히면 십중팔구 이 경우
- 표가 많은 문서 — 줄글 위주로 잘리면서 표의 행·열 관계가 흐트러져 숫자를 엉뚱하게 답할 수 있습니다. 핵심 표는 별도 요약(텍스트)으로 만들어 함께 올리면 한결 정확해집니다
- 문서를 고쳐도 봇이 옛 내용으로 답함 — 지식은 '올린 시점'으로 굳어 있어, 원본만 바꿔선 안 바뀝니다. 그 문서를 지우고 새 파일로 다시 올려 재처리(재인덱싱)해야 반영됩니다
- 파일이 너무 큼/형식이 특이함 — 한 번에 안 올라가면 장(章) 단위로 쪼개 올리고, 잘 안 읽히는 형식은 PDF나 텍스트 등 무난한 형식으로 바꿔 올리는 게 안전합니다
🔗 워크플로·도구 연결 & 게시 — 진짜 앱처럼
- 워크플로 — 챗봇이 익숙해지면 Make처럼 블록을 잇되, 주인공은 'AI 처리 단계'. 예: 문의 → AI '긴급/일반' 분류(분기) → 각기 다른 처리 (6회차 Router 감각)
- 도구 연결 — 웹 검색·이미지 생성 등 내장 도구를 마켓플레이스에서 추가해 에이전트가 골라 쓰게
- 게시 — ① 공유 가능한 웹 채팅 링크 ② 홈페이지에 붙이는 임베드 위젯 ③ API (코딩 0)
- API — 8회차에서 본 그 'API'. Make나 다른 서비스가 이 주소로 우리 앱을 호출 (Dify가 백엔드 역할까지 대신). 예: 6회차 Make가 새 문의 감지 → Dify 상담봇 API 호출 → 답변을 메일로 발송
🛡️ 운영 & 비용 — 사고 안 나게
- 클라우드 비용 — 무료 Sandbox(대략 메시지 크레딧 200·앱 5개·지식문서 50개·1인)로 연습 충분. 본격은 Professional 약 $59/월·Team 약 $159/월 (한도는 가입 화면에서 확인)
- 셀프호스팅 비용 — 소프트웨어는 무료, 대신 서버 운영비 + 연결한 AI API 사용료(종량제)는 별도
- 로그·모니터링(LLMOps) — 누가 뭘 물었고 AI가 어떻게 답했는지 기록을 보며 프롬프트 개선
- 보안 — API 키는 Dify 설정에만 보관(채팅·문서에 노출 금지), 회사 문서는 가능하면 셀프호스팅, 외부 공개 챗봇엔 사용량 한도 + 민감정보 안 넣기 ('폭주 과금' 방지)
📌 14회차 핵심
- 전반부 — 셀프호스팅 챗 UI(Open WebUI·LibreChat)로 '대화가 안 새는 우리만의 ChatGPT'. 두뇌는 외부 AI 또는 로컬 Ollama.
- 후반부 Dify = 코딩 없이 AI 챗봇·워크플로 앱을 만들어 '게시'까지 하는 노코드 빌더.
- 11회차 RAG가 여기선 '파일 올리고 클릭'으로 완성 — 우리 문서로 답하는 봇이 5분.
- 유형은 일단 '챗봇'으로 시작, 도구·판단이 필요하면 '에이전트'로.
- API로 내보내면 Make·다른 서비스와 레고처럼 결합 — Dify는 'AI 두뇌' 담당.
- 무료로 충분히 연습하되, 공개 배포 전 비용·보안·사용량 한도를 꼭 점검.