이전에 openwebui가 무엇인지, 어떻게 실행할 수 있는지 알아봤다.
https://pleasestudy-alswldi.tistory.com/324
[OpenWebUI] LLM 웹 인터페이스
🐹 OpenWebUI란? Gradio, Streamlit 와 유사하게 AI모델 인터페이스역할을 하는 웹 기반 사용자 인터페이스 플랫폼이다.다양한 AI 모델을 로드하고 실행할 수 있는 직관적인 UI를 제공하며, 이를 통해 비
pleasestudy-alswldi.tistory.com
이제 open webui의 pipeline에 대해 알아보자.
🐹 Open WebUI Pipelines
open web ui는 워크 플로우를 생성할 수 없고 기본적으로 제공하는 ui에서 기능을 사용해야하지만, pipeline은 AI 워크플로우를 구축, 관리, 실행하기 위한 포괄적인 프레임 워크이다.
https://docs.openwebui.com/pipelines/
⚡ Pipelines | Open WebUI
If your goal is simply to add support for additional providers like Anthropic or basic filters, you likely don't need Pipelines . For those cases, Open WebUI Functions are a better fit—it's built-in, much more convenient, and easier to configure. Pipelin
docs.openwebui.com
https://github.com/open-webui/pipelines
GitHub - open-webui/pipelines: Pipelines: Versatile, UI-Agnostic OpenAI-Compatible Plugin Framework
Pipelines: Versatile, UI-Agnostic OpenAI-Compatible Plugin Framework - GitHub - open-webui/pipelines: Pipelines: Versatile, UI-Agnostic OpenAI-Compatible Plugin Framework
github.com
🐹 Pipeline 실행
원하는 동작을 실행하는 파이프라인을 만들려면 아래를 따르면 된다.
pipelines 서버는 아래 명령어로 실행시킬수 있다.
docker run -d -p 9099:9099 --add-host=host.docker.internal:host-gateway -v ./pipelines:/app/pipelines --name pipelines --restart always ghcr.io/open-webui/pipelines:main
🐹 Custom pipelin 만들기
Open WebUI의 파이프라인은 아래의 같은 주요 메서드로 구성된다.
- on_startup(self): 초기화 작업
- pipe(self, input_data): 사용자 입력을 받아 작업을 수행하고 결과를 반환
- on_shutdown(self): 종료 이벤트(shutdown event)를 처리하기 위한 콜백 함수
간단하게 응답에 minji를 붙이는 파이프라인 코드를 구성했다.
class Pipeline:
def __init__(self):
self.id = "minji_appender_pipeline"
self.name = "Minji Appender Pipeline"
def pipe(self, user_message: str, model_id: str, messages: list, body: dict):
# 사용자 입력에 ' minji'를 추가
return user_message + " minji"
async def on_startup(self):
print(f"on_startup:{__name__}")
pass
async def on_shutdown(self):
print(f"on_shutdown:{__name__}")
pass
이때 이름은 Minji Appender Pipeline에 맞춰 minji_appender_pipeline.py여야 한다!
이를 openwebui에 파이프라인으로 등록하는 방법은 크게 두가지가 있다.
1. 볼륨된 pipelines 폴더에 저장한다.
2. openwebui의 파이프라인텝에 upload Pipeline에 python코드를 등록한다.
우선 나는 pipelines폴더에 코드를 저장했다.
🐹 open web ui와 연동
관리자 패널> 설정 > 연결 > OpenAI API로 이동한다.
아래 값을 입력한다. (초기 setting)
- API URL: http://host.docker.internal:9099
- API Key: 0p3n-w3bu!
pipeline 컨테이너가 잘 띄워져있다면 관리자 패널> 설정 > 파이프라인 에서 뜬걸 확인할 수 있다.
이후 pipeline을 지정해서 쓸수있다!

🐹 troubleshooting
초기에 파이프라인이 연결되지 않는 issue가 발생했다.
connection에 아래 처럼 setting 했다.
docker run -d -p 9099:9099 --add-host=host.docker.internal:host-gateway -v pipelines:/app/pipelines --name pipelines --restart always ghcr.io/open-webui/pipelines:main
볼륨 타입 : docker 볼륨 데이터 저장 위치 : docker 관련 스토리지 (/var/lib/docker/volumes/)
이를 아래 처럼 바꿔서 실행
docker run -d -p 9099:9099 --add-host=host.docker.internal:host-gateway -v ./pipelines:/app/pipelines --name pipelines --restart always ghcr.io/open-webui/pipelines:main
볼륨 타입 : 호스트 디렉토리 데이터 저장 위치 : 호스트 파일 시스템
- 참고
- v pipelines:/app/pipelines:
- Docker가 관리하는 named volume을 생성하거나 사용
- 'pipelines'라는 이름의 볼륨을 컨테이너의 '/app/pipelines' 경로에 마운트
- 데이터는 Docker에 의해 관리되며, 호스트 시스템의 특정 위치와 직접 연결되지 않음
- v ./pipelines:/app/pipelines:
- 호스트 시스템의 현재 디렉토리 내 'pipelines' 폴더를 컨테이너의 '/app/pipelines' 경로에 마운트
- 호스트 시스템의 특정 경로와 직접 연결
- v pipelines:/app/pipelines:
'Internship' 카테고리의 다른 글
RAG 프로젝트 - Google Search agent (0) | 2025.03.13 |
---|---|
OpenWebUI & pipeline 서비스 구성 (0) | 2025.03.13 |
[OpenWebUI] LLM 웹 인터페이스 (1) | 2024.12.20 |
RAG 시스템 키워드 추출 (1) | 2024.11.27 |
vLLM : LLM 추론 프레임워크 (0) | 2024.11.26 |