Skip to content

✍️ 필사 모드: AI-Native UI·Generative UX 2025 완전 정복: Streaming UI, Tool Use Rendering, AI SDK(Vercel)·LangChain UI·LlamaIndex.TS UI, 대화형 인터페이스, Feedback·Correction UX, 불확실성 시각화, Human-in-the-loop, 2025년 AI 제품 UX 벤치마크 — Season 6 Ep 3

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.

프롤로그 · AI가 생각하는 동안, 사용자는 무엇을 보는가

2022년 말 ChatGPT 이후 2년, AI 제품의 UX는 크게 셋으로 분화했다.

  1. Chatbot UX (2022-2023): 채팅창만 있다. "뭘 물어보지?"에서 멈춘다
  2. Agentic UX (2023-2024): Tool Use로 외부 액션 수행. UI는 여전히 채팅
  3. Generative UI (2024-2025): AI가 UI 자체를 생성. 카드·폼·차트가 대화 중 나타남

2025년의 AI 제품은 이 3세대가 혼재한다. 가장 뛰어난 제품은 Generative UI + 확실한 피드백 루프 + 신뢰 가능한 UX 의 조합.

"AI 제품의 가치는 응답 자체가 아니라, 응답을 기다리는 동안·응답 이후의 경험에서 결정된다."

이번 글은 그 설계법.

1장 · AI UX의 본질적 난점

일반 UX와 다른 4가지

(1) 응답 시간의 변동성

  • 쿼리마다 0.5초 ~ 30초 편차
  • 로딩 스피너만 보여주는 건 최악

(2) 결과의 불확실성

  • 같은 입력에 다른 출력
  • "이 답이 맞나?" 의심이 기본

(3) 환각(Hallucination) 리스크

  • 자신감 있게 틀린 정보 제시
  • 신뢰의 계층화 필요

(4) 작업의 장기성

  • Agent가 여러 단계 실행
  • 중간 단계를 어떻게 보여주느냐가 UX의 반

그래서 필요한 것

  • 점진적 피드백 (Progressive Feedback)
  • 취소·수정 가능성 (Correction Paths)
  • 출처·근거 표시 (Attribution)
  • 신뢰도 시각화 (Uncertainty Viz)
  • 사용자 제어권 (User Control)

2장 · Streaming UI — 토큰 단위 점진적 렌더

왜 Streaming?

LLM은 토큰을 하나씩 순차 생성한다. 전체 완성까지 10초 걸리는 응답을 첫 토큰부터 노출하면 체감 속도가 극적으로 빨라진다.

ChatGPT가 "답이 점점 나타나는" UX로 보여준 핵심 발견:

  • 완성 시간은 같아도 첫 토큰 노출 시간(TTFT)이 짧으면 사용자는 "빠르다"고 느낀다
  • 읽기 속도와 생성 속도가 맞으면 최적

기술 스택

(1) Server-Sent Events (SSE)

  • HTTP 한 방향 스트림
  • 가장 널리 쓰임, 브라우저 기본 지원

(2) WebSocket

  • 양방향. 복잡 Agent·협업형 앱에 적합

(3) HTTP/2·HTTP/3 Streaming

  • 다중 스트림·헤더 압축

(4) React Server Component Streaming

  • Next.js·RR7에서 내장 지원
  • <Suspense> 경계로 조각 전송

Vercel AI SDK (2024-2025 표준)

'use client';
import { useChat } from 'ai/react';

export function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat();
  return (
    <div>
      {messages.map(m => (
        <div key={m.id}>
          <strong>{m.role}:</strong> {m.content}
        </div>
      ))}
      <form onSubmit={handleSubmit}>
        <input value={input} onChange={handleInputChange} />
      </form>
    </div>
  );
}

서버:

import { openai } from '@ai-sdk/openai';
import { streamText } from 'ai';

export async function POST(req: Request) {
  const { messages } = await req.json();
  const result = streamText({ model: openai('gpt-4o'), messages });
  return result.toDataStreamResponse();
}

