
教程
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 属性来自定义此行为。
- src/app/page.tsx
- langgraph.json
从 UI 组件访问和与会话状态交互
您可以使用useStreamContext 钩子在 UI 组件内部访问会话状态。
向客户端组件传递额外的上下文
您可以通过向LoadExternalComponent 组件提供 meta 属性,向客户端组件传递额外的上下文。
useStreamContext 钩子在 UI 组件中访问 meta 属性。
从服务器流式传输 UI 消息
您可以在节点执行完成之前,通过使用useStream() 钩子的 onCustomEvent 回调来流式传输 UI 消息。这在 LLM 生成响应时更新 UI 组件时特别有用。
ui.push() / push_ui_message() 并指定要更新的 UI 消息的相同 ID 来推送对 UI 组件的更新。
- Python
- JS
- ui.tsx
从状态中移除 UI 消息
类似于可以通过追加 RemoveMessage 从状态中移除消息,您可以通过调用remove_ui_message / ui.delete 并指定 UI 消息的 ID 来从状态中移除 UI 消息。
- Python
- JS
了解更多
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

