Open WebUI Ollama 요약 파이프라인 설계: 장고 연동 직전까지 싹 다 정리

좋아요, 드디어 5부까지 왔네요 😄
이번 편은 말 그대로
👉 “장고(ジャンゴ)랑 실제로 붙이기 직전까지,
Open WebUI Ollama 요약 파이프라인 전체를 정리하는 마무리 편”
이라고 보시면 됩니다.
(즉, 장고 코드는 다음 시리즈 주제용으로 남겨두고, 여기서는 설계·정리에 집중합니다.)
- 맥북에 모델 엔진(Ollama) 설치하고,
- Docker로 Open WebUI 환경을 띄우고,
- Open WebUI Ollama에서 한국어·모델 설정을 튜닝하고,
- Python 코드로 Open WebUI API를 직접 호출해서
조직문화 면담 텍스트를 요약하는 것까지 해봤습니다.
이제 5부에서는 한 걸음 물러서서,
“그러면 이걸 실제 시스템에서 어떻게 쓰게 될지,
Open WebUI 기준으로 전체 파이프라인을 어떻게 잡으면 좋은지”
を 정리·조직화(Organizing) 하는 데 초점을 맞춥니다.
장고 코드는 다음 시리즈에서 풀고,
ここでは 장고에서 바로 가져다 쓸 수 있는 구조까지 다듬어 놓는 것이 목표예요.
1. 전체 big picture 다시 보기 – Open WebUI 요약 파이프라인
먼저, 머릿속에 그림부터 다시 한 번 박아둘게요.

