Skip to main content

With the Agents SDK

Parse a data file and generate a chart with the Agents SDK.

From a File Path (Node.js)

import { fromFile } from '@graphysdk/data-import-utils/file';
import { GraphyAiSdk } from '@graphysdk/agents-sdk';

const ai = new GraphyAiSdk({
  apiKey: process.env.GRAPHY_API_KEY,
  baseUrl: 'https://agents.graphy.dev',
});

const data = await fromFile('quarterly-sales.csv');

const result = await ai.generateGraph({
  config: { data },
  userPrompt: 'line chart showing quarterly trends',
});

From a File Upload (Browser)

import { fromXLSX } from '@graphysdk/data-import-utils/xlsx';
import { GraphyAiSdk } from '@graphysdk/agents-sdk';

const ai = new GraphyAiSdk({
  apiKey: process.env.GRAPHY_API_KEY,
  baseUrl: 'https://agents.graphy.dev',
});

const input = document.querySelector<HTMLInputElement>('#file-input');

input.addEventListener('change', async () => {
  const file = input.files?.[0];
  if (!file) return;

  const buffer = await file.arrayBuffer();
  const data = await fromXLSX(buffer);

  const result = await ai.generateGraph({
    config: { data },
    userPrompt: 'chart from uploaded spreadsheet',
  });
});

With the Graph Component

Parse a data file and render it with the <Graph> component.

From a File Upload

import { useState } from 'react';
import { fromXLSX } from '@graphysdk/data-import-utils/xlsx';
import { GraphProvider, Graph } from '@graphysdk/core';
import type { GraphConfig } from '@graphysdk/core';

function ChartFromUpload() {
  const [config, setConfig] = useState<GraphConfig | null>(null);

  const handleFile = async (e: React.ChangeEvent<HTMLInputElement>) => {
    const file = e.target.files?.[0];
    if (!file) return;

    const buffer = await file.arrayBuffer();
    const data = await fromXLSX(buffer);

    setConfig({
      data,
      graphType: 'column',
    });
  };

  return (
    <div>
      <input type="file" accept=".xlsx,.xls,.ods" onChange={handleFile} />
      {config && (
        <GraphProvider config={config}>
          <Graph />
        </GraphProvider>
      )}
    </div>
  );
}

From an API Response

import { useState, useEffect } from 'react';
import { fromCSV } from '@graphysdk/data-import-utils/csv';
import { GraphProvider, Graph } from '@graphysdk/core';
import type { GraphConfig } from '@graphysdk/core';

function ChartFromAPI() {
  const [config, setConfig] = useState<GraphConfig | null>(null);

  useEffect(() => {
    fetch('/api/report.csv')
      .then((res) => res.text())
      .then((csv) => {
        const data = fromCSV(csv);
        setConfig({ data, graphType: 'line' });
      });
  }, []);

  if (!config) return <p>Loading...</p>;

  return (
    <GraphProvider config={config}>
      <Graph />
    </GraphProvider>
  );
}