⛑️ 이벤트: Open WebUI에서 __event_emitter__
와 __event_call__
사용법
Open WebUI의 플러그인 아키텍처는 단순히 입력을 처리하고 출력을 생성하는 것을 넘어, UI와 사용자와의 실시간 상호작용을 가능하게 합니다. Tools, Functions, 및 Pipes를 더욱 동적으로 만들기 위해 Open WebUI는 __event_emitter__
및 __event_call__
헬퍼를 통해 내장된 이벤트 시스템을 제공합니다.
이 가이드는 이벤트가 무엇인지, 코드에서 이를 트리거하는 방법, 그리고 활용 가능한 이벤트 종류들의 전체 카탈로그에 대해 설명합니다 (단순히 "input"
이상의 내용을 포함).
🌊 이벤트란 무엇인가?
이벤트는 백엔드 코드(Tool 또는 Function)에서 웹 UI로 전송되는 실시간 알림 또는 상호작용 요청입니다. 이를 통해 채팅을 업데이트하거나, 알림을 표시하거나, 확인을 요청하거나, UI 플로우를 실행하는 등의 작업이 가능합니다.
- 이벤트는
__event_emitter__
헬퍼를 사용하여 단방향 업데이트로 전송되며, 사용자 입력이나 응답(예: 확인, 입력 등)이 필요한 경우__event_call__
를 사용합니다.
비유:
이벤트를 플러그인이 트리거할 수 있는 푸시 알림과 모달 대화상자로 생각해 보세요. 이를 통해 채팅 경험을 더욱 풍부하고 상호작용적으로 만들 수 있습니다.
🧰 기본 사용법
이벤트 보내기
Tool 또는 Function 내부 어디에서나 다음과 같이 이벤트를 트리거할 수 있습니다:
await __event_emitter__(
{
"type": "status", # 아래 이벤트 유형 목록 참조
"data": {
"description": "처리가 시작되었습니다!",
"done": False,
"hidden": False,
},
}
)
필드 chat_id
나 message_id
를 수동으로 추가할 필요는 없습니다—이들은 Open WebUI에서 자동으로 처리됩니다.
상호작용 이벤트
사용자가 응답할 때까지 실행을 일시 중단해야 하는 경우(예: 확인/취소 대화상자, 코드 실행 또는 입력)는 __event_call__
을 사용하세요:
result = await __event_call__(
{
"type": "input", # 또는 "confirmation", "execute"
"data": {
"title": "비밀번호를 입력하십시오",
"message": "이 작업을 위해 비밀번호가 필요합니다",
"placeholder": "비밀번호를 여기에 입력하세요",
},
}
)
# result는 사용자의 입력값을 포함합니다