2025年初,一个AWS工程师在内部测试时随手写了段注释,结果系统直接把自然语言编译成了Python函数。三个月后,这个功能被塞进Strands Labs——AWS专门用来放"疯狂实验"的GitHub组织。现在它叫AI Functions,能让开发者用三行文档字符串替代过去几十行的格式检测、提示工程、重试循环。
这不是低代码平台那种拖拖拽拽的玩具,而是给已经用惯Strands Agents SDK的架构师准备的手术刀。
从"写代码"到"写意图":一个发票解析的对比实验
想象这个场景:用户上传了一份发票,格式未知——可能是扫描件、Excel、PDF,甚至是某家供应商的定制XML。传统做法里,你得先写格式检测逻辑,再搭转换管道,然后设计提示模板、解析响应、包装重试循环。等业务逻辑真正开始时,代码已经膨胀了几十行。
AI Functions的做法是:直接描述你想要什么。
@ai_function装饰器把文档字符串变成契约,LLM在运行时生成实现,框架自动处理执行、纠错和验证。
代码长这样:
from ai_functions import ai_function
from pydantic import BaseModel
class MeetingSummary(BaseModel):
attendees: list[str]
summary: str
action_items: list[str]
@ai_function
def summarize_meeting(transcripts: str) -> MeetingSummary:
"""
Write a summary of the following meeting in less than 50 words.
{transcripts}
"""
调用方式和普通Python函数完全一致。result = summarize_meeting(transcript_text)返回的是类型安全的MeetingSummary对象,不是需要二次解析的字符串。
Strands Labs的三张牌:机器人、仿真、AI Functions
2026年初,AWS把Strands Labs从Strands Agents SDK的主线剥离,做成独立的实验性GitHub组织。定位很明确:前沿研究的沙盒,生产环境的探路者。
首发三个项目。Robots做物理AI代理,Robots Sim搭仿真环境,AI Functions瞄准的是最务实的群体——正在搭建AI流水线的开发者和架构师。
AWS给AI Functions的定调很克制:"实验性,会有破坏性变更,尚未生产就绪。"但补充了一句关键的话:"概念本身今天就有生产相关性。"
换句话说,现在理解它,比等它GA(正式发布)后再补课,能抢出三到六个月的认知窗口。
技术实现:装饰器背后的运行时
AI Functions建立在Strands Agent运行时之上。这意味着所有strands.Agent的有效配置——model、tools、system_prompt——都能透传给装饰器。
调用发生时,框架自动完成四件事:从文档字符串提取意图,让LLM生成实现,执行并监控,必要时纠错和重试。对外暴露的接口和普通Python函数无异,但内部完全由模型驱动。
Pydantic模型在这里扮演关键角色。返回类型不是建议,是强制契约。模型生成的输出必须经过模式验证,失败会触发框架级的重试或报错,而不是把脏数据漏给下游。
这种"意图即代码"的模式,把提示工程从手艺活变成工程规范。
过去写提示词像在调黑箱——换模型、换温度参数、换few-shot示例,效果波动全靠手感。AI Functions把提示模板、响应解析、错误处理全部收进框架,开发者只负责描述"要什么",不负责规定"怎么做"。
生产相关性:为什么现在就要关注
实验性标签容易让人观望,但AWS的措辞留了后门。"尚未生产就绪"指的是API稳定性,不是概念可行性。实际场景中,已经有团队在用类似思路处理非结构化数据清洗、多格式文档转换、动态API适配——这些任务的共同特点是:规则难写全,边界案例多,传统代码维护成本指数级上升。
AI Functions的价值在于把这种"规则写不完"的场景,从硬编码迁移到模型驱动。不是取代所有传统代码,而是把"描述即解决"的边界往外推了一层。
一个细节值得玩味:AWS选择在Strands Labs发布,而不是塞进Bedrock或SageMaker的主线文档。
这种"隔离实验"的策略,既保护了生产用户的稳定性预期,又给早期采用者留了快速迭代的通道。GitHub组织的独立存在,意味着issue响应、PR合并、破坏性变更的沟通链条更短——适合愿意和代码一起进化的团队。
竞品格局:这不是第一个,但可能是最"AWS"的
自然语言转代码的尝试不少。OpenAI的Function Calling、LangChain的@tool装饰器、Vercel的AI SDK,都在模糊"提示"和"代码"的边界。但AI Functions的差异点在于纪律性——它不强求LLM做所有事,而是明确划分"意图层"(开发者写文档字符串)和"执行层"(框架+模型协作)。
这种分层让调试变得更像传统软件工程。意图不对?改文档字符串。执行失败?查模型日志或调整运行时配置。输出格式漂移?加固Pydantic模型。问题域清晰,排查路径明确。
相比之下,端到端的自然语言编程往往把调试变成考古——你得从模型的"想法"里反推它为什么理解错了。
AWS的克制还体现在工具链整合。AI Functions不试图重新发明Agent架构,而是寄生在已有的Strands生态里。已经用strands.Agent的团队,学习成本几乎为零;没用过的团队,也能从单一功能切入,不必承诺整个技术栈。
风险与限制:实验性意味着什么
AWS的文档列了三条红线。第一,API会变——今天能跑的代码,下个月可能需要改写。第二,延迟不可控——模型生成实现需要时间,不适合热路径。第三,确定性问题——相同输入可能产生不同实现,虽然框架有验证层,但语义漂移的风险客观存在。
这些限制决定了AI Functions的适用边界。离线批处理、探索性数据分析、原型验证是甜区;高频交易、安全关键系统、强合规审计场景则需要谨慎。
一个实用的判断标准:如果任务的"正确性"可以由下游验证(比如Pydantic模型、单元测试、人工抽检),AI Functions是候选方案;如果错误成本极高且不可逆,传统代码仍是首选。
开发者反馈:从"玩具"到"工具"的认知转折
Strands Labs的GitHub讨论区里,早期用户的反馈呈现两极。一部分人觉得"终于不用写提示模板了",另一部分人担心"黑箱又厚了一层"。
一个被多次点赞的评论来自某金融科技公司的数据工程师:「我们处理供应商发票的场景和文档示例几乎一样。之前用传统代码写了800行的格式适配器,维护 nightmare。用AI Functions原型花了20分钟,准确率反而更高——因为模型见过的人类发票格式,比我的正则表达式多几个数量级。」
也有反对声音。一位AWS社区建设者指出:「当模型生成的实现出错时,调试体验比传统代码差一个量级。你得同时理解框架行为、模型偏好、以及你的文档字符串被解析后的实际语义。这种三层认知负担,团队准备好了吗?」
这些争论本身说明AI Functions触及了一个真实张力:软件工程的可维护性,和AI系统的灵活性,能否在同一个框架里共存。
下一步:从实验到生产的桥梁
AWS没有公布AI Functions的GA时间表,但Strands Labs的运作模式提供了线索。实验性项目通常经历三个阶段:GitHub组织内的快速迭代、集成到主SDK的beta通道、最终GA或归档。Robots和Robots Sim的物理AI属性决定了它们会长期留在沙盒,但AI Functions的通用性更强,迁移路径也更清晰。
对于正在评估的团队,建议采取"双轨策略"。在原型和新功能开发中试用AI Functions,积累意图描述的最佳实践;同时保持核心流水线的传统代码,等待API稳定后再逐步迁移。
一个值得监控的信号:AWS是否会把AI Functions的模式反向输出到Bedrock或SageMaker的官方SDK。这种"沙盒验证→主线产品"的路径,在AWS的历史上反复出现。
如果三个月后在Bedrock的更新日志里看到类似的装饰器语法,说明实验通过了内部的生产就绪评估。届时,现在写的文档字符串经验,会直接转化为竞争优势。
当自然语言和代码的边界进一步模糊,开发者需要重新定义"编程"的边界——是精确控制每一行执行,还是学会描述意图并信任框架的纠错能力?你的团队会更倾向哪种分工模式?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.