SheepNav
新上线1个月前0 投票

为SageMaker托管的LLM构建Strands Agents自定义模型解析器

随着企业越来越多地将自定义大语言模型(LLM)部署在Amazon SageMaker AI实时端点上,使用SGLang、vLLM或TorchServe等首选服务框架,以获得更大的部署控制权、优化成本并满足合规要求,一个关键的技术挑战也随之浮现:响应格式与Strands agents不兼容

格式不兼容的根源

自定义服务框架通常返回OpenAI兼容格式的响应,以确保在广泛环境中的支持。然而,Strands agents期望模型响应符合Bedrock Messages API格式。这种不匹配导致即使两个系统在技术上都能正常运行,也无法实现无缝集成。

当您尝试将此类模型与Strands agents结合使用时,可能会遇到类似 TypeError: 'NoneType' object is not subscriptable 的错误。这是因为Strands Agents默认的 SageMakerAIModel 类试图解析不符合其预期结构的响应。

解决方案:自定义模型解析器

解决这一挑战的核心在于实现自定义模型解析器。这些解析器扩展了 SageMakerAIModel 类,专门负责将模型服务器的响应格式(如OpenAI兼容格式)翻译成Strands agents期望的Bedrock Messages API格式。

通过这种方式,组织可以继续利用其偏好的服务框架来托管LLM,而无需牺牲与Strands Agents SDK的兼容性。这为企业在SageMaker上部署模型提供了更大的灵活性和控制力。

实践演示:部署Llama 3.1并集成

本文以具体案例演示了如何构建此类自定义解析器。流程主要包括两个关键步骤:

  1. 在SageMaker上部署模型:使用 awslabs/ml-container-creator 工具,将 Llama 3.1 模型与SGLang服务框架 一同部署到SageMaker AI实时端点上。
  2. 实现自定义解析器:编写代码,创建一个能够理解SGLang(返回OpenAI兼容格式)输出,并将其转换为Bedrock Messages API格式的自定义解析器,从而成功将部署的模型与Strands agents集成。

行业背景与价值

在AI行业快速发展的背景下,企业对模型部署的自主性、成本控制和合规性要求日益提高。Amazon SageMaker提供了强大的托管和灵活性,允许客户使用各种基础模型和服务框架。然而,这种灵活性有时会与生态系统中其他工具(如专注于智能体开发的Strands)的标准化接口产生冲突。

自定义解析器的出现,正是为了解决这种标准化与定制化之间的鸿沟。它允许开发者在享受SageMaker部署灵活性的同时,无缝接入像Strands这样的智能体开发框架,从而加速AI应用的构建和迭代。这对于希望构建复杂、可定制AI工作流的企业而言,是一个至关重要的技术环节。

小结

总而言之,为SageMaker上托管的、不支持原生Bedrock Messages API的LLM构建自定义模型解析器,是连接灵活模型部署与标准化智能体框架的关键桥梁。它确保了技术栈选择的自由度,同时维护了系统集成的顺畅,是企业在构建下一代AI应用时需要掌握的重要实践。

延伸阅读

  1. 太空数据中心能否支撑SpaceX的巨额估值?
  2. 在日本,机器人不是来抢工作的,而是填补没人愿意干的岗位
  3. 我让Google Maps里的Gemini规划我的一天,结果出乎意料地好
查看原文