Generative UI - Vercel AI SDK

콘텐츠

GPT-3.5+와 같은 언어 모델을 사용한 함수 호출의 도입은, 언어 모델이 렌더링할 사용자 정의 대화형 사용자 인터페이스를 결정하는 길을 열었습니다.

React Server Components 및 Server Actions를 활용하여, AI SDK는 ai/rsc 패키지를 통해 인터페이스 렌더링 기능을 원활하게 통합합니다. ai/rsc를 사용하여 함수 호출을 지원하지 않는 모델을 JSON과 같은 구조화된 출력을 흉내내거나 직접 스트리밍하여 출력할 수 있습니다.

예시

검색 환경 내에서 구성 요소를 직접 렌더링하여 사용자가 말로 표현할 수 없는 것을 더 많이 볼 수 있도록 하세요.

사용자가 에이전트 실행을 해석하기 쉽도록 만들어서, 그들이 뒷면의 마법을 계속해서 이해할 수 있도록 도와주세요.

AI and UI State

AI SDK는 AIStateUIState라는 두 가지 새로운 개념을 소개합니다. 이러한 상태는 서버 측 AI 작업과 애플리케이션에서 렌더링된 클라이언트 측 UI 간의 명확한 역할 분리를 도입합니다. 이 분리로 개발자는 AI 상태를 안전하게 유지할 수 있으며, 시스템 프롬프트나 기타 메타데이터와 같은 것을 포함할 수 있습니다. 한편 UI 상태는 React Server Components가 효율적으로 클라이언트로 스트리밍되도록 설계되었습니다.

AIState

AIState는 LLM이 읽어야 하는 모든 컨텍스트의 JSON 표현입니다. 채팅 앱의 경우, AIState는 일반적으로 사용자와 어시스턴트 간의 텍스트 대화 기록을 저장합니다. 실제로, 각 메시지의 createdAt와 같은 다른 값 및 메타 정보를 저장하는 데에도 사용될 수 있습니다. AIState는 기본적으로 서버와 클라이언트 모두에서 액세스/수정할 수 있습니다.

UIState

UIState는 애플리케이션이 UI를 표시하는 데 사용하는 것입니다. 이는 완전한 클라이언트 측 상태로 (useState와 매우 유사) LLM에 의해 반환된 데이터 및 UI 요소를 유지할 수 있습니다. 이 상태는 무엇이든 될 수 있지만 서버에서는 액세스할 수 없습니다.

설정

레시피

생성된 UI에서 서버로부터 업데이트 요청하기

많은 경우, 렌더링하는 인터페이스는 서버로부터 업데이트를 요청해야 할 수 있습니다. 예를 들어, 날씨 앱은 최신 날씨 데이터를 매 5분마다 요청해야 하거나, 버튼을 누르면 검색을 실행해야 할 수도 있습니다. 이를 위해 UI 구성 요소에 서버 액션을 전달하고 필요할 때 호출할 수 있습니다.

예를 들어, createAI에서 handleUserMessage 액션이 등록되어 있다면, 다음과 같이 중첩된 서버 액션을 정의할 수 있습니다:

그런 다음 WeatherCard 컴포넌트에서는 최신 날씨 데이터를 로드하고 클라이언트 UI를 업데이트하기 위해 refreshAction 함수를 onClick 이벤트 핸들러, 효과 또는 폴링과 같은 방법으로 호출할 수 있습니다.

클라이언트 구성 요소에서 AI 상태 업데이트

AI 상태는 언어 모델에 제공된 대화의 맥락을 나타내며 종종 채팅 메시지의 배열입니다. 때로는 사용자가 양식을 작성하거나 슬라이더와 같은 UI 요소와 상호 작용하는 경우와 같이 새 정보로 언어 모델의 상태를 업데이트해야 할 수 있습니다. useAIState 훅을 사용하여 클라이언트에서 AI 상태를 변경할 수 있습니다.

아래 예시에서는 사용자가 주식의 주식을 구매할 수 있는 슬라이더가 있습니다. 사용자가 슬라이더를 변경하면 새 정보로 AI 상태를 업데이트합니다.

중첩 UI 스트리밍

AI SDK가 제공하는 강력한 기능 중 하나는 다른 UI 구성 요소 내부에서 UI 구성 요소를 스트리밍할 수 있는 능력입니다. 이를 통해 작은 재사용 가능한 구성 요소로부터 구성된 복잡한 UI를 만들 수 있습니다. 아래 예시에서는 historyChart를 스트리밍 가능한 속성으로 StockCard 구성 요소에 전달합니다. StockCardhistoryChart를 스트리밍하여 렌더링할 수 있으며, 서버가 새 데이터로 응답할 때 자동으로 업데이트됩니다.

2024년 3월 2일에 마지막으로 업데이트되었습니다

요약하다
GPT-3.5+를 활용한 함수 호출 기능 도입으로 AI SDK는 사용자 정의 대화형 UI를 제공하며, React Server Components와 Server Actions을 활용하여 인터페이스 렌더링 기능을 통합합니다. AIState와 UIState를 도입하여 AI 작업과 클라이언트 UI를 분리하고, UIState는 React Server Components를 효율적으로 클라이언트로 스트리밍할 수 있습니다. 서버에서 UI 업데이트 요청 및 AI 상태 업데이트 등 다양한 기능을 제공하며, AI SDK는 2024년 3월 2일에 최신 업데이트를 받았습니다.