‘Chat’의 종말: AI 인터페이스는 왜 다형적이어야 하는가
Source: Dev.to
AI에게 단순히 말만 하도록 강요하지 마세요. 스스로 만들게 하세요.
오늘날 AI 에이전트를 구축하고 있다면, 텍스트 함정에 빠져 있을 가능성이 높습니다.
데이터베이스를 질의하고, 실시간 텔레메트리를 분석하거나, 코드를 디버깅할 수 있는 정교한 에이전트를 만들지만, 그 풍부한 지능을 채팅 버블이라는 단일 손실 포맷에 압축하도록 강요합니다.
- User: “How’s the server latency?”
- Agent: “The server latency is currently high, peaking at 2000 ms…”
이것은 UI 실패입니다.
만약 인간 엔지니어가 그 지연 스파이크를 본다면, 그들은 문단을 쓰지 않을 것입니다. 대신 라인 차트를 확인할 것입니다. 코드에 버그를 발견한다면, 채팅 창에서 설명하지 않고 고스트 텍스트를 통해 IDE에서 직접 수정할 것입니다.
우리는 AI를 챗봇으로 취급하는 것을 멈추고, 다형성 엔진으로 다루어야 합니다.
개념: Just‑in‑Time UI
최근에 Polymorphic Output이라는 시스템을 구현했습니다. 핵심 철학은 간단합니다: 입력이 무엇이든 (멀티모달)일 수 있다면, 출력도 무엇이든 될 수 있어야 합니다.
에이전트는 단순히 텍스트만 생성해서는 안 됩니다; 의도와 데이터를 생성해야 합니다. 인터페이스 레이어는 사용자의 상황에 따라 실시간으로 해당 데이터를 어떻게 렌더링할지 결정합니다.
| Context | Output |
|---|---|
| 채팅 창 | 텍스트 / 카드 |
| IDE | 고스트 텍스트 / 차이점 |
| 대시보드 | 실시간 위젯 |
| 중요 알림 | 토스트 알림 |
아키텍처
구현( [linked repo] 에서 확인할 수 있음)은 Brain과 View를 분리합니다.
1. 모달리티 감지기
단순히 return string을 반환하는 대신, 에이전트는 응답을 OutputModalityDetector를 통해 전달합니다. 이 모듈은 데이터 유형과 긴급도 두 가지를 분석합니다.
| 질문 | 결과 |
|---|---|
| 시계열 데이터인가요? | Modality.CHART |
| 표 형식 데이터인가요? | Modality.TABLE |
| 코드 수정인가요? | Modality.GHOST_TEXT |
| 긴급도가 0.9 보다 높은가? | Modality.NOTIFICATION |
2. 생성형 UI 엔진
마법이 일어나는 부분입니다. 엔진은 원시 데이터와 모달리티 힌트를 받아 UI 컴포넌트 사양을 생성합니다. 이것은 하드코딩된 React 컴포넌트가 아니라, 존재해야 할 UI를 설명하는 JSON입니다.
{
"component_type": "DashboardWidget",
"props": {
"title": "API Latency",
"value": "2000ms",
"trend": "up",
"alertLevel": "critical"
},
"style": {
"borderLeft": "4px solid #FF0000"
}
}
프론트엔드(React, Flutter 등)는 이 JSON을 읽어 컴포넌트를 렌더링하기만 하면 됩니다.
실제 시나리오
시나리오 A: DevOps 대시보드
구식 방식: “오류를 보여줘.” 라고 봇에 요청하면 로그 라인의 텍스트 목록이 반환됩니다. 직접 읽어야 합니다.
다형성 방식: “오류를 보여줘.” 라고 요청하면 에이전트가 오류 로그 스트림을 감지하고 모달리티를 DASHBOARD_WIDGET으로 전환합니다. 그러면 화면에 실시간으로 업데이트되는 빨간 테두리 위젯이 나타납니다.
시나리오 B: IDE 코파일럿
구식 방식: “이 버그를 고쳐줘.” 라고 요청하면 봇이 옆 창에 “42번째 줄을 … 로 바꿔야 합니다” 라는 답변을 보여줍니다.
다형성 방식: “이 버그를 고쳐줘.” 라고 요청하면 에이전트가 IDE 컨텍스트를 감지하고 GHOST_TEXT로 전환합니다. 해결책이 편집기에 회색 제안으로 바로 나타납니다. Tab 키를 눌러 수락합니다.
시나리오 C: 데이터 분석가
구식 방식: “상위 10명의 사용자를 알려줘.” 라고 하면 봇이 마크다운 리스트를 반환합니다.
다형성 방식: 에이전트가 표 형식 데이터를 감지하고 인터랙티브 테이블을 렌더링합니다. 헤더를 클릭해 created_at 로 정렬하거나 email 로 필터링할 수 있습니다.
스타트업 기회: Generative UI SDK
시장에서 Generative UI SDK에 대한 큰 격차가 존재합니다. 개발자들은 모든 화면, 폼, 차트를 직접 코딩하는 데 지쳤습니다. 그들은 에이전트의 출력만 받아 자동으로 완벽한 UI를 렌더링해 주는 라이브러리를 원합니다.
다음과 같이 코드를 작성하는 SDK를 상상해 보세요:
# The agent just returns data
response = agent.run("Show me sales trends")
# The SDK decides it needs a bar chart and renders it
ui.render(response)
수동 파싱이 없습니다. 특정 차트 컴포넌트를 직접 만들 필요도 없습니다. 데이터 입력 → UI 출력만.
결론
우리는 “채팅”에서 “컴퓨팅”으로 이동하고 있습니다. 채팅은 협상에 좋은 인터페이스이지만 소비에는 형편없는 인터페이스입니다. 에이전트의 지능을 텍스트 박스와 분리하면 AI의 진정한 잠재력을 열 수 있습니다: 문제에 맞게 스스로 구축되는 적응형, 다형성 인터페이스.
미래는 더 나은 챗봇이 아닙니다. 당신에게 맞춰지는 UI입니다.
Polymorphic Output Engine과 Generative UI SDK에 대한 참고 구현은 제 GitHub에서 찾을 수 있습니다.