gr.ChatInterface로 챗봇 빠르게 만들기

gr.ChatInterface로 챗봇 빠르게 만들기

LLM의 가장 인기 있는 활용이 챗봇이죠. Gradio의 gr.ChatInterface()는 그 챗봇 UI를 파이썬 몇 줄로 만들어주는 고수준 추상화예요. 사용자에게 보여줄 UI와 대화 히스토리 관리를 Gradio가 알아서 처리해주니까, 우리는 "메시지가 왔을 때 뭐라고 대답할지"만 함수로 정의하면 돼요. 멀티모달 챗봇이 필요하거나 더 깊은 커스터마이징이 필요해지면 그때부터 Blocks로 내려가면 돼요.

출처: https://www.gradio.app/guides/creating-a-chatbot-fast

챗 함수 정의하기

먼저 최신 Gradio를 설치해요.

$ pip install --upgrade gradio

gr.ChatInterface에 넘기는 함수는 두 개의 인자를 받아요 — 사용자가 보낸 message와 지금까지의 대화 history예요. 함수는 대답 문자열(또는 (대답, 새 히스토리) 튜플)을 반환하면 돼요.

import gradio as gr

def echo(message, history):
    return f"당신이 말했어요: {message}"

demo = gr.ChatInterface(fn=echo, title="Echo Bot")
demo.launch()

스트리밍 챗봇

대답이 길어질수록 결과가 한꺼번에 나오면 답답해요. 함수가 제너레이터(Generator)라면 Gradio가 토큰 단위로 스트리밍해서 실시간으로 대답을 보여줘요. LLM 응답을 yield로 내보내면 UI가 자연스럽게 흘러가요.

채팅 UI 커스터마이징

gr.ChatInterface 생성자에는 타이틀, 설명, 테마, 예시 질문 같은 옵션을 넣을 수 있어요. 예를 들어 examples=[...]를 주면 사용자가 클릭해서 시도해볼 수 있는 샘플 질문이 아래에 뜨고, theme로 색감을 정할 수 있어요.

멀티모달 및 추가 입력·출력

챗봇에 파일 업로드나 추가 위젯을 붙일 수도 있어요. multimodal=True로 설정하면 이미지 같은 입력을 받는 멀티모달 챗봇이 되고, additional_inputs·additional_outputs 인자로 대화 외의 부가 위젯을 이어붙일 수 있어요.

API로 쓰기

배포된 챗봇은 Gradio의 내장 API 덕분에 다른 애플리케이션에서도 쉽게 쓸 수 있어요. 예를 들어 이 챗봇을 Discord 봇으로 바꾸는 것처럼, UI를 감싸서 다른 채널에 연결할 수 있죠.

더 알아보기

gr.ChatInterface를 주요 LLM 라이브러리와 함께 쓰는 예시는 Chatinterface Examples, 더 자유로운 챗봇을 원하면 Building a Custom Chatbot with Blocks 가이드를 이어서 보세요.