1-1. 지금 상태의 구조
지금 우리가 만든 구조를 한 줄로 요약하면:
[면담 텍스트 파일/데이터]
→ (Python 스크립트)
→ [Open WebUI Ollama API]
→ [Ollama LLM 모델]
→ (요약 결과)
→ [로컬 파일/DB에 저장]여기서 Open WebUI Ollama는
- LLM 모델을 직접 돌리는 Ollama와,
- 그 위에 올라간 웹 UI + API 허브를 합쳐서 부르는 개념이고,
Python 스크립트는 사실상
- “Open WebUI 에게 요약을 맡기고 결과만 챙겨오는 로직”
이라고 생각하시면 됩니다.
나중에 장고가 들어오면, 구조가 이렇게 바뀌겠죠
[장고 웹앱 / 사내 시스템]
↕ (HTTP)
[Open WebUI API]
↕
[Ollama LLM 모델들]즉, 지금 Python에서 하던 일을
나중에는 장고 서비스/뷰/커맨드가 대신 하게 될 거라서,
Open WebUI 를 기준으로 한 파이프라인 설계가 굉장히 중요します。
2. 데이터 준비 단계 – 조직문화 면담을 Open WebUI 에 먹이기 좋게 정리하기
Open WebUI 가 아무리 좋아도,
입력 데이터가 엉망이면 요약 결과도 엉망이에요.
그래서 データ準備를 파이프라인의 첫 단계로 잡는 게 좋습니다.
2-1. 폴더/파일 구조 예시
로컬 기준 예를 들어보면:
project_root/
├─ data/
│ ├─ interviews_raw/
│ │ ├─ 2025-01-10_기획실_A001.txt
│ │ ├─ 2025-01-10_재무실_A002.txt
│ │ └─ ...
│ └─ interviews_summary/
│ ├─ 2025-01-10_기획실_A001_summary.md
│ ├─ 2025-01-10_재무실_A002_summary.md
│ └─ ...
└─ openwebui_summarizer.pyinterviews_raw/→ Open WebUI Ollama에 던질 원본 면담 텍스트interviews_summary/→ Open WebUI Ollama로부터 받은 요약 결과 저장용
장고로 가기 전까지는
이렇게 파일 단위 파이프라인으로 Open WebUI를 테스트하는 게 편합니다.
2-2. 텍스트를 Open WebUI 가 좋아하는 형태로 전처리
- 불필요한 메타(예: 녹취 번호, 타임스탬프 등) 제거
- 질문/답변 구분을 명확히:
[질문] ...,[답변] ...등의 태그로 구분
- 비속어, 실명 등은 사내 규정에 맞춰 최소한의 마스킹
이렇게 정리해 두면,
Open WebUI에게 던질 때 프롬프트가 훨씬 깔끔해지고
요약 품질도 좋아집니다.
3. 요약 파이프라인 설계 – Open WebUI 기준 “1회 처리” 정의하기
이제 “1번 요약 처리”를 어떻게 정의할지 정리해 볼게요.
Open WebUI Ollama 입장에서 한 사이클은 보통 이렇게 됩니다.
- 면담 한 건의 전체 텍스트를 준비한다.
- 길이에 따라
- 짧으면: 한 번에 Open WebUI 에 던져서 요약
- 길면: 청크를 나눠서 부분 요약 → 메타 요약
- 결과를 마크다운/텍스트로 저장
- 나중에 장고로 옮길 때는 이 흐름을 그대로 Model/Service로 옮김
3-1. 단일 요약 사이클의 의사 코드
for raw_file in interviews_raw:
텍스트 읽기
if len(텍스트) < THRESHOLD:
summary = Open WebUI Ollama 한 번 호출로 요약
else:
chunks = 청크 나누기
partial_summaries = [Open WebUI Ollama로 각 청크 요약]
summary = Open WebUI Ollama로 partial_summaries를 메타 요약
summary를 interviews_summary/ 아래에 저장여기서 핵심은 Open WebUI 는 오직 “요약” 역할만 と、
파일 입출력·폴더 구조·에러 처리 같은 건 전부 Python에서 책임지는 구조라는 점입니다.
이렇게 해 두면,
나중에 장고로 옮길 때는 “파일 입출력 → DB 입출력” 정도만 바뀌고
Open WebUI 관련 로직은 거의 손댈 필요가 없습니다.
4. 품질을 좌우하는 핵심 – Open WebUI 프롬프트·모델·청크 전략
Open WebUI 를 진짜 실무에서 쓸 때
가장 많이 손보게 되는 세 가지가 있습니다.
- 프롬프트 (System / User Prompt)
- 모델 선택 (어떤 Open WebUI 모델을 쓸지)
- 청크 나누는 기준
4-1. 프롬프트: Open WebUI 를 “조직문화 전문가”로 만들어주기
조직문화 면담 요약이라면,
Open WebUI 에게 이런 역할을 쥐어주는 게 좋습니다:
- “너는 기업의 조문화 전문가이자 요약 전문가다.”
- “긍정적 요소 / 우려 요소 / 시사점으로 나눠라.”
- “실제 보고서에 붙일 수 있는 문어체 존댓말로 작성해라.”
- “면담자의 비판적인 표현도 중립적인 분석 언어로 바꿔라.”
이런 지시를 시스템 프롬프트에 박아두면
Open WebUI 가 매번 같은 관점과 톤으로 요약하게 만들 수 있어요.
4-2. 모델 선택: Open WebUI 에서 어떤 모델로 요약할까?
- 코딩·논리적 구조화가 중요하면:
qwen2.5:7b - 한국어 자연스러운 표현·글쓰기:
exaone3.5:7.8b또는 Llama3 Korean 계열 - 두 모델을 번갈아 써보고,
- “문장 품질은 EXAONE이 좋고, 구조화는 Qwen이 좋다”
→ 그럼 구조화는 Qwen으로, 최종 문장 다듬기는 EXAONE으로
두 단계 Open WebUI Ollama 파이프라인을 짤 수도 있습니다.
- “문장 품질은 EXAONE이 좋고, 구조화는 Qwen이 좋다”
Open WebUI Ollama의 강점은
여러 모델을 한 UI/API에서 바로 갈아끼우며 테스트할 수 있다는 점이죠.
4-3. 청크 전략: Open WebUI 가 ‘숨 안 차게’ 도와주기
- 면담 내용이 길수록:
- 질문 단위로 나눌지,
- 페이지 단위로 나눌지,
- 글자 수 기준으로 단순 분할할지
- 각 청크 요약의 길이도 통일하는 게 좋습니다.
- 예: “각 청크는 최대 10줄 안으로 요약해줘”
이렇게 룰을 정해두면,
Open WebUI 가 마지막 메타 요약을 만들 때도
훨씬 균일한 인풋을 받을 수 있어요.
5. 모듈 구조 정리 – 장고에서 재사용하기 쉬운 Open WebUI 클라이언트 만들기
이제 진짜로 장고 직전 단계로,
코드 구조를 “모듈화”하는 관점에서 한 번 정리해볼게요.

