2作者: laminarflow0276 个月前
在这篇文章中,我们记录了一些实验的结果,比较了原始的图 RAG(仅单次 text2cypher)与路由代理图 RAG 方法,后者可以调用向量搜索工具以及 text2cypher。路由代理使用 LLM 来决定调用哪个向量搜索工具,这取决于问题中识别出的术语,并且效果很好。 结果表明,像 `gpt-4.1` 这样的最新前沿 LLM 和可靠的“老将” `gemini-2.0-flash` 能够可靠且可重复地生成高质量的 Cypher 代码,只需进行一些提示工程,以确保图模式在 text2cypher 提示中格式良好。在一组包含 10 个测试查询(这些查询适度复杂,需要从知识图中检索路径)中,当将路由代理添加到工作流程以增强原始图 RAG 时,`gpt-4.1` 和 `gemini-2.0-flash` 通过了所有测试,生成了正确的答案。 提示工程使用 BAML 完成(一种编程语言,可以简化提示 LLM 并从它们那里获得结构化输出,适用于所有实验)。事实上,知识图本身是使用 BAML 提示构建的,这些提示从上游的非结构化数据中提取实体和关系。 此工作流程的下一个逻辑步骤是构建更复杂的代理循环,这些循环可以运行多步 Cypher 查询,其结果可以合并以回答更难的问题(类似于人类处理问题的方式)。测试和评估的一般原则也适用于此。 看来进一步探索这些方法很有前景!
1作者: cryophobic6 个月前
我为 Tally 构建了一个 MCP 服务器,它弥合了他们复杂的 API 和简单的自然语言命令之间的差距。 作为一个患有 ADHD 的人,我构建这个是因为在文档、表单构建器和实际工作之间切换上下文会破坏我的工作流程。现在我可以保持在一个对话中,只需描述我需要什么即可。 有趣的的技术挑战: 1. API 复杂性抽象 Tally 的 API 需要深度嵌套的对象来表示简单的字段。一个电子邮件字段需要大约 10 个带有 UUID 的嵌套对象。我构建了一个翻译层,因此用户只需用自然语言说“添加一个电子邮件字段”,服务器就会在幕后处理复杂的结构。 2. 安全的批量操作 对于破坏性操作,我实现了一个预览-确认模式。服务器在预览期间生成一个确认令牌,该令牌必须传回才能执行。这可以防止意外的大规模删除,同时保持对话流程的自然性。 3. 智能速率限制 服务器监控 API 响应并动态调整其行为。当达到速率限制时,它会自动减小批量大小并在请求之间添加延迟。增加了随机化,以防止多个实例同时访问 API。 4. 贯穿始终的类型安全 完整的 TypeScript,并对 MCP 消息和 Tally API 响应进行运行时验证。这在开发过程中发现了几个未记录的 API 缺陷。 性能说明: * 批量创建 100 个表单:大约 12 秒,使用批量操作 * 单独创建 100 个表单:大约 5 分钟,由于速率限制 * 人工创建 100 个表单:可能需要一整周的令人麻木的点击 * 对 10K 响应的提交分析:大约 3 秒 代码已获得 ISC 许可:[https://github.com/learnwithcc/tally-mcp](https://github.com/learnwithcc/tally-mcp) 这尤其有助于当您需要创建多个相似的表单,但您的大脑会抵制重复性任务时。很好奇其他人是否正在构建 MCP 服务器,以及您正在优化哪些工作流程。 也对关于 MCP 与传统 CLI 工具的看法感兴趣。对于简单操作,对话界面较慢,但对于复杂、多步骤的任务(您可能忘记确切的语法)来说,它要好得多。