Cortex Agents:从Text-to-SQL到真正干活的助手
DataHot 速览
Snowflake Cortex AI系列第5周进入Applied层,聚焦Cortex Agents。作者在Week 4构建的Semantic View之上,搭建了一个支持工单分诊的Agent,并为其配置cortex_search和cortex_analyst_text_to_sql两个工具。文章指出Cortex Agent的核心不是回答单个问题,而是决定调用哪些工具、按什么顺序执行,以端到端完成任务。作者还实际观察到Agent出现错误决策,强调编排与判断能力的重要性。
为什么值得关注:数据从业者可从中了解Cortex Agents如何将Text-to-SQL、检索和语义视图组合为可执行任务的Data Agent,对Agent编排实践有直接参考价值。
本文目录 8 节
译文
AI 逐段翻译我的12周Snowflake Cortex AI系列的第5周——开启应用层

在Snowflake上构建了十年,我仍然发现自己在以错误的方式向人们解释Cortex:“它基本上是Snowflake版的ChatGPT。”这种说法低估了Cortex Agents真正带来的变化。
本系列的基础层是关于给LLM正确的上下文。Cortex Agents则是关于赋予它决定如何处理上下文的权力。
如果你已经跟随了第1-4周,你已经有了这些组件:Cortex AI的核心能力、用于检索的Cortex Search、用于文本到SQL的Cortex Analyst,以及作为底层治理层的Semantic Views。本周是关于将这些组件连接起来,使其行为更像一个团队成员,而不是一个问答工具。
1. 误区:代理只是一个更智能的聊天机器人
Cortex Analyst回答一个问题。Cortex Search检索一段内容。每个都做好一项工作,但每个仍然需要人类来解释输出并决定下一步。
Cortex Agent的工作不同。它是一个可重用的对象,捆绑了模型、一组工具和编排指令,其实际工作是决定调用哪个工具、以什么顺序调用,以端到端解决请求。这与“很好地回答一个问题”完全不同。这更像是路由和判断,而不是检索。
这种区别在文档中很容易被忽略,只有当你看到代理做出错误决策时才会真正显现,剧透一下,我的代理不止一次这样做。
2. 我实际构建了什么
我刻意保持了范围很小:一个基于我为第4周构建的Semantic View的支持工单分类代理。目标不是复杂,而是近距离观察编排行为。
设置遵循标准生命周期:
- 创建代理:在Snowsight中定义,包括名称、编排模型以及关于其行为方式的自然语言指令。
- 添加工具:我给了它两个:一个指向历史工单记录的cortex_search工具,和一个指向第4周Semantic View的cortex_analyst_text_to_sql工具,用于涉及工单量、状态或SLA指标的任何事情。
- 在游乐场测试:这是我真正学到东西的地方。我可以看到代理的推理轨迹,而不仅仅是最终答案。
- 通过REST API集成:通过agent:run调用代理,使用线程在轮次之间保持对话上下文。
- 监控并迭代:审查线程和轨迹,看看工具选择出错的地方,然后收紧指令。
这是一个简化版的工具定义,按照Cortex Agents期望的工具规范构建,足以展示其形状:
{
"tool_spec": {
"type": "generic",
"name": "get_ticket_status",
"description": "Look up the current status and SLA state for a support ticket by ID.",
"input_schema": {
"type": "object",
"properties": {
"ticket_id": {
"type": "string",
"description": "The support ticket identifier, e.g. TCK-10432"
}
},
"required": ["ticket_id"]
}
}
}工具选择是真正的考验。
不是Cortex Search或Cortex Analyst是否单独工作,我已经从第2周和第3周知道它们可以。有趣的是观察代理选择根据请求的措辞在“搜索过去工单中的类似措辞”和“查询语义层以获取状态/数量”之间正确选择。一旦我使工具描述更具体,它更频繁地正确,这提醒我编排质量部分是一个提示工程问题,而不仅仅是模型能力。
在语义层中的接地比我预期的更重要。
第4周的Semantic View已经精确定义了“未结工单”和“SLA违约”,代理不需要即时推断业务逻辑。当我测试同一代理的版本针对一个更松散、未定义的数据模型时,工具选择明显变得不太可靠。这是基础层直接回报:代理的可信度取决于其下的语义层。
我故意停止的地方。
代理可以分类和查找工单。它不能关闭、重新分配或回复客户。这个边界是故意的设计选择,而不是当前的限制,“代理””不一定意味着“自主”,对于任何对客户有实际后果的事情,我更希望它保持为人类批准的建议。
3. 我接下来会怎么做
如果我要为生产而不是演示构建,我会改变几件事:
- 进一步收紧编排指令。模糊的指令导致模糊的工具选择。具体、几乎过度明确的描述何时使用每个工具产生了可衡量的差异。
- 添加预算限制。Cortex Agents允许你限制代理在生成响应时可以花费的时间或令牌,值得从第一天开始设置,这样困惑的代理就不会螺旋进入昂贵的循环。
- 构建评估,而不仅仅是测试。游乐场非常适合目测行为。任何用于生产的东西都需要Snowflake文档中描述的作为代理生命周期一部分的结构化评估和反馈循环。
一个值得认真对待的警告
Cortex Agents和我在此描述的编排行为的某些部分仍在发展中,一些功能处于Private Preview,尚不适合生产工作负载。我在这次构建中看到的是我编写时的快照,不是当前行为的保证。在基于此构建之前,请检查当前的Snowflake文档以获取GA状态。
TL;DR
- Cortex Agents与Cortex Analyst和Cortex Search的不同之处在于它们选择使用哪种工具,而不仅仅是回答一种类型的问题。
- 一个明确定义的Semantic View是使代理工具选择可靠而不是猜测游戏的关键,第4周不是支线任务。
- 编排质量部分是一个提示工程问题:具体的工具描述和指令显著改善了工具选择。
- 我故意将代理范围限定为分类和查找,而不是自主行动。
- 其中一些功能仍是Private Preview。在基于此构建之前确认当前状态。
这是关于Snowflake Cortex AI生态系统的12周系列的第5周。第1-4周(基础)涵盖了Cortex AI概述、Cortex Search、Cortex Analyst和Semantic Views。
Cortex Agents: From Text-to-SQL to an Assistant That Actually Does Something最初发表于Snowflake 构建者博客:数据工程师、应用开发者、人工智能与数据科学 在 Medium 上,人们通过强调和回应这个故事来继续对话。
这篇内容对你有用吗?
反馈只用于改善内容筛选,不等同于收藏