AVA 4.0 实战:53 行核心代码,实现 Mini Data Agent

数据可视化 AntV · 软件开发

原创 半璇 2026-11-06 18:00 浙江 AVA 是面向 JavaScript 应用和 AI Agent 的开源数据分析与可视化框架,支持数据接入、业务语义配置、分析查询和图表生成。本文使用 AVA 执行分析与绘图,通过 AI SDK 组织工具调用,构建支持多轮分析与追问的 Mini Data Agent。 做一个 Data Agent,可以从一个很小的需求开始:给它一份销售数据,让它分析销售额下降主要来自哪些产品,并整理成一份带图表的简短报告。 Data Agent 的核心是 由执行结果驱动的分析循环 :模型提出查询,读取结果并核对,再决定是否补充分析。要让结论可核查,多次查询需要沿用统一的指标口径,图表也应直接引用实际计算结果。 AVA [1] 是面向 JavaScript 应用和 AI Agent 的开源数据分析框架,旨在 连接企业数据,以可信分析与可视化支撑业务决策 。类似 Python 生态中的 PandasAI [2] ,它支持用自然语言分析数据、生成图表。本文使用 AVA 执行分析与绘图,通过 AI SDK 组织工具调用,构建支持多轮分析与追问的 Mini Data Agent。 Data Agent 运行结构 准备数据 先准备一份 销售订单数据 [3] ,共 240 笔订单、12 个字段。下面列出前 3 笔订单的日期、产品和销售额: order_date(订单日期) product(产品) sales(折后销售额) 2025-01-01 Monitor 224.10 2025-01-02 Office Chair 680.20 2025-01-04 Monitor 2,191.20 YOUR_DATA 表示完整 CSV 解析得到的对象数组,其中 sales 为数值。 约定分析口径 接着,为 Agent 的分析约定口径:销售额按折后金额统计,月份以下单时间为准,变化额为本期减去上期。把这些约定写入语义配置,供多次查询和后续追问参考。 models: - name: data tableReference: table: data properties: description: Each row represents one order. cubes: - name: sales baseObject: data measures: - name: total_sales expression: CAST(SUM(sales) AS DOUBLE) type: DOUBLE description: Sales after discounts, calculated by summing sales. dimensions: - name: product expression: product type: VARCHAR timeDimensions: - name: order_date expression: CAST(order_date AS DATE) type: DATE properties: description: | Compare both periods using the same set of products. Change is current-period sales minus prior-period sales; negative values indicate a decline. Change rate is change divided by prior-period sales. Return null when prior-period sales are zero, indicating that the rate is not applicable. YOUR_SEMANTIC 表示这段 YAML 解析后的对象。 构建 Data Agent 数据和口径准备好后,将 AVA 的能力封装成两个工具: analyze 查询和计算数据, visualize 通过结果编号引用分析数据 并生成图表。 示例使用 Node.js 22.13.0 或更高版本 ,安装以下依赖: npm install @antv/ava@4.0.0 ai@7.0.112 @ai-sdk/openai@4.0.73 zod@4.6.7 运行前设置环境变量 OPENAI_API_KEY 和 OPENAI_MODEL ,模型需支持工具调用;使用兼容 OpenAI Chat Completions 的服务时,再设置 OPENAI_BASE_URL 。 import { AVA } from '@antv/ava' ; import { ToolLoopAgent, isStepCount,

查看原文