
튜토리얼
1. UI 컴포넌트 정의 및 구성
먼저 첫 번째 UI 컴포넌트를 생성합니다. 각 컴포넌트에는 그래프 코드에서 컴포넌트를 참조하는 데 사용될 고유 식별자를 제공해야 합니다.src/agent/ui.tsx
langgraph.json 구성에서 UI 컴포넌트를 정의합니다:
ui 섹션은 그래프에서 사용할 UI 컴포넌트를 가리킵니다. 기본적으로 그래프 이름과 동일한 키를 사용하는 것을 권장하지만, 원하는 방식으로 컴포넌트를 분할할 수 있습니다. 자세한 내용은 UI 컴포넌트의 네임스페이스 사용자 정의를 참조하세요.
LangSmith는 UI 컴포넌트 코드와 스타일을 자동으로 번들링하고 LoadExternalComponent 컴포넌트로 로드할 수 있는 외부 자산으로 제공합니다. react 및 react-dom과 같은 일부 종속성은 번들에서 자동으로 제외됩니다.
CSS와 Tailwind 4.x도 기본적으로 지원되므로, UI 컴포넌트에서 Tailwind 클래스와 shadcn/ui를 자유롭게 사용할 수 있습니다.
- src/agent/ui.tsx
- src/agent/styles.css
2. 그래프에서 UI 컴포넌트 전송
- Python
- JS
src/agent.py
3. React 애플리케이션에서 UI 요소 처리
클라이언트 측에서useStream() 및 LoadExternalComponent를 사용하여 UI 요소를 표시할 수 있습니다.
src/app/page.tsx
LoadExternalComponent는 LangSmith에서 UI 컴포넌트의 JS와 CSS를 가져와 shadow DOM에서 렌더링하여, 애플리케이션의 나머지 부분과 스타일 격리를 보장합니다.
사용 가이드
클라이언트 측에서 커스텀 컴포넌트 제공
이미 클라이언트 애플리케이션에 컴포넌트가 로드되어 있는 경우, LangSmith에서 UI 코드를 가져오지 않고 직접 렌더링할 컴포넌트 맵을 제공할 수 있습니다.컴포넌트 로딩 중 로딩 UI 표시
컴포넌트가 로드되는 동안 렌더링할 대체 UI를 제공할 수 있습니다.UI 컴포넌트의 네임스페이스 사용자 정의
기본적으로LoadExternalComponent는 useStream() 훅의 assistantId를 사용하여 UI 컴포넌트 코드를 가져옵니다. LoadExternalComponent 컴포넌트에 namespace prop을 제공하여 이를 사용자 정의할 수 있습니다.
- src/app/page.tsx
- langgraph.json
UI 컴포넌트에서 스레드 상태 액세스 및 상호 작용
useStreamContext 훅을 사용하여 UI 컴포넌트 내부에서 스레드 상태에 액세스할 수 있습니다.
클라이언트 컴포넌트에 추가 컨텍스트 전달
LoadExternalComponent 컴포넌트에 meta prop을 제공하여 클라이언트 컴포넌트에 추가 컨텍스트를 전달할 수 있습니다.
useStreamContext 훅을 사용하여 UI 컴포넌트에서 meta prop에 액세스할 수 있습니다.
서버에서 UI 메시지 스트리밍
useStream() 훅의 onCustomEvent 콜백을 사용하여 노드 실행이 완료되기 전에 UI 메시지를 스트리밍할 수 있습니다. 이는 LLM이 응답을 생성하는 동안 UI 컴포넌트를 업데이트할 때 특히 유용합니다.
ui.push() / push_ui_message()를 호출하여 UI 컴포넌트에 업데이트를 푸시할 수 있습니다.
- Python
- JS
- ui.tsx
상태에서 UI 메시지 제거
RemoveMessage를 추가하여 상태에서 메시지를 제거할 수 있는 것처럼, UI 메시지의 ID로remove_ui_message / ui.delete를 호출하여 상태에서 UI 메시지를 제거할 수 있습니다.
- Python
- JS
더 알아보기
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.