尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CopilotKit 声明式生成式 UI 实测指南:基于 A2UI 动态 Schema 与 LlamaIndex 的 KPI 仪表盘、饼图与状态报告验证

CopilotKit 声明式生成式 UI 实测指南:基于 A2UI 动态 Schema 与 LlamaIndex 的 KPI 仪表盘、饼图与状态报告验证 CopilotKit 声明式生成式 UI 实测指南基于 A2UI 动态 Schema 与 LlamaIndex 的 KPI 仪表盘、饼图与状态报告验证【免费下载链接】CopilotKitThe Frontend Stack for Agents Generative UI. React, Angular, Mobile, Slack, and more. Makers of the AG-UI Protocol项目地址: https://gitcode.com/GitHub_Trending/co/CopilotKit导读本指南围绕 CopilotKit 集成 LlamaIndex 的declarative-gen-uiA2UI — Dynamic Schema演示提供一份可直接执行的 QA 验证清单覆盖从聊天界面加载、KPI 仪表盘渲染、饼图/柱状图变体到状态报告卡片与状态徽章的全链路测试步骤。你将掌握声明式生成式 UI 的架构原理前端注册目录 Catalog、后端生成 A2UI 组件树、A2UI 中间件挂载 Surface以及如何在真实仓库中用 Playwright 端到端测试与源码文件逐一印证每一项验证结论。前置条件与验证准备开始执行下述 QA 步骤前需要先确认运行环境满足两个前置条件Demo 已部署且可访问declarative-gen-ui演示页面地址为/demos/declarative-gen-ui路由定义见 manifest.yaml 中declarative-gen-ui条目其前端入口为 page.tsx聊天组件为 chat.tsx。Agent 后端健康检查/api/health。在 agent_server.py 中/health通过中间件在路由解析之前短路返回保证任何情况下都可探测后端存活状态同时确认后端已挂载 A2UI 动态 Schema 路由器app.include_router(a2ui_dynamic_router, prefix/a2ui-dynamic)见 agent_server.py。测试步骤 1基础功能验证导航到 declarative-gen-ui 演示页面。验证聊天界面加载输入框占位文本为Type a message。点击Show a KPI dashboard建议提示。验证渲染出一个 A2UI Surface其中包含 Metric 组件。对应源码依据页面通过CopilotKit runtimeUrl/api/copilotkit-declarative-gen-ui agentdeclarative-gen-ui a2ui{{ catalog: myCatalog }}挂载 Provider其中runtimeUrl指向专用运行时路由a2ui.catalog传入前端注册的组件目录见 page.tsx。输入框占位文本由CopilotChat组件提供。Playwright 测试用page.getByPlaceholder(Type a message)断言其可见性且首次渲染时断言.recharts-responsive-container数量为 0即首屏不渲染任何 A2UI Surface见 declarative-gen-ui.spec.ts。测试步骤 2图表变体验证点击Pie chart — sales by region建议提示。验证渲染出一个带环形donut和图例legend的 PieChart。点击Bar chart — quarterly revenue建议提示。验证渲染出一个带标签柱形的 BarChart。图表组件的实现细节PieChart由renderers.tsx中的自定义DonutChart实现纯 SVGcirclestroke-dasharray绘制包含灰色背景圆环和每个数据切片对应的一条描边圆环并通过transform: scaleX(-1)翻转方向图例行以 45% 这类百分比结尾是校验目录正确绑定的最强视觉指纹见 renderers.tsx。BarChart基于 Recharts 的ResponsiveContainerBar 自定义AnimatedBar形状barSlideInkeyframe 渐入动画每个柱形用CHART_COLORS中的 zinc 色板着色见 renderers.tsx。两个图表组件的 Zod 定义title、description、data: { label, value }[]见 definitions.ts。E2E 断言要点PieChart 用svg circle数量轮询断言背景圆 至少 2 个切片圆并用/\b\d%/匹配图例百分比。BarChart 用.recharts-responsive-container可见性 .recharts-bar-rectangle数量断言至少 2 个柱形矩形且校验同一时刻最多只渲染一个图表 Surface防止循环渲染堆叠见 declarative-gen-ui.spec.ts。测试步骤 3状态报告验证点击Status report建议提示。验证渲染出一个包含 StatusBadge 组件的 Card。组件结构Card带标题、可选副标题和单子槽的容器组件渲染时带data-testiddeclarative-card。StatusBadge小型彩色药丸variant支持success | warning | error | info默认info渲染时带data-testiddeclarative-status-badge。E2E 通过轮询断言该 testid 数量 ≥ 1见 renderers.tsx 与 declarative-gen-ui.spec.ts。架构原理目录、后端工具与流式挂载QA 文档背后是一套完整的声明式生成式 UI链路。整个 demo 采用A2UI 动态 Schema BYOCBring Your Own Components模式核心由三部分组成1. 前端注册目录 Catalog在 catalog.ts 中通过createCatalog(myDefinitions, myRenderers, { catalogId: declarative-gen-ui-catalog, includeBasicCatalog: true })将 7 个自定义组件Card、StatusBadge、Metric、InfoRow、PrimaryButton、PieChart、BarChart另有 DataTable与内置 A2UI 基础目录Column、Row、Text、Image、Button、List、Tabs 等合并。目录 ID 是中间件与后端对齐的关键标识。2. 后端 agent 拥有 generate_a2ui 工具agents/a2ui_dynamic.py 中agent 绑定单个后端工具generate_a2ui。该工具调用二次 OpenAI 补全gpt-4.1通过tool_choice强制规划器调用内部工具_design_a2ui_surface注意刻意不命名为render_a2ui避免中间件/前端误拦截内部调用产出一个 A2UI 组件树 JSONsurfaceId/catalogId/components/data。同步的 LLM 往返被asyncio.to_thread卸载避免阻塞 uvicorn 事件循环。3. 流式 render_a2ui 工具调用与中间件挂载ag-ui/a2ui-middleware只从流式render_a2ui工具调用TOOL_CALL_START → TOOL_CALL_ARGS → TOOL_CALL_END挂载 Surface而不检查工具结果或MESSAGES_SNAPSHOT。为此专用运行时路由 route.ts 设置a2ui.injectA2UITool: true填充中间件 watch 名单并设置defaultCatalogId: declarative-gen-ui-catalog兜底目录查找。agent 侧的_A2UIRenderToolCallWorkflow.aggregate_tool_calls覆写将后端generate_a2ui结果重新发射为流式render_a2ui工具调用256 字节分块发送 args delta中间件从累积的 args 中解析components并发出a2ui-surfaceactivitycreateSurface/updateComponents见 a2ui_dynamic.py。时间预算与已知回归QA 实操提示由于渲染链路包含二次 LLM 规划往返Surface 从点击建议到完整绘制可能需要30–60 秒冷启动时尤其明显。因此所有渲染断言使用 60 秒或 90 秒预算测试整体超时 120 秒。历史上还出现过两类回归QA 验证时值得留意A2UI 渲染错误 Cannot create component root without a type曾因二次 LLM 的render_a2ui工具调用被 A2UI 中间件在防御性校验前拦截导致。修复方式是将内部规划工具改名为_design_a2ui_surface以绕过拦截。E2E 中断言该错误文本和 Catalog not found 均不可见见 declarative-gen-ui.spec.ts。KPI/状态报告在慢速部署下被跳过根因是 aimock fixtures 在一次响应中同时返回 content toolCalls前端在 A2UI 工具调用渲染前就关闭了助手轮次通过拆分 fixtures 解决4 个建议 pill 现在均可稳定测试。建议与建议提交流程说明演示页的建议提示通过 suggestions.ts 中的useConfigureSuggestions注册如 Show my sales dashboard、Team performance 等QA 文档中使用的 4 个 pill 文案Show a KPI dashboard、Pie chart — sales by region、Bar chart — quarterly revenue、Status report由 D5 探针与 E2E 测试逐字断言。图表类型引导主要靠 agent 系统提示词a2ui_dynamic.py 中的SYSTEM_PROMPT只要响应适合更丰富的视觉表达仪表盘、状态报告、KPI 汇总、饼/环形占比图、柱状对比图就调用generate_a2ui聊天回复保持一句话让 UI 说话。快速验证清单可直接复制使用将 QA 文档中的复选框步骤汇总为一条可执行的验收路径[ ] 前置Demo 可访问/api/health 返回健康 [ ] 1. 打开 /demos/declarative-gen-ui输入框占位符为 Type a message [ ] 1.1 点击 Show a KPI dashboard → 出现含 Metric 组件的 A2UI Surface [ ] 2.1 点击 Pie chart — sales by region → 出现环形饼图 百分比图例 [ ] 2.2 点击 Bar chart — quarterly revenue → 出现带标签柱形的柱状图 [ ] 3.1 点击 Status report → 出现含 StatusBadge 的 Card若任一渲染断言长时间不满足优先排查顺序后端/health→ 专用运行时injectA2UITool与defaultCatalogId配置 → agent 系统提示中的目录 ID 与组件描述 → 二次 LLM 规划器是否返回了含components的 JSON。【免费下载链接】CopilotKitThe Frontend Stack for Agents Generative UI. React, Angular, Mobile, Slack, and more. Makers of the AG-UI Protocol项目地址: https://gitcode.com/GitHub_Trending/co/CopilotKit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表