Skip to content

AidGenSE

💡注意

该版本是 AidGenSE 的一个临时版本,下一个发布的版本是正式版,接口调用方式会有细微改动,使用案例也会更丰富

介绍

AidGenSE 是基于 AidGen SDK 封装的适配了 OpenAI HTTP 协议的生成式 AI HTTP 服务。开发者可以通过 HTTP 方式调用生成式 AI 并快速集成到自己的应用中。

💡注意

Model Farm 支持的大语言模型均通过 AidGen 实现在高通芯片NPU上的推理加速。

支持情况

硬件支持情况

CPUGPUNPU
高通
联发科 (MTK)🚧
瑞芯微🚧

✅:已支持 🚧:计划支持

💡注意

关于高通NPU可支持的大模型种类可以访问 Model Farm 进行查看

快速开始

安装部署

安装 AidLux APP (Linux 设备可以跳过此步骤)

该 AidLux APP 是一个精简最小化版的应用,请联系阿加犀技术支持获取安装

服务部署

💡注意

Android 环境需要在 AidLux APP 中操作。在 AidLux APP 的命令行中执行下面操作。 用户也可以通过拷屏方式在电脑端访问安卓界面进行操作,具体请参考常见问题——拷屏安卓设备

bash
# ----------------------工具安装---------------------- #
# 下载aidllm工具
wget http://117.176.129.180:65323/llm/install/v2/aidllm_1.2.0_arm64.aid.gpg

# 安装aidllm
sudo aid-pkg -i -d aidllm_1.2.0_arm64.aid.gpg

# 安装 API 服务
sudo aidllm install api

# ----------------------支持的模型查询---------------------- #
sudo aidllm remote-list

# 输出内容如下

Current Soc : 8550

Name                    Url                           CreateTime
-----                   ---------                     ---------
aplux_deepseekr1-1.5B   aplux/aplux_deepseekr1-1.5B   2025-03-05 14:51:23
aplux_qwen2-1.5B        aplux/aplux_qwen2-1.5B        2025-03-05 14:52:03
aplux_qwen2-7B          aplux/aplux_qwen2-7B          2025-03-05 14:52:37
aplux_qwen2.5-3B        aplux/aplux_qwen2.5-3B        2025-03-05 14:52:23
aplux_qwen2-0.5B        aplux/aplux_qwen2-0.5B        2025-03-05 14:51:40

# ----------------------下载并查看对应模型---------------------- #
# e.g. 拉取 qwen2-7B模型:sudo aidllm pull aplux/aplux_qwen2-7B
sudo aidllm pull <Url>

# 查看本地已下载的模型
sudo aidllm list
bash
# ----------------------工具安装---------------------- #
# AidLux APP 已经预装了 aidllm 工具

# 安装 API 服务
sudo aidllm install api

# ----------------------支持的模型查询---------------------- #
sudo aidllm remote-list

# 输出内容如下

Current Soc : 8550

Name                    Url                           CreateTime
-----                   ---------                     ---------
aplux_deepseekr1-1.5B   aplux/aplux_deepseekr1-1.5B   2025-03-05 14:51:23
aplux_qwen2-1.5B        aplux/aplux_qwen2-1.5B        2025-03-05 14:52:03
aplux_qwen2-7B          aplux/aplux_qwen2-7B          2025-03-05 14:52:37
aplux_qwen2.5-3B        aplux/aplux_qwen2.5-3B        2025-03-05 14:52:23
aplux_qwen2-0.5B        aplux/aplux_qwen2-0.5B        2025-03-05 14:51:40

# ----------------------下载并查看对应模型---------------------- #
# e.g. 拉取 qwen2-7B模型:sudo aidllm pull aplux/aplux_qwen2-7B
sudo aidllm pull <Url>

# 查看本地已下载的模型
sudo aidllm list

UI 服务部署 (可选项)

💡注意

Android 环境需要在 AidLux APP 中操作。在 AidLux APP 的命令行中执行下面操作。 用户也可以通过拷屏方式在电脑端访问安卓界面进行操作,具体请参考常见问题——拷屏安卓设备

bash
# 安装 UI 前端
sudo aidllm install ui

启动服务

启动大模型 API 服务

bash
# 当提示 Api server start successfully,表示 API 启动成功
sudo aidllm api start

# 当本地存在多个模型时,可以指定模型启动,e.g. sudo aidllm api start -m aplux_qwen2.5-3B
sudo aidllm api start -m <model_name>
  • 查询状态:sudo aidllm api status
  • 停止服务:sudo aidllm api stop
  • 重启服务:sudo aidllm api restart

启动 UI 服务器 (可选项)

bash
# 当提示 UI server start successfully,表示 UI 服务启动成功
sudo aidllm ui start
  • 查询状态:sudo aidllm ui status
  • 停止服务:sudo aidllm ui stop

访问 Demo 网页

使用浏览器访问网址:http://ip:51104/ 可以看到如下界面:

提示

IP 地址为硬件设备的 IP 地址

接口文档

AidGenSE HTTP 接口文档

例子

使用 Python 调用

服务启动

bash
sudo aidllm api start -m aplux_qwen2-7B

Python调用

python
import os
import requests
import json

def stream_chat_completion(messages, model="aplux_qwen2-7B"):

    url = "http://127.0.0.1:8888/v1/chat/completions"
    headers = {
        "Content-Type": "application/json"
    }
    payload = {
        "model": model,
        "messages": messages,
        "stream": True    # 打开流式
    }

    # 发起带 stream=True 的请求
    response = requests.post(url, headers=headers, json=payload, stream=True)
    response.raise_for_status()

    # 逐行读取并解析 SSE 格式
    for line in response.iter_lines():
        if not line:
            continue
        # print(line)
        line_data = line.decode('utf-8')
        # SSE 每一行以 "data: " 前缀开头
        if line_data.startswith("data: "):
            data = line_data[len("data: "):]
            # 结束标志
            if data.strip() == "[DONE]":
                break
            try:
                chunk = json.loads(data)
            except json.JSONDecodeError:
                # 解析出错时打印并跳过
                print("无法解析JSON:", data)
                continue

            # 取出模型输出的 token
            content = chunk["choices"][0]["delta"].get("content")
            if content:
                print(content, end="", flush=True)

if __name__ == "__main__":
    # 示例对话
    messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "你好。"}
    ]
    print("Assistant:", end=" ")
    stream_chat_completion(messages)
    print()  # 换行