중요한 UX 디테일

  • 타이핑 커서 깜빡임 (생성 중 표시)
  • 부분 Markdown 렌더 — 미완성 코드 블록도 우선 렌더
  • 자동 스크롤 (사용자가 읽던 곳이 아니면 건드리지 말기)
  • 중단(Stop) 버튼 — 사용자가 멈출 수 있음
  • 재생성(Regenerate) — 원하지 않는 답 다시

3장 · Tool Use와 Generative UI 렌더링

전통적 Tool Use UX

  • LLM이 JSON 툴 호출 → 서버가 실행 → 결과 텍스트로 삽입
  • 화면에는 여전히 "텍스트"

Generative UI UX

  • 툴 결과를 UI 컴포넌트로 렌더
  • 예: "날씨 알려줘" → 날씨 카드 컴포넌트 렌더
  • 예: "비행기 검색해줘" → 항공편 리스트·필터

Vercel AI SDK - RSC 방식

// app/action.ts
'use server';
import { createAI, createStreamableUI } from 'ai/rsc';
import { WeatherCard } from './weather-card';

async function submit(input: string) {
  'use server';
  const ui = createStreamableUI(<LoadingCard />);
  (async () => {
    const weather = await fetchWeather(/* ... */);
    ui.done(<WeatherCard data={weather} />);
  })();
  return ui.value;
}

export const AI = createAI({ actions: { submit } });

사용자가 메시지를 보내면 텍스트가 아니라 React 컴포넌트가 스트림된다.

장점

  • 사용자가 상호작용 가능 (날씨 카드 클릭 → 세부)
  • 정보 밀도 훨씬 높음
  • 브랜드 일관성 (자체 디자인 시스템 사용)

단점

  • 구현 복잡도 ↑
  • 모델이 언제 어느 UI를 호출할지 Prompt 설계 필요
  • Fallback UI 필수 (에러·Tool 실패)

4장 · Tool Use 상태의 시각화

Agent가 여러 툴을 순차·병렬 호출할 때, 사용자에게 무엇을 하는지 보여줘야 한다.

3단계 시각화

(1) Planning 단계

  • "당신의 질문을 3단계로 나눠 해결하겠습니다"
  • 체크리스트 스타일

(2) Execution 단계

  • "현재 2단계 실행 중: 웹 검색"
  • 단계별 스피너, 완료 시 체크

(3) Completion 단계

  • "5개 결과를 찾았습니다"
  • 결과 요약 + 세부 펼치기

실제 패턴

ChatGPT Search / Deep Research

  • 상단에 "사용한 소스 X개"
  • 중간에 진행 상황 (검색 중·추론 중·작성 중)
  • 완료 후 출처 링크

Perplexity

  • 스텝별 타임라인 표시
  • 인라인 인용 각주 [1] [2]

Cursor

  • 파일 편집 시 diff 뷰
  • 승인·거부 버튼

Claude (Anthropic)

  • Artifacts: 긴 코드·문서를 별도 패널
  • 최근 Projects·Deep Research 기능

핵심 원칙

  • 절대 블랙박스로 두지 말 것 — 10초 이상 아무것도 안 보이면 사용자 이탈
  • 취소 가능성 — "이 Agent를 중지"
  • 단계별 미리보기 — 완료 전에도 중간 결과 노출

5장 · 불확실성·환각의 시각화

신뢰 등급 3단계

(1) 확실

  • 출처가 명확, 검증된 사실
  • 일반 텍스트

(2) 추정

  • AI의 해석·요약
  • 이탤릭 or 옅은 색
  • "AI의 해석입니다" 배지

(3) 불확실/경고

  • 최신 정보 부재 or 낮은 신뢰도
  • 경고 아이콘·색 (주황/빨강)
  • "정확성을 검증해주세요" 문구

출처 표시

인라인 각주

  • [1] [2] 스타일, 클릭 시 출처
  • Perplexity·You.com 표준

