thesysdev/openui
요약
OpenUI는 JSON보다 최대 67% 더 토큰 효율적인 스트리밍 우선 언어인 OpenUI Lang을 기반으로 하는 풀스택 Generative UI 프레임워크입니다. 이 프레임워크는 모델 출력을 단순한 텍스트가 아닌 구조화된 컴포넌트로 파싱하고, 이를 React 환경에서 점진적으로 렌더링할 수 있게 합니다. 핵심 기능으로는 내장 컴포넌트 라이브러리를 활용하여 시스템 프롬프트를 생성하고, 스트리밍 과정 중에도 UI를 실시간으로 업데이트하는 것이 포함됩니다. OpenUI는 채팅 인터페이스뿐만 아니라 보조자(assistant)나 코필로터와 같은 다양한 상호작용 제품 플로우에 적용 가능하며, 개발자들이 쉽게 시작할 수 있도록 CLI 도구와 실행 가능한 예제들을 제공합니다.
핵심 포인트
- **OpenUI Lang:** 구조화된 UI 생성을 위해 설계된 컴팩트하고 스트리밍 우선의 언어입니다. 모델 출력을 텍스트가 아닌 컴포넌트로 처리하여 효율성을 극대화합니다.
- **구조화된 스트리밍 렌더링:** LLM이 토큰을 생성하는 동안, OpenUI는 도착하는 데이터를 파싱하여 React UI를 점진적으로 업데이트(Streaming Renderer)할 수 있습니다.
- **컴포넌트 기반 프롬프트 엔지니어링:** 시스템 프롬프트를 작성할 때 미리 정의된 컴포넌트 라이브러리를 활용하여 모델의 출력을 제어하고 구조화합니다.
- **토큰 효율성 및 성능 우위:** 기존 JSON 기반 스트리밍 방식 대비 최대 67% 적은 토큰을 사용하여 비용과 속도 면에서 큰 이점을 제공합니다.
- **풀스택 지원:** React 런타임, CLI 도구, 그리고 다양한 컴포넌트 라이브러리를 포함하여 엔드투엔드 Generative UI 앱 개발을 지원합니다.
OpenUI 는 JSON 보다 최대 67% 더 토큰 효율적인, 컴팩트한 스트리밍 우선 언어, 내장 컴포넌트 라이브러리가 포함된 React 런타임, 그리고 즉시 사용할 수 있는 채팅 인터페이스를 갖춘 풀스택 Generative UI 프레임워크입니다.
문서 · 플레이그라운드 · 샘플 채팅 앱 · 디스코드 · 기여 · 행동 강령 · 보안 · 라이선스
OpenUI 의 중심에는 OpenUI Lang이 있습니다: 모델 생성 UI 를 위한 컴팩트한 스트리밍 우선 언어입니다. 모델 출력을 텍스트로만 취급하는 대신, OpenUI 는 컴포넌트를 정의하고 해당 컴포넌트 라이브러리에서 프롬프트 지시어를 생성하며, 모델이 스트림을 보내는 동안 구조화된 UI 를 렌더링할 수 있게 합니다.
핵심 기능:
OpenUI Lang— 구조화된 UI 생성을 위한 스트리밍 출력에 최적화된 컴팩트한 언어.내장 컴포넌트 라이브러리— 차트, 폼, 테이블, 레이아웃 등 — 즉시 사용 또는 확장 가능.컴포넌트 라이브러리 기반 프롬프트 생성— 허용된 컴포넌트에서 직접 모델 지시어를 생성합니다.스트리밍 렌더러— 토큰이 도착할 때 React 에서 점진적으로 모델 출력을 파싱하고 렌더링합니다.채팅 및 앱 표면— 보조자, 코필로터, 그리고 더 넓은 상호작용 제품 플로우에 동일한 기반을 사용합니다.
npx @openuidev/cli@latest create --name genui-chat-app
cd genui-chat-app
echo "OPENAI_API_KEY=sk-your-key-here" > .env
...
이것이 OpenUI 를 시작하는 가장 빠른 방법입니다. 스프로크된 앱은 스트리밍, 내장 UI, OpenUI Lang 지원이 포함된 엔드 투 엔드 시작점을 제공합니다.
이는 무엇을 제공하는지:
OpenUI Lang 지원- 앱 플로우에 구조화된 UI 생성을 통합합니다.라이브러리 기반 프롬프트- 허용된 컴포넌트 세트에서 지시어를 생성합니다.스트리밍 지원- 출력 도착 시 UI 를 점진적으로 업데이트합니다.작동하는 앱 기반- 수동으로 모든 것을 연결하는 대신 준비된 실행 가능한 예제부터 시작합니다.
컴포넌트는 모델이 생성할 내용을 정의합니다.
flowchart LR
A["Component Library"] --> B["System Prompt"]
B --> C["LLM"]
...
- 컴포넌트 라이브러리를 정의하거나 재사용합니다.
- 해당 라이브러리에서 시스템 프롬프트를 생성합니다.
- 해당 프롬프트를 모델에 전송합니다.
- 클라이언트로 OpenUI Lang 출력을 스트림으로 반환합니다.
- 렌더러로 점진적으로 출력을 렌더링합니다.
플레이그라운드에서 직접 시도해 보세요 — 기본 컴포넌트 라이브러리로 UI 를 실시간으로 생성하세요.
| Package | Description |
|---|---|
@openuidev/react-lang | |
| Core runtime — component definitions, parser, renderer, prompt generation | |
@openuidev/react-headless | |
| Headless chat state, streaming adapters, message format converters | |
@openuidev/react-ui | |
| Prebuilt chat layouts and two built-in component libraries | |
@openuidev/cli | |
| CLI for scaffolding apps and generating system prompts |
npm install @openuidev/react-lang @openuidev/react-ui
OpenUI Lang 은 구조화되고 스트리밍 가능한 모델 생성 UI 를 위한 것입니다.
스트리밍 출력— 토큰이 도착할 때마다 UI 를 점진적으로 방출합니다.토큰 효율성— 동등한 JSON 과 비교하여 최대 67% 적은 토큰 사용 (벤치마크 참조).제어된 렌더링— 정의하고 등록한 컴포넌트만 출력에 제한합니다.타이핑된 컴포넌트 계약— Zod 스키마로 컴포넌트 속성과 구조를 사전에 정의합니다.
tiktoken(GPT-5 인코더) 로 측정. OpenUI Lang 과 두 가지 JSON 기반 스트리밍 형식을 7 개 UI 시나리오에서 비교:
| Scenario | Vercel JSON-Render | Thesys C1 JSON | OpenUI Lang | vs Vercel | vs C1 |
|---|---|---|---|---|---|
| simple-table | 340 | 357 | 148 | -56.5% | -58.5% |
| ... | TOTAL | ||||
| 10180 | |||||
| 9948 | |||||
| 4800 | |||||
| -52.8% | |||||
| -51.7% |
benchmarks/ 에서 방법론과 재현 단계를 확인.
상세한 문서는 openui.com 에서 이용 가능합니다.
openui/
├── packages/
│ ├── react-lang/ # Core runtime (parser, renderer, prompt generation)
...
시작할 좋은 곳:
- openui.com 전체 문서
examples/openui-chat
동작하는 앱
CONTRIBUTING.md
기여를 원한다면
- Discord — 질문하고 구축 중인 것을 공유하세요
- GitHub Issues — 버그 보고하거나 기능 요청
기여는 환영합니다. CONTRIBUTING.md
에서 기여 가이드와 참여 방법을 확인.
OpenUI 는 Agent Skill 을 제공하여 AI 코딩 어시스턴트 (Claude Code, Codex, Cursor, Copilot 등) 가 OpenUI Lang 을 사용하여 Generative UI 앱을 스프로크, 빌드, 디버깅할 수 있도록 도와줍니다.
# With the skills CLI (works across all agents)
npx skills add thesysdev/openui --skill openui
# Manual — copy into your project
...
이 스킬은 컴포넌트 라이브러리 설계, OpenUI Lang 문법, 시스템 프롬프트 생성, 렌더너, SDK 패키지와 변형된 LLM 출력 디버깅을 포함합니다.
이 프로젝트는 LICENSE 에서 설명된 조건에 따라 이용 가능합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending TypeScript (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기