开发者生态
morning
Keenable SELECT:在 SQL 中搜索网络的代理
2026-09-02
1 阅读
约4分钟阅读
phoenix120
字号:
你问“自 2025 年以来,哪些人工智能研究人员在前沿实验室之间流动?每次流动都会列出研究人员、他们离开的实验室、他们去了哪里以及月份。” → Keenable SELECT 在网络上运行 SQL SELECT SEM_EXTRACT(content, 'researcher' ), SEM_EXTRACT(content, 'left lab' ), SEM_EXTRACT(content, 'joined lab' ), SEM_EXTRACT(content, 'move Month' ) FROM WEB_SEARCH(8 个不同的查询) WHERE SEM_MATCH(content, '指定研究人员在前沿之间移动实验室,2025+ ') → 报告背后的系统 Keenable SELECT 是一个 MCP 服务器,具有一个主要工具: select 。该工具对实时 Web 数据运行一个只读 DuckDB SELECT 语句。服务器在 DuckDB 外部运行 Web 和语义运算符,将其输出放回到行集中,然后在 DuckDB 中运行最终的 SQL。传统的网络搜索为代理提供了十个链接。然后,代理必须阅读每一页并从昂贵的令牌中构建答案。 SELECT 将此工作移至查询中。一次调用可以搜索 1,000 多个页面,使用精确的 WHERE 子句过滤它们,无需 LLM 成本,每行使用一个小型 LLM 调用提取字段,并对行进行分组。 MCP 工具 select 接受 DuckDB SELECT 查询并返回行。服务器将每个查询结果保存为带有 id 的结果集,以后的查询可以从该 id 中读取。 generate_html_report 需要一个简短的和结果集的 ID。服务器上的报告模型根据行编写 HTML 报告并返回可共享的链接。语义运算符 运算符存在于普通 SQL 中。服务器在解析的语句中找到它们,运行它们,并将它们替换为普通列。精确 SQL 过滤器首先运行,因此只有幸存的行才会进入 LLM 运算符。 WEB_SEARCH 和 WEB_FETCH 也可以按行运行。它们的参数可以使用行列,例如 WEB_SEARCH(name || '创始年份') 。主代理 此库中的每个报告都来自两个代理:一个使用 MCP 服务器收集数据的研究代理,以及一个在服务器上的generate_html_report 内运行并写入页面的报告代理。研究代理是一个简单的工具循环:带有选择工具的法学硕士。它编写并运行自己的查询,直到可以回答为止,并将其工具调用、结果和回答作为事件进行流式传输。后续问题将在存储的记录之上继续对话。此展示中的每次运行都要求提供 HTML 报告,因此代理以报告链接结束每个答案。报告代理 第二个代理将每个报告写入服务器上。它获取概要、结果集的行以及创作指南。它在沙盒 Python 会话中构建页面,该会话将结果集保存为数据帧,因此数据可以到达页面,而无需模型重新输入。每次发布后,服务器都会渲染草稿并返回屏幕截图和页面的 JavaScript 错误计数;代理修复文档并在固定预算下再次发布。只有最终草案仍然有效,并以链接形式发布。
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