Skip to content

Latest commit

 

History

History
35 lines (24 loc) · 4.21 KB

File metadata and controls

35 lines (24 loc) · 4.21 KB

4.1.4 示例4:综合应用(main.x)

文件见:[CantorAI Home]\GalaxyStudio\main.x

案例描述**:main.x 似乎是一个将 CantorAI 平台各部分集成起来的主服务程序。它引入了多个模块,例如聊天接口、流水线接口、训练接口、服务接口等,并通过 HTTP API 提供对外服务。可以认为,这代表了一个完整应用(比如一个AI应用管理后台),而不仅仅是单一任务。

main.x 关键逻辑包括:

  • 启动 Web 服务:使用 http.Server() 创建HTTP服务器实例 srv,配置静态文件路径、默认文件等,然后利用 @srv.route() 装饰器为不同URL注册处理函数。例如 @srv.route("/api/users/verify") 绑定了 users_verify() 函数,将请求转发给 portal_server 进行用户验证。

  • 身份认证:main.x 定义了一个 verify_token_for_cantor(req) 函数,用于从请求中提取 Vega-Authorization token 调用 cantor.VerifyAuthenticationToken(token) 验证。这个回调在后续 import模块时传递,确保只有带有效token的请求可执行敏感操作。

  • 模块化加载:main.x 通过 import chat(...), import pipeline(...), import training(...), import service(...) 将其他XLang模块载入当前命名空间。这些模块文件估计实现了具体业务逻辑,并通过依赖注入(将srv、cantor等对象传入)注册了各自的HTTP接口或后台任务。例如:

    • pipeline.x 模块可能实现了HTTP接口来触发自动流水线执行、获取结果等。它很可能使用 autopipeline.xdetect_core.x 中的函数。
    • chat.x 模块可能实现聊天对话相关API。
    • training.x 模块或许提供触发模型训练的功能。
    • service.x 模块可能管理节点间的服务(如查询节点状态、执行管理命令等)。
  • Portal 集成:main.x 里有 portal_server_url 设定和验证用户API,它貌似接入了一个统一门户/账户系统 (portal.cantorai.com)。这说明这个服务可以与云端服务对接,实现混合云场景:本地分布式平台通过token验证云端账户权限,实现零信任接入。

  • KV 存储:main.x 用 kvstore.create_settings_db(galaxy_studio_db_path) 建立了Galaxy Studio的设置数据库。然后 cantor.KV() 可能获取分布式KV接口,用于共享配置。

从架构上看,main.x 扮演了应用服务器角色,它建立了一个HTTP入口,把外部请求路由到内部各种功能模块,同时通过Cantor提供的API与底层分布式资源交互。例如,当收到一个请求启动某AI流水线处理,pipeline模块里很可能调用 autopipeline.run_pipeline 来加载并运行Galaxy流水线。

autopipeline.x 则是 main.x 加载的一个模块,它的作用从第5章分析可知:管理多个预定义流水线的启动和切换,主要提供两个功能:

  • run_pipeline(engineName) 根据名称加载对应的YAML流水线并启动。
  • detect_request(engineName, img_file_path) 调用 run_pipeline 确保管道运行,然后将图像打包为DataFrame投入流水线。
  • 以及停止所有流水线函数等。

可以推测,pipeline.x 模块可能提供HTTP接口来调用这些函数。例如当用户通过前端上传一张图让AI检测,HTTP请求 /api/pipeline/detect (假设) 抵达 pipeline.x 模块,该模块提取图像路径调用 autopipeline.detect_request("Detectron", path),这样图像被送入Galaxy流水线处理,处理结果则通过 get_output_pinInfo 之类从 Endpoint获取。然后 pipeline.x 把结果返回HTTP响应。

  • CantorAI 将HTTP服务和分布式执行融合在一个XLang进程内,用统一语言编写,且能直接调用Cantor调度。
  • 安全上,CantorAI通过token和Cantor.VerifyAuthenticationToken实现零信任令牌校验。
  • 模块化上,CantorAI可以把不同功能划分XLang模块并动态import,很像Python import包。CantorAI通过注入srv, cantor对象给模块,让模块注册各自服务,很有框架味道(类似依赖注入容器)。
  • 监控上,CantorAI Galaxy Studio可能能管理整个应用及集群。

这一案例说明,CantorAI 平台试图提供端到端的能力,从前端接口到后端调度都涵盖,减少外部依赖。