文件见:[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-Authorizationtoken 调用cantor.VerifyAuthenticationToken(token)验证。这个回调在后续 import模块时传递,确保只有带有效token的请求可执行敏感操作。 -
模块化加载:main.x 通过
import chat(...), import pipeline(...), import training(...), import service(...)将其他XLang模块载入当前命名空间。这些模块文件估计实现了具体业务逻辑,并通过依赖注入(将srv、cantor等对象传入)注册了各自的HTTP接口或后台任务。例如:pipeline.x模块可能实现了HTTP接口来触发自动流水线执行、获取结果等。它很可能使用autopipeline.x或detect_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 平台试图提供端到端的能力,从前端接口到后端调度都涵盖,减少外部依赖。