鸿蒙中 问答模型申请
鸿蒙系统提供端侧问答模型能力,支持PC/2in1设备通过chat()接口实现本地化AI问答。该能力基于Qwen25-7B-Instruct模型,具有数据不上云、低延迟等优势。开发者需在线申请接口权限,配置网络后通过init()初始化模型,下载完成后即可使用流式/非流式问答功能。整个流程包括权限申请、模型初始化、问答交互三个关键步骤,为应用提供安全高效的本地AI服务。
本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
鸿蒙中,当应用通过RAG接口进行知识问答时,系统会经过处理流程:问题分解 → 查询改写 → 知识检索 → 检索生成,该流程需要与大语言模型(LLM)进行多次交互。
应用可选择两种部署:
-
使用自建的云端大模型
-
采用Kit提供的端侧问答模型能力
端侧问答模型的核心优势
| 优势 | 说明 |
|---|---|
| 低成本 | 免除云端大模型的运维成本 |
| 高安全 | 增强用户数据安全性(数据在端侧处理,无需上传云端) |
| 低延迟 | 本地处理,无需网络传输 |
二、限制
1. 设备类型限制
-
仅支持PC/2in1设备类型
-
Phone、Tablet等其他设备类型无法使用此能力
2. 接口调用权限
-
开发者需要申请接口调用才能使用
3. 模型资源
-
模型资源来自Matrix模型库
-
chat接口默认调用模型为Qwen25-7B-Instruct
三、接口说明
端侧问答模型提供两个核心接口:
| 接口名 | 描述 | 关键参数 |
|---|---|---|
init() |
初始化端侧问答模型,负责拉起模型管理应用 | 无 |
chat() |
与端侧模型进行交互,实现问答功能 | QuestionInfo, Config, Callback |
chat接口参数
QuestionInfo(问题信息)
{
questionId: number; // 问题ID,用于标识
content: string; // 问题内容
}
Config(配置)
{
isStream: boolean; // true:流式输出, false:非流式输出
}
Answer(返回结果)
{
content: string; // 回答内容
isFinished: boolean; // 是否完成
}
四、申请接口调用
申请步骤
-
打开在线提单页面
-
填写申请信息
-
问题概述:端侧模型问答接口调用申请
-
问题分类:HarmonyOS 5.0及以上 > 应用框架 > Data Augmentation Kit(数据增强服务)
-
描述详情:按照模板填写完整信息
-
-
提交问题并关注进展
申请信息模板
| 字段 | 示例 |
|---|---|
| 应用名称 | 我的智能问答应用 |
| bundleName | com.example.smartqa |
| AppID | 获取自AGC控制台 |
| 支持PC/2in1设备类型 | 是 |
| 华为开放生态团队对接的企业方应用 | 是/否 |
| 当前鸿蒙化进展 | 已适配HarmonyOS 5.0 |
| 当前已经支持的AI能力 | 文本问答、知识检索 |
| 当前行业与用户影响力 | 教育领域,日活约1万 |
| 应用内容信息介绍 | 提供专业知识问答服务 |
注意:优先处理华为开放生态团队对接的企业方应用
五、开发步骤
步骤1:配置网络权限
由于端侧模型与LLM通过http请求交互,需要在module.json5中配置网络权限:
// module.json5
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
}
}
步骤2:初始化端侧模型
调用init()接口,拉起本地AI模型管理:
import { localChatModel } from '@kit.DataAugmentationKit'
import { BusinessError } from "@kit.BasicServicesKit";
async function initModel(): Promise<void> {
try {
await localChatModel.init();
console.info('模型初始化成功');
} catch (err) {
const error = err as BusinessError;
console.error('模型初始化失败:', error.message);
}
}
首次拉起:
-
弹出隐私声明界面
-
用户同意后下载默认模型(Qwen25-7B-Instruct)
非首次拉起:
-
用户可通过设置 > 系统 > 本地AI模型管理下载默认模型
步骤3:进行端侧问答
模型下载完成后,调用chat()接口进行问答:
async function doChat(questionId: number, question: string): Promise<void> {
const questionInfo: localChatModel.QuestionInfo = {
questionId: questionId,
content: question
};
const localConfig: localChatModel.Config = {
isStream: true // 启用流式输出
};
try {
localChatModel.chat(questionInfo, localConfig,
(err: BusinessError, ans: localChatModel.Answer) => {
if (err) {
console.error('问答失败:', err.message);
return;
}
if (ans.content) {
console.log('收到回答:', ans.content);
}
if (ans.isFinished) {
console.log('问答完成');
}
}
);
} catch (err) {
const error = err as BusinessError;
console.error('chat调用失败:', error.message);
}
}
端侧问答模型是鸿蒙系统提供的一项重要AI能力:
| 维度 | 说明 |
|---|---|
| 适用设备 | PC/2in1设备 |
| 默认模型 | Qwen25-7B-Instruct |
| 核心接口 | init(), chat() |
| 输出模式 | 流式/非流式 |
| 安全特性 | 数据本地处理,不上云 |
| 申请方式 | 在线提单申请权限 |
使用流程:
-
申请接口权限(填写完整信息)
-
配置网络权限
-
调用init初始化
-
等待模型下载完成
-
调用chat进行问答
更多推荐




所有评论(0)