UStackUStack
OpenUI icon

OpenUI

OpenUI는 생성형 UI를 위한 오픈 표준으로, 등록된 컴포넌트 기반의 구조화된 사용자 인터페이스로 AI 앱이 응답하도록 돕습니다.

OpenUI

OpenUI란 무엇인가요?

OpenUI는 “생성형 UI를 위한 오픈 표준”으로 제시됩니다. 사이트는 이를 일반 텍스트만 출력하는 대신 사용자 인터페이스로 응답할 수 있는 AI 애플리케이션을 구축하는 오픈 소스 접근 방식으로 위치짓습니다.

실제 수준에서 OpenUI는 개발자 CLI와 React 중심의 기본 요소 세트를 포함하여 컴포넌트를 정의하고 AI 앱이 UI 빌딩 블록으로 사용할 라이브러리에 등록할 수 있습니다.

주요 기능

  • 생성형 UI를 위한 오픈 소스 도구: 페이지에서 OpenUI를 AI 앱 응답을 UI 형태로 만드는 데 특화된 오픈 표준으로 설명합니다.
  • 프로젝트 생성 CLI: 예제에서 npx @openuidev/cli@latest create를 사용하여 새 앱/워크플로를 스캐폴딩하는 것을 보여줍니다.
  • 컴포넌트 정의 API: 페이지에서 defineComponent를 사용하여 컴포넌트 이름을 지정하고 입력 props(스키마 정의 포함)를 설명하는 것을 보여줍니다.
  • UI 빌딩 블록을 위한 라이브러리 등록: 예제에서 createLibrary를 사용하고 library를 내보내어 컴포넌트를 재사용 가능한 세트로 등록하는 방식을 나타냅니다.
  • 스키마 기반 props (zod): 예제에서 zod를 가져와 컴포넌트 props를 z.object(...)로 정의하며, z.string().url()을 통한 URL 유효성 검사를 포함합니다.

OpenUI 사용 방법

페이지에 나온 전형적인 설정은 CLI를 통해 npx @openuidev/cli@latest create로 프로젝트를 생성하는 것으로 시작합니다. 스캐폴딩 후 defineComponent로 UI 컴포넌트를 정의하며, 각 컴포넌트가 기대하는 prop 스키마를 포함합니다.

다음으로 createLibrary를 사용하여 해당 컴포넌트를 라이브러리 객체( library로 내보냄)에 등록합니다. 이 라이브러리는 AI 앱에서 참조되어 등록된 컴포넌트를 사용한 구조화된 UI로 응답을 렌더링할 수 있습니다.

사용 사례

  • AI 생성 UI 섹션 (예: 캐러셀): Carousel 컴포넌트와 CarouselCard 컴포넌트를 명시적 prop 스키마(제목, 이미지, CTA 레이블)로 정의하여 AI가 일관된 구조의 UI 캐러셀을 출력할 수 있습니다.
  • AI로부터의 구조화된 목록: 컴포넌트 props(카드 정의 배열, 설명 같은 선택적 필드, 유효성 검사된 URL)를 사용하여 AI 생성 UI 요소가 예상 데이터 형태와 일치하도록 합니다.
  • AI 앱을 위한 재사용 가능한 UI 컴포넌트 라이브러리 구축: 여러 UI 컴포넌트를 단일 내보내기 library로 중앙화하여 팀이 공유 “UI 어휘”를 시간에 따라 성장시킬 수 있습니다.
  • UI 렌더링을 위한 타입화된 인터페이스: zod로 스키마 유효성 검사를 적용(예: imageUrl이 URL 문자열인지 확인)하여 AI 출력으로 인한 UI 렌더링 오류 가능성을 줄입니다.

자주 묻는 질문

  • OpenUI는 React 전용인가요? 제공된 예제는 @openuidev/react-lang를 사용하고 React 스타일 컴포넌트 사용을 보여주므로 사이트 예제가 React 중심 접근을 나타내지만, 소스는 더 넓은 프레임워크 지원을 명시적으로 주장하지 않습니다.

  • OpenUI로 빌드 시작하는 방법은? 페이지에서 CLI를 사용한 npx @openuidev/cli@latest create로 시작한 후 defineComponent로 컴포넌트를 정의하고 library에 등록하는 것을 보여줍니다.

  • 이 맥락에서 “generative UI”는 무엇을 의미하나요? 사이트는 OpenUI를 AI 앱이 “당신의 UI로 응답”할 수 있게 한다고 설명하며, AI 출력이 등록된 컴포넌트로 구축된 UI 구조로 렌더링될 수 있음을 암시합니다.

  • 컴포넌트 입력은 어떻게 지정하나요? 예제에서 컴포넌트 props를 zod 스키마(예: z.object({ ... })z.string().url())로 정의합니다.

  • 컴포넌트를 사용 전에 등록해야 하나요? 예제에 createLibrarylibrary 내보내기가 포함되어 있어 AI 앱이 사용할 라이브러리에 컴포넌트를 조합하고 등록해야 함을 시사합니다.

대안

  • 자체 UI 스키마 + 렌더러 구축: 오픈 표준을 채택하는 대신 자체 JSON/UI 스키마와 구조화된 AI 출력을 컴포넌트로 변환하는 렌더러를 설계할 수 있습니다. 이는 엔드투엔드 프로토콜을 직접 정의해야 한다는 점에서 다릅니다.
  • “오픈 표준” 없이 UI 컴포넌트 스키마 라이브러리 사용: AI 출력을 유효성 검사하고 UI 컴포넌트에 매핑하는 접근이 있지만, 동일한 “생성형 UI 표준” 프레임이나 전용 CLI/워크플로를 제공하지 않을 수 있습니다.
  • 비표준화된 범용 UI 생성 프레임워크: 프롬프트에서 직접 UI를 생성하는 도구는 UI 컴포넌트를 타입화된 라이브러리로 등록하는 데 덜 초점을 맞추고 코드나 레이아웃 생성에 더 가깝습니다. 이는 워크플로를 “컴포넌트 라이브러리”에서 “프롬프트-레이아웃/코드”로 변경합니다.
OpenUI | UStack