Transcript
00:00:00大家好,欢迎来到 v0 与 Snowflake 集成工作坊,本次活动是纽约
00:00:12城市专场。两周前我们在伦敦也办过一场,所以本次会议主要面向 Snowflake
00:00:23企业客户以及 v0 企业客户,因此你需要同时具备这两项集成才能
00:00:31使用这个功能。首先自我介绍一下,我叫 Dom,我加入 Vercel 四
00:00:39年半前担任工程师,如今我是一名驻场前置工程师,协助最大的
00:00:47Vercel 企业客户采用各种框架、AI 工作负载、代理以及
00:00:57总体上帮助采用这个平台。Jordan,你好。大家好,我叫 Jordan,来自 Snowflake,我在那
00:01:05里工作两年了,是一名资深软件工程师,我主要负责这次集成的 Snowflake 端。
00:01:12好的,那么借此机会,让我实际上来放一张幻灯片。哦对,所以基本上这个
00:01:23这里的集成就是你在 Vercel 的 v0 工具中构建应用,这是一个由 Vercel 推出的
00:01:30智能编码工具,拥有世界级的开发者体验,非常适合 Next.js。你将把
00:01:37这个应用部署到 Snowflake,一旦部署到 Snowflake,它就会完全在你的 Snowflake 账户中运行
00:01:41因此它将使用 Snowflake 角色进行部署,并将使用 Snowflake 的基于角色的访问控制(RBAC)
00:01:47如果你有单点登录(SSO)的话,以及 Snowflake 提供的所有功能,并且它是完全
00:01:53独立的,能够安全地在你的账户中运行。其理念是你将拥有两全其美的优势:既有
00:02:01来自 Vercel 的开发体验,又有来自 Snowflake 的企业级数据、合规性和 RBAC。
00:02:10先做一个声明,本次会议通常研讨会是包含动手操作的练习你可以
00:02:17亲自动手。然而,正如我在开始时所说,你需要双方都是企业客户,所以我们
00:02:22将向大家展示一个演示,准确地说其实是几个演示,然后我们将进入互动环节,向
00:02:29各位观众展示如何使用 Snowflake 的示例数据集通过 v0 构建应用,接着我们将
00:02:38进入问答环节。在这里,我想向大家展示我们 Vercel 内部是如何使用这个集成的。实际上有
00:02:48三大支柱:标准的应用场景是你可以创建交互式的实时仪表盘,它被 GTM(进入市场)团队
00:02:58用来展示销售漏斗、产品使用情况以及业务增长速度。所以,你不需要懂 SQL,只需
00:03:07通过提示词就能生成你的仪表盘。这是使用此集成的标准且常见的方式。
00:03:17除此之外,不同的团队也在使用产品采用率分析,或者一些自定义的商业智能(BI)
00:03:31即个性化应用,我们稍后会向大家展示。而我最喜欢的一个用法,是我在
00:03:39关于我在 Vercel 的团队的工作时发现的:你可以创建属于你自己的团队 ARR(年度经常性收入)财务个性化仪表盘
00:03:50并向下钻取到 SKU 级别或服务级别。以前我并不知道我的团队带来了多少
00:03:57收入,但在筹备这次研讨会的过程中,我发现这个功能确实非常棒。
00:04:03没错,所以对于 Snowflake 来说,如果有任何熟悉的 Streamlit 的 Snowflake 客户的话,它有很多
00:04:14仪表盘功能。这种方式的好处在于,你可以超越单纯的仪表盘——仪表盘
00:04:21虽然得到了很好的支持,但你还可以构建内部工具。由于它是 JavaScript 和 Next.js,你可以构建
00:04:27任何你能想象的东西,比如优秀的内部工具:你可以创建能够写入数据的表格,并让这些表格
00:04:31与你拥有的其他表格进行交互,从而丰富你的数据,甚至还能构建智能代理应用。
00:04:38你可以与数据对话,如果有更多时间还可以构建更复杂应用。我一直在
00:04:44内部使用它来获取大量的日志信息,我想知道这些日志来自哪里、
00:04:50涉及哪些用户,然后进一步了解这些用户,这样在进行
00:04:55调查时,我可以从一个数据集跳转到另一个数据集,非常适合这类工作。
00:05:01所以,这就是你可以利用这个集成实现的北极星目标……
00:05:09我可以描述一下。为了使用这个集成,你需要让 Snowflake 上的企业
00:05:16管理员在设置中启用 Snowflake 应用运行时(App Runtime),
00:05:23然后启用 Vercel 集成。这是为了使用它需要完成的两个步骤。
00:05:29在 Vercel 这边,你的管理员需要将 Snowflake 添加到你的 v0 团队中,前往设置和
00:05:37集成页面。具体来说,在 v0 中,你转到账户设置,添加集成,
00:05:47通过你的账户标识符添加 Snowflake 账户,然后连接到你的数据集。
00:05:58这个界面的外观大概是这样的,我想这应该是 Vercel 的截图。
00:06:04设置就是这样,现在让我们来看看……
00:06:10接下来我要构建一个演示,我将从一个提示词开始,然后
00:06:16这是第一部分:v0 将利用这些数据构建一个仪表盘。接着在
00:06:25第二部分,我将把它部署到 Snowflake。其中还有更多细节,我会在
00:06:31v0 正在生成应用的同时向大家解释。不过先提示大家一点:
00:06:39由于涉及 Next.js 服务器端渲染策略的最佳实践,
00:06:47它将在服务器上运行,而且
00:06:51实际上它会紧邻你的 Snowflake 数据运行以满足合规要求,我
00:06:55稍后会详细解释。好吧,将应用部署到 Snowflake 基础设施就是这么简单。
00:07:05是的,你没听错:v0 将构建这个应用,然后它将被部署并
00:07:15使用靠近 Snowflake 数据的 Snowflake 计算资源。所以,如果你是企业客户,你可以
00:07:24扫描这个二维码,或者如果你想要我们销售团队提供个性化演示,也可以扫描这个二维码,
00:07:32这样就能为你启用此功能。接下来我们进入实操演示。
00:07:47当然,由于是企业环境,我需要通过 Okta 重新进行身份验证,其实我们
00:07:54经常需要这样做。这里最关键的关键词是 Snowflake,
00:08:05你只需要在提示词中直接使用 snowflake。为了加快演示速度,我会说使用
00:08:14Crunchbase 数据集。现在我想创建一个标准的演示,我要制作一个仪表盘,
00:08:25额……
00:08:29展示历年 IPO 情况,准确地说,是关于 IPO 的完整情报。让我们让 v0
00:08:39来生成这个。
00:08:48好的,这样应该就足够了……
00:08:53在 v0 生成的过程中,首先它会检查并查询 Snowflake 数据集,它
00:09:03应该会向我请求权限或者问我一些后续问题。
00:09:09连接到实时的 Snowflake 运行,好的,没问题。
00:09:18可能还有更多内容,v0 应该会要求我连接到我的 Snowflake 数据库,
00:09:31然后它会根据我的提示词开始查询构建所需的内容。所以我现在正在连接到 Snowflake,这正是本次集成的核心所在。
00:09:53这正是本次集成的核心所在。
00:10:01v0 将遵循 Web 性能和 Next.js 最佳实践的
00:10:09渲染与缓存策略,然后为我构建
00:10:15一个定制的个性化实时仪表盘。这大概需要三分钟左右的时间来生成。
00:10:24所以在等待期间,我想向大家介绍……
00:10:29聊聊我们在去年 11 月发布的一篇博客文章,
00:10:36当时我们邀请了一些企业来测试这个集成。不过我更想重点讲讲
00:10:45为什么这个集成如此酷炫:
00:10:51v0 实际上在编写代码来连接这个访问管理层并访问你的数据,
00:11:00同时通过 v0 编写整个 Next.js 应用程序。然而,当你部署它时,它会被部署到 Snowflake 基础设施上,距离数据非常近、位置完全一致。
00:11:06位置完全一致。
00:11:14这样做背后的原因是为了满足企业的合规性、安全性以及速度要求。
00:11:22因此,Vercel 负责管理应用程序和身份验证层,而 Snowflake 则负责计算和数据。
00:11:29另外,我还想向大家展示的一点是,
00:11:36当你创建了这个应用程序后,当然你可以自己使用它,但你也可以把它发送给你的团队成员
00:11:41或组织内的其他人。现在,为了能够看到这个应用程序,你需要登录并进行身份验证,
00:11:49所以你在该应用程序上看到的数据,将严格限于你有权限和权利看到的数据。
00:11:57因此,当你将这个应用程序的链接发送出去时,只有那些拥有查看权限的人才能看到这些数据。
00:12:02只有那些拥有查看权限的人才能看到这些数据。
00:12:11为了节省时间,我其实提前部署了这个应用程序——之前花了我 3 分 43 秒,
00:12:38我不确定为什么这次花的时间更长,可能是因为在做演示吧。
00:12:44正在重新安装依赖项。
00:12:49那么,这就是成功部署的应用程序,使用的是完全相同的提示词:“创建 IPO 市场仪表盘”。你可以看到它是交互式的。
00:13:00你可以看到它是交互式的。
00:13:14好的,马上就完成了。
00:13:27看这里,有 50,000 个 IPO、总筹集资本、平均峰值年份,你可以看到生成了一个漂亮的仪表盘。现在你可以对其进行迭代,
00:13:39当你发布它并访问这个网站时,
00:13:42你需要进行登录,这就是我刚才提到的权限控制。
00:13:50因此为了查看内容,我需要验证我在 Snowflake 上拥有的权限,它已经部署完毕。
00:13:57我不确定你们能不能看清网址,
00:14:00它部署在了 snowflake compute dot app 上,
00:14:04而其他所有看到它的人都会拥有不同的权限。
00:14:10好的。
00:14:16以上就是基本的顺利路径,接下来 Jordan 会向大家展示
00:14:22v0 能力更强大、更酷炫的版本。
00:14:27好的,我要切换一下
00:14:31我的笔记本电脑。
00:14:37大家在过程中有什么问题吗?
00:14:45等一下,让我们等一下麦克风。
00:14:49如果你在像 dbt Cloud 这样的工具中定义了语义模型,有没有办法将其与此打通,
00:14:54以便生成的查询以及供模型围绕其进行设计的可用表格,
00:15:01能够与我们的……
00:15:05也就是用语义模型来设计查询,即 SQL 查询对吧?对,如果你在使用 dbt 来管理模型本身的话。
00:15:11来管理模型本身。
00:15:18抱歉,刚才好像又有人提问了?对,如果我们使用类似 dbt 的工具,
00:15:25用于 Snowflake 中的不同层——比方说你采用了湖仓一体架构(Medallion Architecture),
00:15:30但如果你拥有一个 dbt 风格的语义层,并使用类似 dbt Cloud 的工具来管理它,
00:15:34有没有办法把它集成进来?可以的,你可以通过提示词来实现。我认为你可以进行引导,
00:15:40因为这一切都是由大模型驱动的。这里面有多层结构,比如 v0 层,然后 Snowflake 端还有一层。
00:15:46然后 Snowflake 端还有一层,对吧?如果你想进行优化……
00:15:55其实有很多方法可以做到这一点,比如通过提示词、通过评估(evals)如果你要上生产环境的话。
00:16:02所以这种方式就像是“氛围编码”(vibe coded),从提示词到构思非常快,你已经有了想要的东西。
00:16:08我的问题回答了吗?我只是好奇是否存在某种数据集成……
00:16:13有的,有的,其实也有原生的集成方式。
00:16:23你可以看到应用上发生的一切以及 Snowflake 端和 Vercel 端的监控数据。
00:16:27以及 Snowflake 端和 Vercel 端的监控数据。
00:16:33好的,那么在这个演示中,我先展示一些我将要使用的原始数据外观。
00:16:41这是某个发电厂的数据,运行这样的查询是很典型的情况:
00:16:48包含大量信息:经度、纬度、不同发电厂的所在地,这些数据很难直接理解。
00:16:55所以首先,我之前已经创建了这个应用来节省时间,经历了与刚才相同的步骤,
00:17:01选择一个账户。在这个例子中,我有多个 Snowflake 账户,因此对于一些规模较大的客户,
00:17:07他们可以拥有许多账户,并且可以在每次对话中决定要使用哪一个。
00:17:13接下来,让我们看看如果我想让它变得更有趣一点——
00:17:20因为目前它包含一些摘要和表格,但如果我想说“让我们添加一个地球仪来进行可视化”,
00:17:30用于可视化
00:17:42由于我们使用的是 JavaScript 和 Next.js,它应该能够为此找到一些合适的库,
00:17:50渲染一个地球仪,找出并查看现有的表格,
00:17:55获取经纬度,然后渲染出更有趣的内容。
00:18:02在开始之前,我们能先解释一下数据集吗?
00:18:07好的,我们拥有美国各地发电厂的数据,所以我们这里有这个数据源。
00:18:15我们可以通过 Snowflake 市场获取共享数据,你可以购买数据集,
00:18:20这样你就可以访问它,它会定期更新,然后你就可以在这里进行探索。
00:18:29我记得这个是免费数据集对吧?是的,这是一个免费数据集。所以你可以购买可用的某些免费数据集,
00:18:37这是一个好方法。借助这些数据集,你可以将它们与你自己的数据混合起来,
00:18:41从而获得更详细的见解。
00:18:49它们用于演示也非常合适。
00:18:55好的。
00:18:59看起来成功了。
00:19:04所以,为了向你的高管或客户展示……传统的仪表盘虽然可以展示,但通过这个集成和 v0,
00:19:13你可以为你的仪表盘和数据集创建交互式的实时可视化效果,
00:19:23呃,为你的数据集和仪表盘制作可视化图表
00:19:29就像这样,举个例子
00:19:34好,现在我们进入互动部分。我们拥有来自市场的免费数据集,
00:19:41我们可以和观众一起进行:如果你想尝试任何用于可视化的提示词,
00:19:46我们可以现在做这个环节,或者如果你有任何问题,也可以直接进入问答环节。
00:19:59大家有人有疑问,或者想发个提示词让我们从功能层面运行一个提示词吗?
00:20:09从功能角度来看,你们能够在这里运行回归模型并构建管道吗?还是说这
00:20:14差不多只是像氛围编码那样的探索性可视化工具?
00:20:20这个问题我来回答吧。是的,这完全是为非技术人员准备的纯粹的氛围编码。
00:20:28不过我很喜欢你的问题,很酷。我会……
00:20:35是否存在集成……
00:20:44好的。
00:20:47通常 v0 拥有 GitHub 集成,你可以将其接入到常规的 CI/CD、SDLC 生命周期中。
00:20:56在这里你可以下载代码,所以这是一个原型。刚才我和 Jordan 在台上演示,
00:21:05虽然感觉像过去了一个小时,但每一分钟……实际上生成只用了 1 分 53 秒,
00:21:11通过氛围编码速度超级快,而且比那些典型的报告仪表盘要好,对吧?
00:21:19我会下载这段代码,然后在背后创建评估(evals)和模型。
00:21:33看,背后只有 v0 模型,没有别的 AI 应用,你不能直接跟它对话。
00:21:39就像幻灯片里展示的北极星那样,传统商业智能在这,而这里有交互式组件
00:21:46定制且个性化的应用,然后第三种——虽然我们决定没有
00:21:51足够时间来实际演示,但你可以要求 v0 说:“嘿,能为我添加与我的数据对话的聊天功能吗?”
00:21:59而 v0 可以完美地实现这一点。接着我会做评估管道来改进——
00:22:08你知道的,你肯定不希望里面出现幻觉。不过这是一个高级用例,谢谢你的提问,非常酷。
00:22:14非常酷。
00:22:19大家看情况,如果想结束的话……
00:22:30当你部署这个时,授权是如何运作的?
00:22:35哦,这是一个好问题。
00:22:38是的,一旦部署完成,它就在你的 Snowflake 账户中。我不确定你
00:22:41是否熟悉 Snowflake?通常来说——如果你熟悉的话,你的 Snowflake 账户身份验证
00:22:48工作方式就像你访问应用时看到的那样,这会提示你登录。然而,如果你有
00:22:54像我这里设置的单点登录(SSO),这其实只是
00:22:59将我登录到我的 Snowflake 账户,所以我需要输入 Snowflake 用户名和密码,或者单点登录,
00:23:04然后其余部分就完全在 Snowflake 中了。所以一旦进入 Snowflake,
00:23:10就跟 Vercel 没有任何连接了,所以你不是在登录
00:23:13Vercel,此时此刻它完全只在你的 Snowflake 账户中。
00:23:19如果是业务用户、非开发人员组成的团队呢?如果是面向业务用户、非开发人员的团队,
00:23:26他们必须被加入板子上?我想 Snowflake 会……是的,他们必须在 Snowflake 上。我的意思是,
00:23:32Snowflake 正在研究如何将这些应用暴露给没有 Snowflake 账户的用户,
00:23:39这类支持现在已经有一些了,但未来会有更多,因为这绝对是 Snowflake 上应用的一种普遍需求。
00:23:42 Snowflake 上的应用的一种普遍需求。我想你可能可以登录,
00:23:50也许不是 Snowflake……你可以的,你的 Snowflake 账户中有不同的角色,
00:23:56你可以在 v0 的设置中选择用于应用程序的角色,在连接这两个
00:24:05应用程序时进行配置。因此,至关重要的是,你所使用的最终用户只能看到他们有
00:24:12权限看到的数据——这个问题得到了解决,你可以带着这一点去氛围编码你的仪表盘,
00:24:20在我看来这非常酷。哦,你看!所以你拥有这些角色,然后你可以复制
00:24:29这些角色,或者直接对 v0 说:“请仅为此应用程序使用这些角色。”谢谢你的提问。
00:24:36对,我正想问你……抱歉,当心点,那是你的账户,伙计,他正字面意义上在拍照呢。哦对,就是这样,挺好的。
00:24:48我正想问你,如果你想创建这样的组件,然后把它放到部署在 Vercel 上的 Next.js 应用中,
00:25:00也就是基本上拥有能够查询 Snowflake 数据的组件,这用这种设置可行吗,还是不太行?
00:25:09这用这种设置可行吗,还是不太行?
00:25:19可以的,没问题。那么……实际上……我是说,大家有用过 v0 吗?我能问一下
00:25:31好。谁使用 Snowflake,或者谁是 Snowflake 的客户?
00:25:41更多客户,更多 Snowflake 客户,好的。这跟伦敦的情况不同。所以回答你的问题,
00:25:48这里是你的组件,比如 shadcn。这是电厂浏览器——哦好的,地球仪去哪了?
00:25:59它可能在某个地方,也许在页面里?
00:26:08天哪,这些 API 是怎么回事?也许它在其中一个页面里,嵌套在其中一个组件里。
00:26:13嵌套在其中一个组件里。
00:26:18它是直接通过氛围编码生成了整个地球仪吗?哦是的,你看!是一个 167 行的 UI 组件,
00:26:27有了这个,你就拥有了代码,你可以下载它,可以对它进行迭代。顺便让你们知道,
00:26:34这是零次提示(zero-shot)生成的。可以看到,第一个版本是最初的提示词,然后
00:26:44添加地球仪是另一个提示词,所以有了版本 2,因为 v0 的命名规则是 v1、v2 等等。回答你的问题了吗?
00:26:52是的,很酷,谢谢。
00:26:58如果你想看更多,在 v0 中你可以直接……
00:27:04你可以看到——顺便说一句,你可能会看到你有权限访问的整个数据库,
00:27:08这是一个测试账户,所以没关系。你实际上可以在 v0 内部探索你的数据库,
00:27:15这意味着你也可以与你的数据库进行对话,所以你不需要部署任何应用,
00:27:21不需要展示任何仪表盘,你可以直接与你的数据对话。
00:27:29你可能需要再次连接,因为这个账户里可能有非常多的表。
00:27:34哦好的,你可能可以,你也可以直接从 v0 运行 SQL 查询。所以未来还会有更多功能,
00:27:45但我个人认为,你可以通过氛围编码构建非常酷的交互式仪表盘,这才是杀手锏。
00:27:51这才是杀手锏。
00:27:58好。
00:28:01我想差不多就是这样了。如果你想测试这个功能,只需联系 Vercel 或 Snowflake。
00:28:10谢谢大家今天的参与。