Hover Card

  • 링크 hover 시 미리보기

Source Sidebar

  • 응답 옆 별도 패널

환각 방어 UX

  • 출처 없는 주장 강조 (background 다르게)
  • "모를 수도 있음" 공식 표현: "확인되지 않았지만..."
  • 숫자·날짜·고유명사는 별도 하이라이트 (환각 잦은 영역)

6장 · 대화형 인터페이스 설계

2022-2023은 "모두가 채팅 UI". 2025년은 목적에 맞는 UX로 분화.

채팅 UI가 적합한 경우

  • 탐색적 질문 (연구·학습)
  • 맥락이 길고 누적되는 작업
  • 답이 불분명한 질문

채팅 UI가 부적합한 경우

  • 정해진 워크플로우 (폼 + AI 도움)
  • 빈번한 반복 작업 (단축키 UX)
  • 정확한 명령 (에이전트 CLI)

2025년 주요 UX 패턴

(1) Composer + Chat

  • Cursor·Claude Code 스타일
  • 에디터·파일 트리 + 사이드 AI 패널

(2) Inline AI

  • Notion AI·Linear·GitHub Copilot
  • 텍스트 커서 위치에서 / or 단축키 호출

(3) Canvas / Artifacts

  • Claude Projects, ChatGPT Canvas
  • 좌: 대화, 우: 편집 가능 산출물
  • 장문 작성·코드 작업에 최적

(4) Agent Console

  • Devin·OpenHands
  • 파일 시스템·브라우저·터미널 전부 보여줌
  • "AI와 함께 어깨 너머" 느낌

(5) Commander Palette

  • Cmd+K 스타일 (Linear·Arc·Raycast)
  • 빠른 AI 명령 입력

7장 · Feedback과 Correction 패턴

AI 제품의 성숙도는 "틀렸을 때 어떻게 고치는가" 로 결정된다.

기본 피드백 3개

  • 👍 / 👎 (thumbs up/down)
  • Regenerate (다시 시도)
  • Copy (복사)

고급 피드백

  • Edit Response — AI 답을 사용자가 수정
  • Explain why — 왜 이렇게 답했는지 AI 설명
  • Change tone — 더 간결하게·더 상세하게
  • Continue writing — 이어서 작성

Correction UX 원칙

(1) 취소·뒤로가기 쉬워야

  • Ctrl+Z (로컬), 또는 채팅 내 Edit·Delete

(2) 잘못된 부분만 고치게

  • 전체 재생성 vs 부분 수정 옵션
  • 코드라면 diff 리뷰 UI

(3) 학습을 위한 피드백

  • "뭐가 잘못됐나요?" 구조화된 피드백
  • 모델 개선·평가 데이터로 활용

대표 구현

Cursor

  • 파일 편집 시 "Accept / Reject / Reject All"
  • 부분 수락 가능

Linear Magic

  • AI 초안 생성 → 인라인 편집 → 확정
  • 필드별 수용·거부

Notion AI

  • "Continue·Improve·Shorter·Longer" 옵션
  • 블록 단위 수정

8장 · Human-in-the-loop Agent UX

왜 HITL이 중요한가

Agent가 자율적으로 결정·실행하면 위험:

  • 결제·삭제·외부 호출 = 비가역
  • 접근 권한·민감 정보
  • 환각이 실제 피해로

해법: 중요 결정에 사람의 승인을 끼워넣는다.

승인 UX 패턴

(1) Preview + Confirm

  • "이메일을 이렇게 보내려 합니다" → 확인·수정·취소
  • 기본 구조

(2) Graduated Trust

  • 처음엔 모든 액션 승인, 신뢰 쌓이면 자동화 확대
  • 사용자 선택권

(3) Policy-Gated

  • 특정 카테고리(결제·삭제·외부)만 승인 필요
  • 안전한 작업은 자율

(4) Interrupt & Resume

  • Agent가 작업 중단·사용자 개입·재개

