智能文本生成:实现AI写作助手功能(282)
·
在鸿蒙生态中实现 AI 写作助手功能,开发者可以根据业务对隐私、性能和复杂度的要求,选择以下三种主流的技术方案:
方案一:集成鸿蒙 Copilot 智能聊天组件(推荐)
这是最便捷的接入方式。Copilot 是鸿蒙官方提供的智能聊天组件,内置了完整的聊天界面和交互体验,支持流式响应和自定义 UI。
- 核心特性:支持对接 DeepSeek、Qwen 等主流大语言模型,提供文本消息、动作执行等多种消息类型,并可集成语音输入功能。
- 接入方式:在 ArkTS 中引入
@hw-agconnect/copilot包,通过配置CopilotController传入大模型的baseUrl、apiKey以及系统提示词(如“你是一个AI办公写作助手”),即可快速构建出具备对话、续写、润色能力的写作助手。
方案二:接入本地 AI 模型(主打高隐私与离线可用)
如果写作场景涉及高度敏感数据,或者需要在无网络环境下运行,可以利用鸿蒙的本地 AI 模型管理能力。
- 核心特性:模型完全部署在用户设备上,问答数据仅本地处理,不上云。目前本地 AI 已支持文档问答、摘要、润色改写和排版等核心写作功能。
- 接入方式:开发者可在系统设置中下载并管理本地模型(如 1.5B、7B 等小参数模型),并通过 Chatbox、Cherry Studio 等支持的三方应用进行调用。需要注意的是,本地模型的效果会受限于设备的硬件性能资源。
方案三:利用小艺开放平台构建专属工作流(主打复杂业务自动化)
对于需要处理复杂逻辑的专业级写作需求,可以基于 HarmonyOS 5.0 的小艺开放平台进行深度定制。
- 核心特性:支持“工作流模式”,开发者可以将复杂的写作任务拆解为一系列规则化步骤(如:大纲生成 → 内容扩写 → 语法纠错 → 风格润色),通过串联大模型和自定义插件实现自动化执行。
- 接入方式:通过鸿蒙 Agent 通信协议(HACP),将已有的第三方写作智能体快速接入小艺开放平台,实现能力的分发与调用。
一、 Copilot 组件高阶定制:流式响应与 Agent 动作绑定
官方 Copilot 组件不仅提供开箱即用的 UI,还支持深度定制交互逻辑,实现从“对话”到“业务执行”的闭环。
// 1. 初始化控制器并注入系统提示词
controller: CopilotController = new CopilotController({
llm: {
baseUrl: 'https://api.deepseek.com/v1',
apiKey: 'your-api-key',
model: 'deepseek-chat'
},
systemPrompt: '你是一个专业的AI办公写作助手,擅长公文撰写、文案润色和大纲生成。'
});
// 2. 注册自定义 Agent 动作(FrontendAction)
// 当大模型识别到用户需要“导出文档”时,触发端侧原生能力
this.controller.registerAction({
name: 'exportDocument',
description: '将生成的文章导出为本地 Word 或 PDF 文件',
execute: async (params) => {
await fileIo.writeFile(context.filesDir + '/article.docx', params.content);
return '文档已成功导出至本地存储';
}
});
二、 本地 AI 架构:模型量化与端侧性能调优
对于高隐私的本地写作场景,必须在模型体积、推理速度与生成质量之间取得平衡。
- 模型量化策略:推荐使用 INT4/INT8 量化技术。例如,将 7B 参数的模型量化后,体积可压缩至原大小的 1/4(约 3.5-5GB),显存需求大幅降低,且推理速度提升 3 倍以上,同时保证润色、摘要等任务的精度损失在可控范围内。
- 动态加载与缓存:通过 AbilitySlice 实现模型按需加载,减少应用冷启动时的内存占用;对高频的写作指令(如“帮我总结”)建立本地缓存,降低本地 NPU 的重复计算频率。
- 系统级集成:在鸿蒙 PC 或高端设备上,用户可通过“系统设置 > 本地AI模型管理”下载 DeepSeek 或 Qwen 的 1.5B/7B 模型,应用通过本地端口(如
127.0.0.1:11434)直接调用,全程数据不出端。
三、 小艺开放平台:复杂写作工作流的可视化编排
针对“大纲生成 → 内容扩写 → 语法纠错 → 风格润色”等复杂链路,采用云工作流模式实现自动化。
- 节点化编排:在小艺开放平台的画布中,添加“开始节点”接收
USER_INPUT(用户原始需求)和FILES_INPUT(用户上传的参考文档),串联多个大模型节点与文本处理组件。 - 多模态输入处理:利用文本处理组件提取用户上传的 PDF 或 Word 文件链接,将其作为上下文注入到“内容扩写”节点,实现基于参考资料的精准创作。
- 闭环测试与发布:在平台内点击【试运行】,验证各节点的输入输出与调测树信息,确保逻辑无误后点击【上架】。随后通过鸿蒙 Agent 通信协议(HACP)将工作流接入应用,实现能力的系统级分发。
四、 内容安全与合规:防 AI 检测的文本反制策略
AI 生成的文本往往具有句式规整、词频统一、流畅度过高等统计特征,容易被检测工具识别。企业级写作助手必须内置“反 AI 痕迹”机制。
- 生成阶段前置约束:在调用大模型时,通过 System Prompt 注入防 AI 指令,要求模型避免使用“首先/其次/综上所述”等机械连接词,主动采用长短句穿插、主被动语态混合的表达方式。
- 人工原创度注入:在 UI 层引导用户在关键段落插入个人真实案例、实验数据或主观观点。只要文本中 30% 以上为人工原创内容,绝大多数检测工具将判定为人工创作。
- 反向润色降规整度:提供“轻松/口语化”风格的二次润色选项,刻意打破 AI 生成的过度完美通顺感,增加轻微的思考停顿与生活化表达。
五、 离线编辑与在线同步:断网场景下的数据一致性
对于移动端写作,网络环境复杂。必须设计完善的离线缓存与冲突解决机制。
// 1. 监听网络状态,动态切换编辑模式
connection.on('netAvailable', (netHandle) => {
this.isOnline = true;
this.syncOfflineCache(); // 联网后自动触发同步
});
// 2. 离线操作本地缓存(操作日志记录)
async function saveOfflineEdit(content: string) {
const log = {
timestamp: Date.now(),
action: 'update',
payload: content
};
await preferences.put('offline_log', JSON.stringify(log));
}
// 3. 联网后合并冲突并清空缓存
async function syncOfflineCache() {
const logs = await preferences.get('offline_log');
await cloudDB.merge(logs); // 上传本地操作并拉取远端变更
await preferences.delete('offline_log');
}
六、 小艺工作流进阶:多模态文件解析与处理
在小艺开放平台的云工作流模式中,支持用户上传参考资料,实现基于文档的精准创作。
- FILES_INPUT 参数配置:在智能体设置中开启“输入文件设置”,允许用户上传照片或文档。工作流的“开始节点”会自动通过
FILES_INPUT接收文件链接数组。 - 文本处理组件提取:由于后续大模型节点需要文本输入,需在工作流中串联“文本处理组件”,使用
${input[0]}语法从FILES_INPUT数组中提取目标文件链接,传递给文档解析插件。 - 多文件顺序处理:若用户同时上传多个文件,可通过多个文本处理组件分别提取,或在工作流中配置循环处理逻辑,实现批量文档的摘要与融合。
七、 跨端协同创作:多设备无缝接续
鸿蒙的分布式能力为写作助手提供了极致的跨端体验。
- 跨设备接续编辑:用户在手机上通过小艺语音生成大纲,可无缝流转至平板或 PC 端进行精细化编辑。AI 生成内容与人工修改内容实时同步。
- PC 端精细调整:同步至 PC 后,用户可利用 WPS/Word 进行段落微调、标点替换(如用逗号拆分长句、增加破折号),进一步降低 AI 文本的机械感。
- 系统级 AI 入口联动:写作助手可与鸿蒙备忘录 AI、小艺语音助手联动,用户在任意入口生成的草稿,均可通过分布式数据管理子系统自动同步至写作助手的云文档中。
八、 Copilot 组件:流式对话与 Agent 动作绑定
使用官方 Copilot 组件快速构建具备对话、续写、润色能力的写作助手。
// CopilotWriter.ets:AI 写作助手核心页面
import { CopilotController, CopilotComponent } from '@hw-agconnect/copilot';
@Entry
@Component
struct CopilotWriter {
// 1. 初始化控制器并注入系统提示词
private controller: CopilotController = new CopilotController({
llm: {
baseUrl: 'https://api.deepseek.com/v1',
apiKey: 'your-api-key',
model: 'deepseek-chat'
},
systemPrompt: '你是一个专业的AI办公写作助手,擅长公文撰写、文案润色和大纲生成。'
});
aboutToAppear() {
// 2. 注册自定义 Agent 动作(FrontendAction)
this.controller.registerAction({
name: 'exportDocument',
description: '将生成的文章导出为本地 Word 或 PDF 文件',
execute: async (params) => {
// 触发端侧原生文件导出能力
const path = getContext(this).filesDir + '/article.docx';
// await fileIo.writeFile(path, params.content);
return '文档已成功导出至本地存储';
}
});
}
build() {
Column() {
// 3. 渲染 Copilot 聊天组件
CopilotComponent({ controller: this.controller })
.width('100%')
.height('100%')
}
}
}
九、 本地 AI 架构:模型管理与离线推理
针对高隐私场景,通过本地端口调用量化后的端侧大模型。
// LocalAIManager.ets:本地模型管理器
import { http } from '@ohos.net.http';
export class LocalAIManager {
private localEndpoint: string = 'http://127.0.0.1:11434/api/generate';
// 调用本地 7B 量化模型进行润色
async polishText(prompt: string): Promise<string> {
const httpReq = http.createHttp();
const resp = await httpReq.request(this.localEndpoint, {
method: http.RequestMethod.POST,
header: { 'Content-Type': 'application/json' },
extraData: JSON.stringify({
model: 'qwen2.5-7b-instruct-q4_k_m', // 使用 INT4 量化模型
prompt: prompt,
stream: false
})
});
if (resp.responseCode === 200) {
const result = JSON.parse(resp.result as string);
return result.response;
}
throw new Error('Local AI inference failed');
}
}
十、 小艺工作流:复杂写作任务编排
通过 HACP 协议调用小艺开放平台编排好的复杂写作工作流。
// XiaoyiWorkflow.ets:调用小艺工作流
import { agent } from '@kit.IntelligentFoundationKit';
export class XiaoyiWorkflow {
// 触发小艺平台上的“长文创作工作流”
static async startLongFormWriting(userInput: string, referenceFileUrl?: string) {
const request = {
intent: 'xiaoyi.workflow.longform_writing', // 工作流唯一标识
parameters: {
user_prompt: userInput,
files: referenceFileUrl ? [referenceFileUrl] : [] // 传入参考文档
}
};
const response = await agent.execute(request);
return response.data.generated_article;
}
}
十一、 数据可靠性:离线编辑与联网同步
保障弱网/断网环境下的创作不中断、数据不丢失。
// OfflineSyncManager.ets:离线缓存与冲突合并
import { preferences } from '@kit.ArkData';
import { connection } from '@kit.NetworkKit';
export class OfflineSyncManager {
private store: preferences.Preferences | null = null;
// 1. 初始化并监听网络状态
async init(context: Context) {
this.store = await preferences.getPreferences(context, 'offline_cache');
connection.on('netAvailable', () => {
this.syncOfflineCache(); // 联网后自动触发同步
});
}
// 2. 离线时保存操作日志
async saveOfflineEdit(content: string) {
const log = { timestamp: Date.now(), action: 'update', payload: content };
await this.store!.put('offline_log', JSON.stringify(log));
await this.store!.flush();
}
// 3. 联网后合并冲突并清空缓存
private async syncOfflineCache() {
const logStr = await this.store!.get('offline_log', '');
if (logStr) {
const log = JSON.parse(logStr as string);
// await cloudDB.merge(log); // 上传本地操作并拉取远端变更
await this.store!.delete('offline_log');
await this.store!.flush();
}
}
}
更多推荐


所有评论(0)