在Serverless Devs中支持AI工具的集成规范提案 #888
hanxie-crypto
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
随着AI时代的到来,智能体(Agent)成为了应用落地的关键形态。为了促进AI工具的标准化开发、部署和运维,我们提出在Serverless Devs中引入AI Tools类别,构建一个基于Serverless架构的AI工具生态,以便于AI应用开发者更便捷地使用和构建AI工具。
动机
AI工具的开发和运维过程中存在诸多挑战,包括但不限于环境配置复杂、部署流程不一致、运维管理困难等问题,此外广大开发者需要一个能够AI Tools 的集散地进行开发和使用, Serverless架构以其自动扩缩容、按需付费等特性,为解决这些问题提供了新的可能性。Serverless Devs作为一个面向Serverless应用的开发运维工具,具备整合AI工具的天然优势。
背景
什么是AI Tools
AI Tools 是面向 AI Agent 使用的 “执行工具”, 他的具象化表达,在程序中是一个一个的“函数”,比如《天气查询》,《搜索引擎搜索》等等, AI Tools 有着标准的输入和输出, 并且需要有清晰的工具使用声明
AI Tools 的重要性
我们知道, 以LLM为核心的智能应用,要想取得跟物理世界的关联进一步发挥AI的生产力价值, 需要以 Agent的形态构建。而Agent实现的具体方案就是调用工具函数。工具函数的丰富度,稳定性,安全性,以及构建工具函数的便利性,敏捷性是智能应用好坏的关键。
丰富度: 越多的工具能力构建的智能应用就越强大,而且可复用工具对开发智能应用也是极大的效率提升
稳定性: 调用的工具能够支持高并发,具备较高容错,不易崩溃
安全性: 工具的崩溃不能够影响主进程安全,工具应该尽有可能独立的沙盒运行环境,防止通过工具攻击主进程
Serverless 构建 AI Tools 的优势
安全稳定
Serverless 的运行时提供了安全隔离的能力,以及稳定运行的保障
开发部署高效
Serverless Devs 的应用生态相关的经验可以移植到 AI 工具, 提供AI Tools 工程规范,方便开发者开发调试,同时支持对多语言及不同厂商的高效部署运维。
工具能力丰富
Serverless Devs Registry 站点 为广大的AI应用开发者提供 AI Tools 能力中心,拥有丰富的AI Tools模版供开发者使用
便于集成
基于Serverless AI Tools 规范构建及发布的 AI 工具可以以标准化的http 服务集成到各种智能体平台以及开发框架中,包括但不限于, 百炼、Coze、Dify, Appbuilder, langchain ,spring ai alibaba等
Serverless Devs AI Tools 开发使用协作示例
目标和范围
本提案的目标是定义Serverless AI Tools的集成规范,包括但不限于:
定义AI工具的标准化开发流程。
确定AI工具的部署和运维标准。
在Serverless Devs中引入AI Tools类别,并提供相应的支持。
技术设计
AI Tool 规范定义(分两种)
在Serverless Devs中引入AI Tool类别,跟 应用、组件,插件三大类齐平 。 工程化规范跟 应用基本一致, 在配置项及内部工程约定上有少许差异。AI Tool 综合外部事件和函数的事件进行两种设计:
规范一和规范二比较
规范一
规范一采用方法包分开的模式,
AI Tool 工程代码整体结构:
|————LICENSE
|————.signore
|————README.md
|————publish.yaml
|————src
|———— s.yaml
|———— method1
|————toolset.yaml
| ... 核心代码
|———— method2
|————toolset.yaml
| ... 核心代码
|———— common-util
| ... 公共方法代码
AI Tool 采用“一工具多方法”的规范,最外层的publish.yaml 声明工具的名称和作用等,工具具体的执行方法则拆成独立的“函数包” 存放与 src 目录,由配置管理文件, s.yaml 统一管理。比如这里一个工具包含了两个方法, method1 , method2, method1 和method2 各自独立。
++考虑到开发者有希望复用工具方法包的需求,我们暂时预留++++common-util作为官方解析公共方法的关键词,++++后续我们会提供monorepo的工程规范,方便开发使用。++
AI Tool 的整体声明配置文件 publish.yaml
Type 新增 ++AITool++ 作为AI 工具分类的标识, 同时增加 ++Disclaimer++ 免责声明属性和 ++PrivacyStatement++ 隐私声明属性,帮助AI工具作者避免法务风险。
AI Tool 的部署配置文件 s.yaml
s.yaml 基础属性不变,仅约定, resource 子项跟 工具的方法名保持一致,参考下方具体示例
publishArticleToCSDN 作为 csdn 工具的方法之一,被声明到 resources 属性之下
AI Tool 方法的属性声明文件 tool-spec.yaml
方法属性声明文件tool-spec.yaml, 主要是为了该工具注册到 Serverless Devs Registry 对外透出的入参和出参详情,每一个方法对应的入参出参可能都会有差异,因此,该配置文件存放于具体方法的根目录,相关的示例如下
预留多语言属性,目前以中英文为主, 整体方法和方法参数的 human 和 llm都可以各自添加描述,方便增强智能体的注册精度(向人解释工具的能力和向LLM解释工具的能力有时候会存在差异)
规范二
规范二采用标准的open api , 所有方法在一个web服务下
AI Tool 工程代码整体结构:
|————LICENSE
|————.signore
|————README.md
|————publish.yaml
|————src
|———— s.yaml
|———— code
|————toolset.yaml
| ... 核心代码
示例
AI Tool 采用“一工具多方法”的规范,最外层的publish.yaml 声明工具的名称和作用等(同规范一),而内部仅用一个工程,统一放到resources 目录, 开发者除了写代码也可以仅配置元数据
AI Tool 的整体声明配置文件 publish.yaml
同规范1
AI Tool 的部署配置文件 s.yaml
s.yaml 基础属性不变,仅约定, resource 子项跟 工具的方法名保持一致,参考下方具体示例
s.yaml的声明直接对齐工具
AI Tool 方法的属性声明文件 toolset.yaml
toolset.yaml 包含对工具的描述扩展信息和调用信息
API和SDK支持
工具被调用的规范应支持标准http 以及 sdk,其行为跟供应商服务相关,以阿里云为例,社区的AI工具作为事件函数或者web函数部署到FC, CAP平台,平台会提供 http 调用服务,以及通过基于阿里云SDK的SDK 服务
用例场景
AI Tools 的集成分为平台以及代码框架,
平台集成:
阿里云百炼
COZE
代码集成
代码框架中function call的方案参考各LLM API 的规范,下面只提供具体工具函数调用示例,以下以阿里云SDK调用函数计算function示例 ,++关注 invoke 方法, 传入的参数为工具方法名,如上述的publishArticleToCSDN,以及工具方法参数等,++您可以将此方法封装作为function call 具体执行函数的基础方法。
内部细节
数据模型和API接口
新增模版类型需要S命令行的支持待确认
安全性和隐私
除上述对于工具方法隔离性以及安全调用等其他要求待补充
性能考量
特殊场景工具调用的性能诉求
示例和代码
参考https://github.com/devsapp/ai-tool-csdn 分支 spec-1 spec-2 分别对应规范一和规范二示例
讨论
本次提案需要大家进行两个讨论
讨论工具分包部署和整体部署的方式,大家可以选择规范1 或者规范2,或者二者你认为都需要
讨论引入 tool-spec.yaml 的路径问题, too-spec.yaml 跟 s 平级或者 tool-spec.yaml 跟代码包一起存放,(考虑存在一种情况,tool-spec.yaml 是标准的openapi 的定义, 比如访问google 搜索api, 不需要代码)
结论和下一步
根据讨论结果进行进一步落地实现
Beta Was this translation helpful? Give feedback.
All reactions