SuperAPI AI 工具集

integrate-atlas-chat

智能体与模型

查看项目

更新于 10-15 14:41

技能介绍

用途

该技能用于在 Dune 应用中为 Atlas Agent 添加一个流式聊天界面。当需要构建与 Atlas Agent 交互的聊天 UI 时使用,技能会接管 useAtlasChat 的集成代码,避免手动编写。

主要能力

技能按顺序执行以下步骤:

  1. 理解应用:在修改前先读取 package.json(检测包管理器与已有依赖)以及 src/App.tsx 或等价入口组件,了解当前结构。
  2. 安装依赖:根据应用的包管理器安装 dune-industrial-components 及所需 peer 依赖 @sinclair/typebox、ajv、ajv-formats。
  3. 构建聊天组件:替换或创建主 App.tsx,生成完整聊天 UI。

生成的聊天组件具备以下特性:

  • 从 @cognite/dune-industrial-components/atlas-agent/react 导入 useAtlasChat 与 ChatMessage 类型。
  • 通过 @cognite/dune 的 useDune() 获取 SDK,加载期间传入 null(client: isLoading ? null : sdk)。
  • 使用 msg.isStreaming 实时显示流式文本,并带闪烁光标。
  • 显示工具调用事件:当 progress 以 "Executing:" 开头时,以醒目方式渲染(例如 ⚙ 图标加等宽字体工具名)。
  • 流式完成后,将每条助手消息的 toolCalls 以可展开卡片形式显示在消息下方。
  • 流式期间显示 "Stop" 按钮,绑定 abort()。
  • "New chat" 按钮绑定 reset()。
  • 新消息与进度更新时自动滚动到底部。
  • 文本域自动调整高度(最高约 120px),Enter 提交,Shift+Enter 换行。

使用方式

技能以命令形式调用,需传入 Agent 的外部 ID 作为参数:

/integrate-atlas-chat $ARGUMENTS

其中 $ARGUMENTS 为 Agent external ID。

依赖安装命令按包管理器区分:

pnpm → pnpm add "github:cognitedata/dune-industrial-components#semver:*" @sinclair/typebox ajv ajv-formats
npm  → npm install "github:cognitedata/dune-industrial-components#semver:*" @sinclair/typebox ajv ajv-formats
yarn → yarn add "github:cognitedata/dune-industrial-components#semver:*" @sinclair/typebox ajv ajv-formats

核心 hook API:

import { useAtlasChat } from "@cognite/dune-industrial-components/atlas-agent/react";
import type { ChatMessage } from "@cognite/dune-industrial-components/atlas-agent/react";

const { messages, send, isStreaming, progress, error, reset, abort } = useAtlasChat({
  client: isLoading ? null : sdk,   // null-safe — hook waits for a real client
  agentExternalId: "...",
  tools?: AtlasTool[],              // optional client-side tools
});

消息字段说明:

  • messages[n].role — "user" | "assistant"
  • messages[n].text — 完整文本(通过 isStreaming 逐块流式输出)
  • messages[n].isStreaming — 该消息正在写入时为 true
  • messages[n].toolCalls — 响应完成后为 ToolCall[](客户端与服务端工具,按调用顺序)
  • progress — 例如 "Agent thinking" 或 "Executing: get_timeseries"
  • isStreaming — 整个响应期间为 true

工具调用展示模式:

// During streaming — show as a distinct "tool call" bubble above the message
{isStreaming && progress?.startsWith("Executing:") && (
  <div>⚙ {progress}</div>
)}

// After response — show tool calls on the assistant message
{msg.toolCalls?.map((tc, i) => (
  <ToolResult key={i} name={tc.name} output={tc.output} details={tc.details} />
))}

Python 工具(可选)

如果 Agent 配置了 Python 工具(CDF 配置中类型为 runPythonCode),可运行 setup-python-tools 技能以添加基于 Pyodide 的客户端执行:

/setup-python-tools $ARGUMENTS

该技能会安装 pyodide、设置 usePyodideRuntime,并通过 pythonRuntime 将运行时接入 useAtlasChat。库会自动从 Agent 配置获取 Python 工具代码,无需 PythonToolConfig 条目。若 Agent 仅使用内置或常规客户端工具,则无需此步骤。

适用场景

适用于在 Dune 应用中为 Atlas Agent 构建聊天界面的场景,尤其是需要流式输出、工具调用可视化、中止与重置控制等交互能力时。

限制

技能要求先读取并理解现有应用结构后再修改。Python 工具支持为可选步骤,仅在 Agent 配置了 runPythonCode 类型工具时需要。关于收费、价格、平台支持范围等信息,资料暂未提供。