\ 当你将人工智能代理、模型上下文协议(MCP)和无服务器计算结合在一起时,会发生一些非常有趣的事情。我们不仅仅是在谈论能够调用几个API的更智能的聊天机器人;我们正在构建能够真正理解你是谁、你被允许做什么的人工智能系统,并且可以在不违反安全规则或干扰其他用户的情况下跨不同公司系统工作。
传统的人工智能应用面临一个基本问题:当人工智能代理需要代表不同用户访问多个服务时,如何维护用户上下文和权限?大多数实现要么牺牲安全性(通过使用共享凭证),要么牺牲用户体验(通过要求持续重新认证)。
解决方案在于一种复杂的JWT传播模式,它在整个请求链中维护用户身份:
\ 这创建了一个安全的信任链,用户身份永远不会从人工智能响应中推断出来,而是始终通过加密方式验证。
将MCP视为将人工智能从笼子中解放出来。与其构建一个试图做所有事情的庞大人工智能应用,你现在可以创建更小、更专业的人工智能服务,它们彼此交流。MCP让你的人工智能能够即时发现和使用新工具,而不是硬编码人工智能可能需要的每一个可能的工具,即使这些工具位于完全不同的服务器上。
关键见解是将工具视为微服务而非嵌入式函数。每个MCP服务器成为一个特定领域的智能中心,可以服务于多个代理,同时维护自己的安全性和业务逻辑。
\
// MCP工具自动变得用户感知 export async function getTravelPolicies(userId, userRole) { // 策略执行发生在工具级别 return policies.filter(p => p.appliesToRole(userRole)); }
\
无服务器计算解决了人工智能代理的三个关键挑战:
1. 设计上无状态:每次调用都是全新开始,消除了用户和请求之间的状态污染。
2. 自动扩展:无需容量规划即可处理并发用户—当人工智能代理可能触发复杂工具链时至关重要。
3. 成本效益:只为实际推理和工具执行时间付费,而不是闲置容量。
架构变得优雅简单:
传统的Web应用在内存或数据库中维护会话状态。人工智能代理需要不同的方法,因为它们的"状态"包括对话历史、工具结果和学习上下文—可能是数GB的数据。
通过Strands SDK将其外部化到S3创造了令人着迷的可能性:
# 代理状态变得可移植和可分析 session_manager = S3SessionManager( bucket="agent-sessions", key_prefix=f"user/{user_id}/conversations/" ) # 状态可以共享、分析或迁移 agent = StrandsAgent.from_session(session_manager)
这使得代理之间的对话交接、审计跟踪,甚至人工智能到人工智能的协作模式等功能成为可能。
构建旅行代理示例揭示了几个不明显的模式:
工具组合:MCP服务器可以调用其他MCP服务器,创建工具层次结构。预订工具可能按顺序调用策略工具、定价工具和可用性工具。
故障隔离:当一个MCP服务器失败时,其他服务器继续工作。代理优雅地降级功能而不是完全失败。
动态授权:用户权限可以在对话过程中更改。JWT刷新模式确保工具始终使用当前权限运行。
这种架构模式远远超出了旅行预订。考虑:
MCP和无服务器的结合正在实现一类新的人工智能应用,它们是:
我们正在从"可以使用工具的人工智能"转向"可以在维护完美安全性和用户上下文的同时编排分布式业务流程的人工智能"。
未来不仅仅是更智能的聊天机器人;它是能够安全地在企业应用的全部范围内运行的智能系统,每个用户都获得自己的个性化、安全且具有上下文感知的人工智能助手。
\