5-1. 추천 Python 모듈 구조
project_root/
├─ openwebui_client/
│ ├─ __init__.py
│ ├─ config.py # BASE_URL, API_KEY, DEFAULT_MODEL 읽기
│ ├─ client.py # 저수준 /api/chat/completions 호출
│ ├─ summarizer.py # 조문화 면담 요약 전용 클래스
│ └─ chunking.py # 텍스트 청크/메타 요약 유틸
└─ scripts/
└─ summarize_batch.py # 폴더 안 모든 면담 파일 일괄 요약 실행- 나중에 장고에서
openwebui_client폴더를
그대로apps/core/llm/openwebui같은 위치로 옮겨서 쓸 수 있습니다. - こうすれば Open WebUI Ollama 관련 코드는 한 군데에 모여 있고,
장고 쪽에서는 오직 “서비스를 호출한다”는 느낌만 가지면 됩니다.
5-2. 설정은 전부 .env + config.py로 빼두기
OPENWEBUI_BASE_URLOPENWEBUI_API_KEY(JWT 토큰)OPENWEBUI_DEFAULT_MODEL
이 세 가지는 지금처럼 .env에 넣고,config.py에서만 읽도록 만들면:
- 로컬 테스트, 스테이징, 실제 서버 환경에서
Open WebUI Ollama 설정만 다르게 가져가기도 편합니다.
6. 장고 연동 직전 체크리스트 – Open WebUI Ollama 관점에서 꼭 점검할 것들
最後に、
이제 진짜 장고로 넘어가기 전에 Open WebUI Ollama 쪽에서 반드시 확인할 항목들을 체크리스트로 정리해 볼게요.

✅ 체크리스트
- Ollama + 모델
ollama list에서 쓸 모델이 제대로 보이는가?- MacBook Pro에서 Open WebUI Ollama로 채팅했을 때 속도·메모리는 괜찮은가?
- Open WebUI Ollama 컨테이너
docker psからopen-webui컨테이너가 Up 상태인가?ENABLE_API_KEY_AUTH=true로 켜져 있는가?
- Open WebUI Ollama ↔ Ollama URL
- Open WebUI Settings에서 Ollama URL이
http://host.docker.internal:11434로 설정되어 있는가?
- Open WebUI Settings에서 Ollama URL이
- JWT/API
- 계정 화면에서 JWT 토큰을 확인했는가?
- 이 JWT를
.envにOPENWEBUI_API_KEY로 저장했는가? - Python 테스트 스크립트에서 Open WebUI Ollama로 요청해 봤을 때 200 OK가 나오는가?
- 요약 품질
- 단일 면담 요약 결과가 보고서에 쓸 만한 수준인가?
- 청크 요약 → 메타 요약 패턴을 적용해 봤는가?
- Open WebUI Ollama 프롬프트 수정으로 품질이 눈에 띄게 좋아지는지 실험해 봤는가?
- 모듈 구조
openwebui_client/같은 형태로 코드가 깔끔하게 분리되어 있는가?- 나중에 장고로 옮길 때 “복붙만 해도 될 정도”로 정리되어 있는가?
이 체크리스트가 모두 YES라면,
이제 장고에서 Open WebUI Ollama를 진짜 “요약 엔진”으로 붙일 준비가 된 상태입니다 💪
다음 시리즈에서는
장고 모델/뷰/서비스/관리자 페이지에서
이 Open WebUI Ollama 요약기를 어떻게 녹여 넣을지 다뤄볼 수 있겠죠.
이걸로 1–5부 Open WebUI Ollama 프리-장고 시리즈가 한 사이클 정리됐습니다 🎉
이제 다음 단계는 정말로
- 지금까지 만든 Open WebUI Ollama 요약 모듈을
- Django 조직문화관리시스템 안에 끼워 넣어서,
- “면담 상세 페이지 → 요약 생성 버튼 → Open WebUI Ollama 호출 → DB 저장”
구조를 만드는 거겠죠.