실전 구현 (LangGraph 예)

const graph = new StateGraph(State)
  .addNode('plan', plannerNode)
  .addNode('human_approval', humanApprovalNode)  // 대기 노드
  .addNode('execute', executorNode)
  .addEdge('plan', 'human_approval')
  .addConditionalEdges('human_approval', (state) =>
    state.approved ? 'execute' : 'plan'
  );

2025 트렌드

  • Model Context Protocol (MCP) 표준화 → Claude·Cursor·Codex CLI에서 공통
  • Anthropic Computer Use (2024 10월) — 에이전트가 브라우저·데스크톱 조작, 승인 게이트 필수
  • OpenAI Operator (2025 초) — 유사 기능, 안전 장치·이상 탐지 강화

9장 · Progressive Disclosure와 AI

정보를 필요할 때 펼쳐 보여주는 전통적 UX 패턴. AI와 만나 강력해진다.

예시

Claude Artifacts

  • 대화는 가벼운 요약
  • 세부 산출물은 별도 패널 (펼쳐 보기)

Perplexity Sources

  • 응답은 본문, 각주 클릭 시 출처 확장

GitHub Copilot Chat

  • 코드 제안 시 간단 표시, 상세 설명은 "Why?" 클릭

원칙

  • 요약이 기본, 세부는 선택
  • 단계별 심화: 초보자 → 고급자 경로
  • 밀도 조절: 한 화면에 모든 것 X

10장 · 에러 UX와 복구

에러 종류

(1) Rate Limit / Usage Limit

  • "오늘 사용량이 다 됐습니다" — 명확한 안내 + 업그레이드 링크

(2) Tool Execution Failure

  • "웹 검색에 실패했습니다. 재시도하시겠습니까?"
  • 부분 성공 표시 (일부 Tool은 성공)

(3) Content Policy Violation

  • "이 요청은 처리할 수 없습니다" — 이유 간략히, 대안 제시

(4) Model/Network Timeout

  • "시간 초과. 더 간단한 질문으로 시도해주세요"

Retry UX

  • 기본 자동 retry (1-2회) + 사용자 수동
  • 모델 Fallback (GPT-4 → Claude → 소형 모델)
  • 상태 유지 (이전 대화 손실 없음)

오류 방지

  • Input Validation: 너무 짧은·모호한 입력 경고
  • Token Budget 경고: "이 긴 파일을 처리하려면..."
  • Cost Preview: "예상 비용: $0.05"

11장 · 2025년 AI 제품 UX 벤치마크

ChatGPT (OpenAI)

  • Streaming·Canvas·Search·Memory·Voice
  • 가장 넓은 기능, 다소 무거움
  • Deep Research 모드 2025 초 도입

Claude (Anthropic)

  • Artifacts로 작업 분리
  • Projects로 컨텍스트 관리
  • Style matching 톤 맞춤
  • 개발자·writer 팬덤

Perplexity

  • Answer Engine 포지셔닝
  • 인라인 출처·사이드바 소스
  • Pro Search·Focus (Academic·YouTube·Reddit)

Cursor (IDE AI)

  • Composer 다중 파일 편집
  • Tab 예측의 정확도 최고
  • shadcn 레벨의 "복사해서 쓰는" 방향

Claude Code (Anthropic CLI)

  • 터미널 기반 에이전트
  • CLAUDE.md·MCP 표준화
  • 시니어 개발자 생산성 혁신

Notion AI

  • 인라인 호출·블록 단위 조작
  • 워크스페이스 전체 검색과 결합

Linear Magic

  • 티켓 자동 작성·정리·우선순위
  • 작업 플로우와 자연스러운 통합

v0 by Vercel

  • 프롬프트 → UI 생성
  • shadcn 컴포넌트로 바로 출력
  • 디자인→코드 격차 해소

Bolt.new / Lovable

  • 프롬프트 → 풀스택 앱 자동 생성
  • 배포까지 한 번에

