Elicitation:赋能AI工具,让人机同心

204 阅读8分钟

Elicitation 通过动态、上下文相关的交互,将 MCP 从工具集成协议转变为人机协作基础。它通过周到的交互系统增强人类判断,尊重用户代理,提供强大功能。

译自:How Elicitation in MCP Brings Human-in-the-Loop to AI Tools

作者:Janakiram MSV

模型上下文协议 (MCP) 已经改变了 AI 系统连接到外部服务的方式。然而,直到最近,这些交互仍然是僵化且脆弱的。工具要么在执行前提供所有参数时成功,要么会因模糊的错误而失败。这种一次性模型导致了令人沮丧的用户体验,并限制了 AI 工作流程的复杂性。

Elicitation 使得 MCP 服务器能够在运行时暂停并请求用户提供结构化输入,从而将静态工具调用转换为交互式对话。

Elicitation 已正式纳入 MCP 规范修订版 ,日期为 2025 年 6 月 18 日,目前处于草案状态。FastMCP 是一个早期的 MCP 框架,在其 2.10.0 版本中加入了 Elicitation 处理程序,提供了基于 JSON 模式的 Python 数据类抽象,并简化了开发人员的体验。但目前,没有主要的 LLM 提供商 SDK 或托管模型端点原生支持 Elicitation ——因此开发人员必须依赖自定义客户端实现或专门的框架来访问此功能。

Elicitation 标志着向协作式 AI 工作流程的转变,在这种工作流程中,系统和人类共同发现缺失的上下文。

Elicitation 不仅仅是一个增量协议更新。它标志着向协作式 AI 工作流程的转变,在这种工作流程中,系统和人类共同发现缺失的上下文,而不是期望预先获得所有细节。

构建 MCP 工具的 Python 开发人员现在可以专注于核心逻辑,并将参数收集委托给协议本身,从而实现更简化的方法。客户端在初始化期间声明 Elicitation 能力,因此服务器知道它们可能随时 Elicitation 输入。这种标准化的交换使开发人员无需生成自定义 UI 或创建临时提示,从而确保不同 MCP 客户端之间的一致行为。

Elicitation 在实践中的流程

理解 Elicitation 需要可视化它如何改变传统的请求-响应周期。以下时序图说明了一个典型的Elicitation工作流程,其中用户请求航班状态信息:

该图显示了 Elicitation 如何创建一个协作循环。服务器不会在缺少所需信息时失败,而是暂停执行以通过客户端界面从用户那里收集必要的数据,然后继续处理。请注意,该图不包括 LLM。当涉及 LLM 时,它会收到完整的上下文,并且可以根据动态收集的信息提供智能分析。我们将在即将到来的教程中更深入地探讨这个想法。

从传统的请求-响应模式中解放出来

传统的 MCP 工具模式遵循可预测的、有限制的结构。当您调用一个工具时,您必须立即提供所有必需的参数。如果缺少任何参数或格式不正确,则该工具将无法执行。这种方法反映了编程中的经典函数调用,但它在人机交互中表现不佳,因为上下文通常通过对话而不是预先已知而出现。

考虑一个餐厅预订工具。在传统的模式中,如果用户请求预订 12 月 25 日的餐桌,但没有意识到餐厅当天关闭,则该工具只会返回一个错误。然后,用户必须使用不同的日期发出另一个完整的请求。这会产生摩擦,需要多次往返,并提供较差的体验,感觉更像是调试代码而不是进行有用的交互。

该工具成为一个协作伙伴,而不是一个要么成功要么失败的僵化函数。

Elicitation 改变了这种基本动态。该工具不是在请求的日期不可用时失败,而是可以询问用户是否想尝试另一个日期,建议替代方案,并在一个单一的、自然的工作流程中完成预订。该工具成为一个协作伙伴,而不是一个要么成功要么失败的僵化函数。

这种从一次性执行到多轮对话的转变使工具能够优雅地处理歧义。工具无需完美输入,而是可以澄清需求,逐步收集缺失的信息,并根据用户响应调整其行为。该协议提供了一种标准化的方式,供服务器通过结构化模式请求更多信息,从而确保不同客户端之间的一致性,同时保持实现的灵活性。

人在环路作为一流能力

Elicitation 将人在环路 (HITL) 工作流程从事后考虑转变为核心能力。传统的 AI 系统通常在需要人工判断、批准或额外上下文的场景中步履维艰。开发人员必须为每种情况构建自定义解决方案,从而导致不一致的体验和大量的开发开销。

通过 Elicitation,HITL 模式成为工具功能的自然扩展。数据库迁移工具可以在进行不可逆的更改之前请求确认。文档生成系统可以通过引导式交互收集样式偏好和内容要求。事件响应工具可以收集严重性评估和利益相关者信息作为其工作流程的一部分。

Elicitation 并没有试图自动化一切,而是承认许多任务都受益于人在环路。

内置于 Elicitation 中的安全模型确保用户代理保持至关重要。用户始终有明确的选项来接受、拒绝或取消请求。该协议明确禁止请求敏感信息,例如密码或 API 密钥,从而建立信任边界,在保护用户的同时实现有用的交互。客户端必须清楚地表明哪个服务器正在请求信息,从而保持数据流的透明度。

这种 HITL 工作流程的方法尊重人类的专业知识,同时利用 AI 的能力。Elicitation并没有试图自动化一切,而是承认许多任务都受益于人工判断、上下文和决策。它为 AI 和人类有效地协作提供基础设施,各自贡献自己的优势以实现更好的结果。

有效实施的设计考虑因素

成功实施Elicitation需要周到的设计。模式优先的方法鼓励开发人员认真思考信息架构。哪些数据是真正必要的?如何将复杂的需求分解为简单、可回答的问题?具有描述性标题和有用描述的清晰模式可以有效地指导用户。

三动作响应模型(接受、拒绝、取消)需要不同的处理策略。接受使用提供的数据继续工作流程。拒绝可能会触发替代路径或简化的工作流程。取消可以允许稍后重新提示或优雅地降级为基本功能。工具应该智能地处理所有三种情况,而不是将拒绝或取消视为失败。

渐进式披露模式与Elicitation结合使用效果特别好。

渐进式披露模式与Elicitation结合使用效果特别好。首先提出高层次的问题以建立上下文,然后根据响应深入研究细节。这种方法减少了认知负荷,并通过在请求详细信息之前建立上下文来帮助用户提供准确的信息。

状态管理对于复杂的工作流程至关重要。工具必须在多个Elicitation轮次中维护上下文,记住以前的响应并使用它们来通知后续请求。这创建了连贯的对话,而不是断开连接的问题。

结论

Elicitation 将 MCP 从工具集成的协议转变为人机协作的基础。通过启用动态的、上下文相关的交互,它开启了我们才刚刚开始探索的可能性。AI 的未来不在于取代人类的判断,而在于通过周到、交互式的系统来增强它,这些系统尊重用户代理,同时提供强大的功能。

对于准备拥抱这种范式的开发人员来说,Elicitation 提供了今天构建未来的工具。在本系列的下一部分中,我将向您介绍使用 FastMCP 进行 Elicitation 的实际用例。敬请关注!