AOG (AIPC Open Gateway) Preview
中文 | English
当前为 AOG 预览版 v0.3.0,更多功能和稳定性正在不断完善过程中。欢迎就发现的缺陷提交 Issues。
当前版本支持 chat、embed、text-to-image 服务,下层支持 ollama 和 openvino model server。更多服务如视频、音频相关,以及其他 AI 引擎,敬请
期待正在开发的后续版本。
详细中文文档请参见此处
AOG 的功能
AOG(AIPC Open Gateway)的目标是解耦 AI PC 上的 AI 应用与它所依赖的 AI 服务。它旨在为开发者提供一个
极其简单易用的基础设施,以便他们在开发环境中安装本地 AI 服务,并发布他们的 AI 应用程序,无需打包自己
的 AI 堆栈和模型。
graph TB
classDef pc_style color:#aaa, fill:#fcfcfc, stroke:#ddd, stroke-dasharray: 5 5
classDef service_style fill:#fcc,stroke:#333
classDef aog_style fill:#ffc,stroke:#333
classDef model_style fill:#efc,stroke:#333
aog(AOG API Layer):::aog_style
ai_x:::service_style
ai_y:::service_style
ai_m:::service_style
model_x:::model_style
model_y:::model_style
pc:::pc_style
aog -.-> ai_m
subgraph ai_m [AI Service Provider from Cloud]
end
subgraph pc[AIPC]
direction TB
a(Application A) --> aog
b(Application B) --> aog
aog --> ai_x
aog --> ai_y
subgraph ai_x [AI Service Provider]
model_x(AI Models):::model_style
end
subgraph ai_y [AI Service Provider]
model_y(AI Models):::model_style
end
end
通过 AOG 提供统一的平台级的 AI 服务,AI 应用不再需要随自己的程序一起打包和发布 AI 引擎及模型。同时
,AI PC 上的多个 AI 应用使用统一的 AOG 提供的 AI 服务,因而无需冗余地部署和启动自己的 AI 栈。这显著
减少了应用大小,消除了每个应用重复下载相同 AI 栈和模型的情况,并在执行过程中避免了内存消耗的竞争。
AOG 提供以下基本功能:
构建 AOG 命令行工具
作为开发者,为了构建 AOG,您需要在您的系统上安装 golang。
如果您的开发环境是 Windows,您可能需要安装 MSYS2 ,以获得 Make 等命令。
由于 AOG 需要开启 CGO 依赖,所以您可能需要安装MinGW-W64,以便开启CGO支持。
接着,将此项目下载或克隆到如 /path_to_aog 的目录中。
然后运行以下命令:
cd /path_to_aog
# Set GOPROXY as appropriate
go env -w GOPROXY=https://goproxy.cn,direct
# win
set CGO_ENABLED=1 && go build -o aog.exe -ldflags="-s -w" cmd/cli/main.go
这将生成一个名为 aog 的可执行文件,它是 AOG 的命令行工具,请将它加入到您的环境变量 PATH 中,否则它会影响运行。
使用 AOG 命令行工具
您可以通过输入 aog -h 来查看命令行工具的帮助信息。
使用命令启动和停止 AOG 服务
# 前台启动AOG
aog server start
# 后台启动AOG
aog server start -d
# Debug模式启动
aog server start -v
# 停止AOG
aog server stop
AOG 有两个关键概念:服务(Service) 和 服务提供商(Service Provider):
- 服务是一组 AI 功能,例如聊天 (chat)、嵌入(embed) 等,提供 RESTful 接口供应用程序调用使用。
- 服务提供商是实现并提供服务的具体实体。服务提供商可以是本地或远程的。
一个服务可以有多个服务提供商。例如,聊天服务可以同时有本地聊天服务提供商和远程聊天服务提供商。 其中
本地服务提供商由 ollama 提供,远程服务提供商由远程的 DeepSeek 或者通义千问提供。当应用程序使用 AOG
的 RESTful API 调用聊天服务的时候,AOG 会根据一定的规则, 自动选择合适的服务提供商,来完成该服务的真
正调用。
作为开发者,可以通过如下命令来快速安装、导入和配置相应的 AOG 服务和服务提供商
# 将 AI 服务安装到本地
# AOG 将安装必要的 AI 堆栈(如 ollama/openvino)和 AOG 推荐的模型
aog install chat
aog install embed
aog install text-to-image
# 除了默认的模型之外,您可以在服务中安装更多的模型
aog pull <model_name> -for <service_name> --provider <provider_name>
# 获取服务信息,可查看指定服务,未指定则输出全部服务信息
aog get services <service_name>
# 修改服务配置
# hybrid_policy 指定具体服务的调度策略,可选值有 always_local, always_remote, default
# remote_provider 指定远程服务提供商
# local_provider 指定本地服务提供商
aog edit service <service_name> --hybrid_policy always_remote --remote_provider xxx --local_provider xxx
# 获取服务提供商信息,可设置可选参来获取指定服务提供商信息
aog get service_providers --service <service_name> --provider <provider_name> --remote <local/remote>
# 获取模型信息,可设置可选参获取指定模型信息
aog get models --provider <provider_name>
# 安装服务提供商, 安装过程中会自动拉取模型
aog install service_provider -f xx/xxx.json
# 文件名不作要求,内容需为json格式,示例:
{
"provider_name": "local_ollama_chat"
"service_name": "chat",
"service_source": "local",
"desc": "Local ollama chat/completion",
"api_flavor": "ollama",
"method": "POST",
"url": "http://localhost:11434/api/chat",
"auth_type": "none",
"auth_key": "",
"models": [
"qwen2.5:0.5b",
"qwen2:0.5b"
]
}
# 修改服务提供商配置,这里仅可修改服务商配置信息,模型变更需通过拉取模型和删除模型来进行
aog edit service_provider <provider_name> -f xxx/xxx.json
# 示例:
{
"provider_name": "local_ollama_chat"
"service_name": "chat",
"service_source": "local",
"desc": "Local ollama chat/completion",
"api_flavor": "ollama",
"method": "POST",
"url": "http://localhost:11434/api/chat",
"auth_type": "none",
"auth_key": "",
}
# 删除服务提供商
aog delete service_provider <provider_name>
# 删除模型 必选参数:--provider
aog delete model <model_name> --provider <provider_name>
调用 AOG API
AOG API 是一个 Restful API。您可以通过与调用云 AI 服务(如 OpenAI)类似的方式调用该 API。详细的 API
规范请参见 AOG API 规范.
值得注意的是,当前 AOG 预览提供了基本的 chat 等服务,下一版本将会提供视频、音频相关的更多服务。
当前版本的文生图服务基于 OpenVINO 实现(仅支持 Windows 系统),通过 modelscope 拉取openvino转换过的 IR 格式的文生图模型提供服务。
例如,您可以使用 curl 在 Windows 上测试聊天服务。
curl -X POST http://localhost:16688/aog/v0.3/services/chat -X POST -H
"Content-Type: application/json" -d
"{\"model\":\"deepseek-r1:7b\",\"messages\":[{\"role\":\"user\",\"content\":\"why is
the sky blue?\"}],\"stream\":false}"
此外,如果您已经使用 OpenAI API 或 ollama API 等的应用程序,您无需重写调用 AOG 的方式以符合其规范。
因为 AOG 能够自动转换这些流行风格的 API,因此您只需更改端点 URL,就可以轻松迁移应用程序。
例如,如果您使用的是 OpenAI 的聊天完成服务,您只需将端点 URL 从
https://api.openai.com/v1/chat/completions 替换为
http://localhost:16688/aog/v0.3/api_flavors/openai/v1/chat/completions。
NOTE 请注意,调用 AOG 的新 URL 位于 api_flavors/openai ,其余 URL 与原始 OpenAI API 相同,即
/v1/chat/completions 。
如果您使用 ollama API,可以将端点 URL 从 https://localhost:11434/api/chat 替换为
http://localhost:16688/aog/v0.3/api_flavors/ollama/api/chat 。同样,它位于 api_flavors/ollama ,
其余 URL 与原始 ollama API 相同,即 /api/chat。
发布您的基于 AOG 的 AI 应用
要将您的 AI 应用程序发布,您只需将应用程序与一个微小的 AOG 组件打包,即所谓的 AOG Checker ,在
Windows 上是 AOGChecker.dll 。您不需要发布 AI 堆栈或模型。
以 C/C++/C#应用程序为例,以下是部署基于 AOG 的 AI 应用的步骤。
- 准备与您的应用程序一起的
.aog 文件。 .aog 文件是一个文本清单文件,用于指定应用程序所需的 AI
服务和模型。例如, .aog 文件可能看起来像这样:
{
"version": "0.3",
"service": {
"chat": {
"models": ["qwen2.5:0.5b", "qwen2.5:7b"]
},
"text-to-image": {
"models": ["OpenVINO/stable-diffusion-v1-5-fp16-ov"]
}
}
}
-
在您的 main() 函数中包含 AOGChecker.h 并调用 AOGInit() 。 AOGInit() 将:
- 检查目标 PC 上是否已安装 AOG。如果没有,将自动下载并安装 AOG。
- 检查所需的 AI 服务和模型(如在
.aog 文件中体现)是否已安装。如果没有,将自动下载并安装它们。
-
将应用程序与 aog.dll 链接。
-
将应用程序与 .aog 文件以及与您的应用程序 .exe 文件在同一目录下的 AOGChecker.dll 文件一起发
布。