@dbx-工具/基因
运行 Databricks Genie 从节点或 AppKit 代码转换为原始信件快照或 键入事件流。 AppKit 请求保持其半用户( OBO) 身份,独立呼叫者使用Databricks SDK认证链,以及 两种模式都支持取消.
快开始
import { chat } from "@dbx-tools/genie";
const spaceId = process.env.DATABRICKS_GENIE_SPACE_ID!;
for await (const event of chat.genieEventChat(spaceId, "Top stores by revenue?")) {
console.log(event.type, event);
}
纯精灵计划与事件探测器帮助者 @dbx-工具/共享基因。 。 。 .
驾驶员:
- 默认流出 Genie Agent 模式 API,包括推理, SQL 调用, 查询输出,以及合成的答案.
- 开始新的 Genie 对话或继续已有的对话
conversationId。 。 。 . - 项目代理 模式 响应项目到现有的
GenieMessage简介 和语义-活动合同,包括声明标识和可视化 附录. - 装入代理模式对口项目并将其重新组合到一个
GenieMessage每回转历史播放. - 保留对话 API 投票驱动程序
agentMode: false作为 自动流前倒置FEATURE_DISABLED或预览切换 错误. - 将原始的 Genie 信件转换成语义事件用于思考文本, 生成 SQL,行数,最终结果,以及出错.
- 在 AppKit 请求中调用时保存 AppKit OCO 认证, 但也工作 从带有普通 Databricks SDK 认证的独立脚本.
- 接受 SDK
Context网络AbortSignal取消路由处理器和 CLI工具. - 获取 Genie 空间元数据和启动问题供 UI 推荐 .
选择基因集成
使用本地 AppKit 的 Genie 插件进行独立的 Genie 聊天体验 。 这个
提供命名的空间别名、 SSE 状态更新、 对话
历史重放、 查询结果获取、 OBO 执行和 AppKit UI
GenieChat 组件.
当一个Genie空间拥有谈话和回答时使用直接Genie. 使用 @dbx-tools/appkit-mastra (英语) 当监督代理人必须 将Genie与其他工具,Mastra内存,批准,或工作流程相结合. 使用 当自定义后端代码需要下层流时, 直接使用此软件包 :
- 您想要一个低级的同位素执行器, 而不是 AppKit HTTP 路径 .
- 您想要原始消息快照或可被输入的正态事件流 输入 Mastra 写入事件、日志、测试或自定义 SSE 端点.
- 你需要散发快照 并只发出新观察到的思维 SQL,行, 结果和出错事件.
- 您想要将 Genie 的回答和代理侧图规划、 语句合并 行取取,或自在的持久线程存储 .
- 你需要同一个司机 在AppKit和OBO Auth以及外面工作 使用普通 Databricks SDK 认证的脚本的 AppKit.
处理语义事件
import { chat } from "@dbx-tools/genie";
for await (const event of chat.genieEventChat(spaceId, "Top stores by revenue?")) {
switch (event.type) {
case "thinking":
console.log(event.thought_type, event.text);
break;
case "query":
console.log(event.sql);
break;
case "rows":
console.log(event.row_count);
break;
case "result":
console.log(event.status);
break;
}
}
chat.genieEventChat() 覆盖下层快照流并生成 a
GenieChatEvent 工会。 用于 SSE 流、日志管道和工具写入器
消费者关心进步和SQL而不只是终端的事件
留言.
流出原始信件快照
import { chat } from "@dbx-tools/genie";
for await (const message of chat.genieChat(spaceId, "Top stores by revenue?")) {
renderSnapshot(message);
}
chat.genieChat() 启动代理模式响应或继续已有
对话框,项目 SSE 输出到 GenieMessage 示意图、过滤器
相同的连续有效载荷, 并在终端响应后停止。 设定
agentMode: false 来强制对话 API 启动/创建/获取消息
投票流程。 使用它,当你想运行自己的 diffing 或坚持
电线形状正常 代理模式返回内含的查询输出为 Markdown 和
复制查询输出 statement_id 在匹配的查询附件上
数据砖供应一.
继续谈话
let conversationId: string | undefined;
for (const prompt of prompts) {
for await (const event of chat.genieEventChat(spaceId, prompt, { conversationId })) {
if ("conversation_id" in event && event.conversation_id) {
conversationId = event.conversation_id;
}
}
}
呼叫者通过读取对话的ID来保持多回合状态 消息或事件,并传递到下一个转折。 这在无国籍状态下有效 路由处理器、耐用线程商店和一次性脚本。 AppKit- Mastra 仓库 和它的线 并传递回来,当一个谈话继续.
解决工作空间客户端
import { createWorkspaceClient } from "@databricks/appkit";
import { chat } from "@dbx-tools/genie";
await chat.genieEventChat(spaceId, content, {
workspaceClient: createWorkspaceClient(),
});
客户解析命令 :
options.workspaceClient。 。 。 .- AppKit 执行语句客户端, 当存在时 .
createWorkspaceClient()使用 AppKit 的普通 Databricks 认证链.
过 options.context 作为 AbortSignal 或 SDK 上下文以取消代理
模式流,SDK电话, 和任何投票倒计时睡眠.
读取空间元数据和启动问题
import { space } from "@dbx-tools/genie";
const genieSpace = await space.getGenieSpace(spaceId);
const questions = space.genieSampleQuestions(genieSpace);
space.getGenieSpace() 获取空间定义,包括序列化空间
默认的元数据. space.genieSampleQuestions() 提取自定义启动器
问题和返回 [] 当没有配置时.
序列化的blob需求 Can Edit 空间,同时 Can Run 足够了
标题和说明。 当工作空间拒绝序列化请求时
未经许可, getGenieSpace() 重复一次没有它和日志
serialized-space:forbidden,所以应用程序服务本金只持有 Can Run
仍然解决空格,没有报告开始的问题。 每一个
失败, 如请求被取消, 空格缺失, 或是重试, 也可以
失败, 被丢弃 .
选项
chat.GenieChatOptions 由两个驱动程序共享:
conversationId- 加入已有的精灵对话.agentMode- 使用代理模式 SSE,默认true。 。 。 .false部队投票.agentModeFallback- 回到典型的民调 当代理Mode是 不可用, 默认true。直接代理呼叫器设置false。 。 。 .enableVisualization- 请求代理模式可视化生成.workspaceClient- 明确的Databricks SDK客户端.pollIntervalMs- 倒计时投票,默认500。 。 。 .context- SDK(英语:SDK)Context或者说AbortSignal用于取消.
下载图表图像
在请求可视化后,请用一个 viz
字段,并使用相同的对话和消息ID下载其PNG:
import { downloadGenieVisualization } from "@dbx-tools/genie";
const visualization = message.attachments?.find((attachment) => attachment.viz);
if (visualization?.attachment_id) {
const png = await downloadGenieVisualization(
{
space_id: message.space_id,
conversation_id: message.conversation_id,
message_id: message.message_id,
attachment_id: visualization.attachment_id,
},
{ workspaceClient },
);
}
使用可视化附件ID,而不是其链接的查询附件ID.
SDK的车 raw: true 运输返回二进制正文并保持正常的 SDK
认证和取消。 帮助者验证了PNG的反应,然后
使用可选 sharp 需要将其大小调整为原来的四倍
与Lanczos3相接的宽度和高度,并应用了轻度的无尖口罩. 若为 sharp 没有
安装或无法处理图像, 帮助者返回已验证的
原字节. 处理发生在字节返回呼叫者之前,所以
下游缓存在增强成功时存储增强后图像.
这是光栅清理后退。 如果源 Ekharts 实例可用,
首选项 getDataURL({ pixelRatio: 3 }) 或 SVG 这样图表文本被重置
而不是从截图上放大。 终点也接受可视化
来自代理模式对话的附件 .
模块
chat- 说吧genieChat()原始快照流和genieEventChat()类型事件 流线.agentMode- 说吧genieAgentModeChat()和代理人 模式传输选项加上代理模式对话历史 .space- 说吧getGenieSpace()财务报告和审定财务报表genieSampleQuestions()。 。 。 .visualization- 说吧downloadGenieVisualization()用于验证和可选增强的PNG下载.
AppKit-Mastra软件包在此驱动程序上方构建了它的Genie工具. 见 @dbx-tools/appkit-mastra (英语) 用于代理级 工作流程.