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

좋아요, 드디어 5부까지 왔네요 😄
이번 편은 말 그대로

👉 “장고(ジャンゴ)랑 실제로 붙이기 직전까지,
Open WebUI Ollama 요약 파이프라인 전체를 정리하는 마무리 편”

이라고 보시면 됩니다.
(즉, 장고 코드는 다음 시리즈 주제용으로 남겨두고, 여기서는 설계·정리에 집중합니다.)

14부까지 우리는 차근차근:

  • 맥북에 모델 엔진(Ollama) 설치하고,
  • Docker로 Open WebUI 환경을 띄우고,
  • Open WebUI Ollama에서 한국어·모델 설정을 튜닝하고,
  • Python 코드로 Open WebUI API를 직접 호출해서
    조직문화 면담 텍스트를 요약하는 것까지 해봤습니다.

이제 5부에서는 한 걸음 물러서서,

“그러면 이걸 실제 시스템에서 어떻게 쓰게 될지,
Open WebUI 기준으로 전체 파이프라인을 어떻게 잡으면 좋은지”

정리·조직화(Organizing) 하는 데 초점을 맞춥니다.

장고 코드는 다음 시리즈에서 풀고,
ここでは 장고에서 바로 가져다 쓸 수 있는 구조까지 다듬어 놓는 것이 목표예요.

1. 전체 big picture 다시 보기 – Open WebUI 요약 파이프라인

먼저, 머릿속에 그림부터 다시 한 번 박아둘게요.

Open WebUI Ollama big picture

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.py
  • interviews_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 입장에서 한 사이클은 보통 이렇게 됩니다.

  1. 면담 한 건의 전체 텍스트를 준비한다.
  2. 길이에 따라
    • 짧으면: 한 번에 Open WebUI 에 던져서 요약
    • 길면: 청크를 나눠서 부분 요약 → 메타 요약
  3. 결과를 마크다운/텍스트로 저장
  4. 나중에 장고로 옮길 때는 이 흐름을 그대로 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 를 진짜 실무에서 쓸 때
가장 많이 손보게 되는 세 가지가 있습니다.

  1. 프롬프트 (System / User Prompt)
  2. 모델 선택 (어떤 Open WebUI 모델을 쓸지)
  3. 청크 나누는 기준

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 파이프라인을 짤 수도 있습니다.

Open WebUI Ollama의 강점은
여러 모델을 한 UI/API에서 바로 갈아끼우며 테스트할 수 있다는 점이죠.

4-3. 청크 전략: Open WebUI 가 ‘숨 안 차게’ 도와주기

  • 면담 내용이 길수록:
    • 질문 단위로 나눌지,
    • 페이지 단위로 나눌지,
    • 글자 수 기준으로 단순 분할할지
  • 각 청크 요약의 길이도 통일하는 게 좋습니다.
    • 예: “각 청크는 최대 10줄 안으로 요약해줘”

이렇게 룰을 정해두면,
Open WebUI 가 마지막 메타 요약을 만들 때도
훨씬 균일한 인풋을 받을 수 있어요.

5. 모듈 구조 정리 – 장고에서 재사용하기 쉬운 Open WebUI 클라이언트 만들기

이제 진짜로 장고 직전 단계로,
코드 구조를 “모듈화”하는 관점에서 한 번 정리해볼게요.

folder structure pic

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_URL
  • OPENWEBUI_API_KEY (JWT 토큰)
  • OPENWEBUI_DEFAULT_MODEL

이 세 가지는 지금처럼 .env에 넣고,
config.py에서만 읽도록 만들면:

  • 로컬 테스트, 스테이징, 실제 서버 환경에서
    Open WebUI Ollama 설정만 다르게 가져가기도 편합니다.

6. 장고 연동 직전 체크리스트 – Open WebUI Ollama 관점에서 꼭 점검할 것들

最後に、
이제 진짜 장고로 넘어가기 전에 Open WebUI Ollama 쪽에서 반드시 확인할 항목들을 체크리스트로 정리해 볼게요.

checklist pic

✅ 체크리스트

  1. Ollama + 모델
    • ollama list 에서 쓸 모델이 제대로 보이는가?
    • MacBook Pro에서 Open WebUI Ollama로 채팅했을 때 속도·메모리는 괜찮은가?
  2. Open WebUI Ollama 컨테이너
    • docker psから open-webui 컨테이너가 Up 상태인가?
    • ENABLE_API_KEY_AUTH=true 로 켜져 있는가?
  3. Open WebUI Ollama ↔ Ollama URL
    • Open WebUI Settings에서 Ollama URL이
      http://host.docker.internal:11434 로 설정되어 있는가?
  4. JWT/API
    • 계정 화면에서 JWT 토큰을 확인했는가?
    • 이 JWT를 .envOPENWEBUI_API_KEY로 저장했는가?
    • Python 테스트 스크립트에서 Open WebUI Ollama로 요청해 봤을 때 200 OK가 나오는가?
  5. 요약 품질
    • 단일 면담 요약 결과가 보고서에 쓸 만한 수준인가?
    • 청크 요약 → 메타 요약 패턴을 적용해 봤는가?
    • Open WebUI Ollama 프롬프트 수정으로 품질이 눈에 띄게 좋아지는지 실험해 봤는가?
  6. 모듈 구조
    • openwebui_client/ 같은 형태로 코드가 깔끔하게 분리되어 있는가?
    • 나중에 장고로 옮길 때 “복붙만 해도 될 정도”로 정리되어 있는가?

이 체크리스트가 모두 YES라면,

이제 장고에서 Open WebUI Ollama를 진짜 “요약 엔진”으로 붙일 준비가 된 상태입니다 💪

다음 시리즈에서는
장고 모델/뷰/서비스/관리자 페이지에서
이 Open WebUI Ollama 요약기를 어떻게 녹여 넣을지 다뤄볼 수 있겠죠.


이걸로 1–5부 Open WebUI Ollama 프리-장고 시리즈가 한 사이클 정리됐습니다 🎉

이제 다음 단계는 정말로

  • 지금까지 만든 Open WebUI Ollama 요약 모듈을
  • Django 조직문화관리시스템 안에 끼워 넣어서,
  • “면담 상세 페이지 → 요약 생성 버튼 → Open WebUI Ollama 호출 → DB 저장”

구조를 만드는 거겠죠.

類似の投稿