Granola·Otter·Fireflies

  • 회의 자동 요약·Action Item
  • 통합 플러그인으로 캘린더 연동

12장 · Generative UI 실전 — "영화 추천 챗봇"

요구사항

  • 사용자가 "SF 영화 추천해줘"
  • AI가 영화 5개 카드로 응답
  • 각 카드 클릭 시 세부 정보 (Tool 2차 호출)
  • 세부에서 "트레일러 보기" 버튼

설계

Step 1: Tool 정의

const tools = {
  searchMovies: {
    description: 'Search movies by genre/query',
    parameters: z.object({ query: z.string() }),
    execute: async ({ query }) => await tmdbSearch(query),
  },
  getMovieDetails: {
    description: 'Get movie details by id',
    parameters: z.object({ id: z.string() }),
    execute: async ({ id }) => await tmdbDetails(id),
  },
};

Step 2: UI 컴포넌트 매핑

function renderToolResult(name: string, result: any) {
  if (name === 'searchMovies') return <MovieGrid movies={result} />;
  if (name === 'getMovieDetails') return <MovieDetails data={result} />;
  return null;
}

Step 3: 스트리밍 통합

const result = streamText({
  model: openai('gpt-4o'),
  messages,
  tools,
  toolChoice: 'auto',
});

Step 4: UX 디테일

  • Tool 실행 중 Skeleton 카드
  • 이미지 Lazy load
  • 카드 Hover 시 빠른 정보 미리보기
  • "다른 추천도 보여줘" follow-up 버튼

13장 · 다음 글 예고 — Season 6 Ep 4: "Motion·애니메이션의 새 시대"

UI 요소가 생기는 방법을 논했다면 다음은 UI가 움직이는 방법. Ep 4은 2025 모션 디자인.

  • View Transitions API 실전 (Chrome·Safari·Firefox 2024-2025)
  • Motion One, Framer Motion, GSAP 비교
  • Svelte Motion·Solid Motion
  • CSS Animations 2025 (scroll-driven, timeline-scope)
  • 애니메이션의 접근성 (reduced-motion)
  • 성능·60fps·GPU·CSS Containment
  • 모바일 제스처 애니메이션 (React Spring, Motion Layout)
  • Apple/Google 디자인 언어에서 Motion의 역할
  • 한국 서비스의 Motion 문화 (토스 사례)
  • AI 생성 애니메이션 도구

"정지된 UI는 죽은 UI다. 적절한 모션이 제품을 살린다."

다음 글에서 만나자.

에필로그 · 체크리스트 12

  1. AI 응답이 Streaming으로 토큰 단위 렌더되는가?
  2. **TTFT(첫 토큰 노출)**가 1초 미만인가?
  3. Stop·Regenerate·Edit 가 모든 응답에 제공되는가?
  4. Tool Use 결과가 Generative UI 컴포넌트로 렌더되는가?
  5. Agent 실행 중 진행 상황이 시각적으로 드러나는가?
  6. 출처·신뢰 등급이 명확히 표시되는가?
  7. 민감 액션(결제·삭제)에 Human-in-the-loop 승인이 있는가?
  8. 부분 수정·재생성 UX가 제공되는가?
  9. 에러·Timeout 복구 경로가 명확한가?
  10. 모바일에서도 동일한 품질의 UX를 제공하는가?
  11. 접근성 (키보드·스크린리더·모션 감소)이 고려되는가?
  12. 피드백 데이터가 모델 개선·평가에 활용되는가?

"AI는 도구이고, UX는 그 도구를 사람이 쓸 수 있게 만든다. 최고의 AI 제품은 '마법처럼' 느껴지지만, 실제론 수많은 UX 디테일의 집합이다."

— Season 6 Ep 3, Fin.

현재 단락 (1/325)

2022년 말 ChatGPT 이후 2년, AI 제품의 UX는 크게 셋으로 분화했다.

작성 글자: 0원문 글자: 8,138작성 단락: 0/325