恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

HarmonyOS NEXT接入开源大模型实战:从端云架构到部署调优

  • 首页
  • 资讯中心
  • /
  • HarmonyOS NEXT接入开源大模型实战:从端云架构到部署调优

相关资讯

Win10安装Rational Rose全攻略:环境准备、License Server配置与排错 2026/10/4 6:23:43
VBA错误3706排查指南:OLEDB Provider未找到的完整修复方案 2026/10/4 6:23:43
Obsidian+WorkBuddy+Gitee:打造AI驱动、可版本回溯的个人知识库 2026/10/4 6:18:43

最新资讯

C++函数与指针完全攻略:从参数传递到内存模型一次搞懂
Vensim系统动力学仿真:从下载安装到实战建模全指南
MOOS-ivp从安装到执行:水下机器人开源框架实践指南
kgma格式解析:酷狗歌为什么放不了
PointNet++ CUDA算子编译全指南:从pointnet2_ops导入失败到成功运行
C/C++分治算法详解:从归并快排到逆序对与实战配置

今日推荐

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本周热门

MR25H40CDF + PIC18F65K40:工业记录仪高可靠存储实战
基于STM32的数控恒压恒流电源设计:从硬件到PID调参全解析
LT9211 MIPI重定时器原理与双路扇出实战指南

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

HarmonyOS NEXT接入开源大模型实战:从端云架构到部署调优

发布时间:2026/10/4 6:23:43
HarmonyOS NEXT接入开源大模型实战:从端云架构到部署调优 开头直接从从业者口吻开始不断元说明。内容尽可能自然。注意不要用通过本文等。结尾自然收尾。需要确认纯Markdown输出没有整体代码块。下面开始生成。 ## 1. 先想明白端侧还是云侧这是第一个绕不开的决策做鸿蒙应用开发这几年我越来越觉得真正的难点往往不在写代码而在最开始的架构决策。最近在 HarmonyOS NEXT 上接入开源大模型项目排期三周结果光是在模型到底跑在哪这个问题上就反复推翻了两版方案。如果你正打算在鸿蒙应用里做大模型功能我很建议先把这个问题想透再做技术选型否则后面返工成本极高。HarmonyOS NEXT 从 API 12 开始系统能力已经相当完整官方 SDK 版本号也到了 5.0.0(12)但完整不等于适合跑大模型。大模型推理是典型的计算密集和内存密集任务动辄几个 GB 的模型权重再加上 KV cache 和临时激活值对端侧设备的压力非常真实。鸿蒙生态目前覆盖的手机、平板、座舱设备内存主流在 8GB 到 16GB 之间真正能跑 7B 以上量化模型的设备并不多。即便跑得动发热、掉电、后台被杀这些问题也够你喝一壶。1.1 端侧方案的现实约束端侧推理的好处很直观数据不出设备隐私合规压力小离线可用交互延迟理论上最低。但现实里做起来你会发现每一步都有坑。首先是内存占用。以目前社区比较活跃的 Qwen2.5-7B 为例FP16 权重大约 14GBINT8 量化后约 7GBINT4 量化后约 4GB。4GB 听上去不大但设备内存是共享的系统、应用、渲染管线都要占空间。实测下来一个应用可用内存经常只有 3GB 左右想稳定加载 4GB 的模型权重基本是极限中的极限。你还需要给推理时的激活值、输入输出 tokens 预留内存实际能跑起来往往只有 1.5B 到 3B 这个规模。但只要模型小于 4B回答质量又明显不够很多业务诉求根本满足不了。其次是推理框架的选择。HarmonyOS NEXT 目前没有像 TensorFlow Lite 那样官方维护的通用端侧推理库比较可行的路线是集成 ONNX Runtime 的 OpenHarmony 移植版或者用 MindSpore Lite 的鸿蒙适配版本。MindSpore Lite 本身是华为系出的理论上和鸿蒙的 NN API 结合更好但实际踩坑时发现算子支持和模型格式转换才是大头。模型从 PyTorch 导出 ONNX再转成 MindSpore Lite 的 .ms 格式中间经常因为算子不兼容报错。我处理过最头疼的一个问题某个模型用了 Rotary Embedding 的动态 shape转换时死活编译不过最后只能手写算子或者绕道走 ONNX Runtime。1.2 云侧方案的部署选择正因为端侧限制太多我最终把主力方案放到了云侧。云侧的好处是模型规模不受设备限制可以从 7B 一路用到 72B而且模型更新、提示词调优都不用发版。对鸿蒙应用来说云侧还有一个额外优势不需要针对不同芯片做端侧算子适配一套 HTTP 接口就能覆盖手机、平板、手表全场景。云侧的关键问题是怎么把开源模型部署成一个稳定、低成本、又方便客户端调用的服务。目前社区里常用的开源部署平台和工具我梳理下来主要是四类LLM 推理引擎vLLM 是当前吞吐量最高的方案之一PagedAttention 机制让显存利用率明显提升适合高并发场景。TensorRT-LLM、SGLang 也各有优势前者在 NVIDIA 显卡上性能极致后者在调度和前缀缓存上做得更灵活。一键部署工具Ollama 是我个人觉得最省心的本地部署工具一条命令拉模型、起服务自动做量化管理适合个人开发者和中小团队快速验证。缺点是高并发能力弱生产环境扛不住大流量。API 兼容层LocalAI、llama.cpp 的 server 模式、以及 FastAPI 封装的各种 OpenAI 兼容服务都能提供 /v1/chat/completions 接口。这类兼容层特别适合客户端开发因为你只要写一套 OpenAI 风格的请求逻辑后续换模型、换服务商都只改 base_url客户端代码几乎不动。模型仓库与版本管理工具Hugging Face 是模型权重的主要来源ModelScope 对国内开发者的下载速度和网络稳定性更友好。配合 Git LFS 管理模型文件、用 sha256 校验完整性能省掉很多部署时莫名其妙的坏文件问题。部署平台这一层我的建议是先别追求复杂方案。如果你只是给鸿蒙应用提供一个测试用的后端用 Ollama 或者 LocalAI 就够了如果要做生产环境且有 GPU 资源再上 vLLM 配 OpenAI 兼容层。1.3 决策一混合式架构的折中方案我最后选择的既不是纯端侧也不是纯云侧而是一个混合式架构。用户输入先走端侧小模型做意图判断和敏感信息过滤只有真正需要生成长文本、总结、创作这类场景时才调用云侧大模型。这个小模型选的是量化到 INT4 的 Qwen2.5-1.5B内存占用约 1GB在当前设备上能稳定常驻。这个决策的背后逻辑不是技术上的最优解而是成本和体验的平衡点。端侧小模型保证了基础响应速度和离线可用云侧大模型保证了生成质量同时减少了 90% 的云端调用次数账单压力也会小很多。如果你接入开源大模型只是为了一个聊天机器人功能那纯云侧就足够没必要把端侧搞得太复杂。2. 模型选型不能只看榜单要看 HarmonyOS NEXT 的“体质”确定了云侧为主、端侧为辅的架构之后第二个决策就是模型选型。很多同学喜欢盯着 Open LLM Leaderboard 或者各种评测榜单选模型但在鸿蒙应用这个特定场景里榜单分数只能作为参考真正决定体验的往往是另外几个指标。2.1 模型量化与内存限制的匹配云侧模型尺寸主要取决于你的 GPU 显存而端侧模型则完全受设备内存约束。以我用的端侧 Qwen2.5-1.5B 为例原始 FP16 权重大约 3GBINT4 量化后约 1GB。选这个模型的核心原因是所有常用算子都能在 MindSpore Lite 上跑通转换过程一次通过没有需要手写的算子。对于更大的 3B、4B 模型虽然量化后也能挤进 2GB 内存但推理时内存峰值会突然飙高应用很容易被系统杀掉。你可以用鸿蒙的ResourceManager实时查询设备可用内存然后决定是否加载模型但这个方案不稳定不如一开始就选适中的模型。如果你做纯云侧模型选择就宽松很多。我会优先考虑开源许可友好、社区生态好的模型比如 Qwen2.5 系列、Llama 3.1 系列、DeepSeek 系列。注意一点模型上下文长度并非越大越好。标称 128K 上下文的模型实际部署时如果不处理 KV cache 和前置截断一旦用户连续对话轮次多显存很快就吃满。我的做法是服务端强制设置max_tokens2048同时在客户端和服务端都做上下文窗口管理只保留最近 10 轮对话。2.2 上下文长度与推理延迟的取舍鸿蒙应用里的大模型功能绝大多数是对话内容生成用户对首字延迟非常敏感。我自己实测下来手机端正常网络环境下一个 7B 模型在 vLLM 部署的服务器上首字延迟控制在 300ms 以下用户体验就比较舒服但如果模型变成 72B即使量化后首字延迟可能到 2 到 3 秒用户就会觉得卡。为了压延迟我做了几个优化。第一把模型部署机房尽量靠近用户区域走内网或低延迟线路避免跨地域访问。第二使用 Prefix Caching 或 Semantic Cache对系统提示词、固定开场白这种高频重复前缀做缓存能显著降低 prefill 耗时。第三客户端使用流式接口也就是 SSE 方式接收逐 token 输出。HarmonyOS NEXT 的ohos.net.http支持流式读取响应体配合TextDecoder解析 SSE 事件可以在首 token 返回后立刻渲染到TextInput的关联组件里给用户一种正在思考的自然感。2.3 决策二模型统一抽象层我建议你在客户端抽象出一个LLMProvider接口不要直接依赖某个具体模型的 SDK。接口只需要规定几个方法chatCompletion(messages, options)、streamChatCompletion(messages, callback)、abort()。这样做的直接好处是开源模型和小程序化接入的第三方模型服务可以无缝切换。最开始接的是自己部署的 Qwen跑通后想试试 DeepSeek只需新增一个 Provider配置好 base_url 和 api_key其它业务代码一行不用改。鸿蒙端用 ArkTS 写接口抽象很顺手因为 ArkTS 本身兼容 TypeScript 语法接口、泛型、回调都能正常用。3. SDK 12 的接入姿势网络、线程与生命周期HarmonyOS NEXT SDK 到了 API 12 之后接口比早期版本规范很多但开发习惯如果还停留在安卓或 iOS 那套容易踩到一些特有的坑。这一节我聊聊接入大模型服务时最核心的网络、线程和生命周期管理问题。3.1 网络层用原生还是用 OkHttp鸿蒙原生网络库ohos.net.http在 API 12 里已经支持 HTTP/2、超时控制、请求取消等基础能力写简单请求完全够用。但如果你需要细粒度控制比如自定义 DNS、连接池复用、多路复用、自动重试ohos.net.http目前还比较简陋。第三方网络库方面OkHttp 的鸿蒙移植版ohos/axios也算一类已经有不少团队在用了底层同样是 socket 能力但封装上更接近 Android 开发习惯接入成本低。我的建议是如果只是调用云端大模型接口用原生ohos.net.http加一层你自己封装的HttpClient就够了。原因很简单——少依赖一个第三方库就少一份维护成本和安全审计负担。大模型调用本质上是一个 POST 请求加流式响应原生库完全能胜任。我实际踩过一个坑ohos.net.http在流式读取时如果响应头没有正确设置Content-Type: text/event-stream有时会把整个 body 一次返回导致前端拿不到逐字效果。后来我在服务端严格设置这个头并且客户端里判断StatusCode为 200 后再逐步消费问题才消失。3.2 异步推理与线程调度别卡主线程HarmonyOS 的主线程是 UI 线程任何耗时操作都不能在主线程执行。大模型接口调用尤其要注意因为一个生成请求可能持续 30 秒以上如果直接在主线程发起同步请求UI 会直接卡死系统会在几秒后弹 ANR 提示。正确做法是使用TaskPool或者Worker。我的习惯是网络请求和 JSON 解析放到TaskPool的execute()任务里流式回调则由框架自动切回主线程更新 UI。需要注意TaskPool的任务是无状态的不能在任务里持有 UI 组件引用否则可能导致内存泄漏。如果你的场景有长连接或者复杂的流式处理可以考虑Worker它更接近传统多线程模型可以持续驻留后台处理消息。我在开发中遇到过TaskPool任务在应用退到后台后直接被挂起的问题导致一个正在生成的回答突然中断。解决办法是在前后台切换的生命周期回调里手动暂停或恢复请求而不是依赖后台继续执行。3.3 生命周期绑定避免 UI 泄漏和后台任务失控HarmonyOS NEXT 的页面生命周期和组件状态管理要非常小心。当你发起一个大模型请求时用户可能随时点击返回、切换页面、或者系统中途销毁页面。如果请求回调里还持有页面的Ability或组件的Context轻则内存泄漏重则崩溃。我总结了一套稳妥的绑定策略。第一使用AbortController或调用底层httpTask.cancel()等方法在页面onPageHide和onPageDestroy里终止未完成的请求。第二回调中不直接操作被销毁的页面组件而是通过全局状态管理比如AppStorage或LocalStorage传递数据页面重新创建后从状态里恢复。第三对于生成中的状态可以用一个GenState类保存进度文本、是否完成、错误信息页面只是这个状态的观察者。这样即使页面重建用户的会话内容也不会丢失。3.4 决策三请求协议统一走 OpenAI 兼容接口尽管我最终部署的是自己家的模型服务但客户端请求协议我坚决统一走 OpenAI 格式的/v1/chat/completions。原因很现实这个格式已经成为事实上的行业标准几乎所有开源部署工具和商业模型服务都支持它。客户端只要实现一套协议解析就能自由切换服务商和自建模型。鸿蒙端写起来也很简单构造messages数组设置streamtrue然后按 SSE 解析data:行里的 JSON chunk最后一行[DONE]表示结束。4. 部署开源模型的工程化我的工具链与关键步骤模型选完、客户端协议定完剩下的大头就是服务端部署。这一节我分享一套我在真实项目中用过的工具链和部署步骤不涉及复杂分布式适合中小团队快速上线。4.1 部署平台选型从 Ollama 到 vLLM先说结论开发环境用 Ollama生产环境用 vLLM OpenAI 兼容层 API。Ollama 非常适合本地开发和联调。它在 macOS 或 Linux 上一条命令就能跑起来模型管理也简单ollama pull qwen2.5:7b就能自动下载并量化模型。我一般让客户端开发同学在本地装个 Ollama连 localhost 的 11434 端口这样前端和后端可以并行开发不依赖服务器资源。不过 Ollama 的并发能力有限如果多人同时测会明显变慢而且它的/v1/chat/completions兼容接口在很早版本里还有不少边界 bug升级到最新版就会好很多。生产环境我用 vLLM原因在于它对高并发和长文本场景的优化最到位。vLLM 的 Continuous Batching 能动态拼接请求吞吐量比朴素的 FastAPI 转发高好几倍。部署方式我是用 Docker 起的显存充足的话直接跑官方镜像docker run --runtime nvidia --gpus all \ -v /data/models:/models \ -p 8000:8000 \ vllm/vllm-openai:latest \ --model /models/Qwen2.5-7B-Instruct \ --served-model-name chat-model \ --max-model-len 32768 \ --gpu-memory-utilization 0.9 \ --enforce-eager这里几个参数值得解释一下--max-model-len 32768表示最大上下文长度我特意压到 32K是兼顾显存和业务需求的结果--enforce-eager是关闭 CUDA Graph 缓存牺牲一点首次请求性能但能减少显存碎片--gpu-memory-utilization 0.9让模型能用 90% 显存剩下 10% 留给中间变量和并发请求。如果你的显卡小于 24GB建议换 7B 的 INT8 量化模型或者用--quantization awq加载 AWQ 量化格式。4.2 一套可复现的部署配置部署过程中我发现最容易出问题的不是模型加载而是全链路的配置一致性。客户端传的是什么 system prompt、服务端模型有没有 temperature 和 top_p 限制、超时时间设多少、流式事件怎么走这些都需要固化成配置。我整理了一个部署配置模板分为服务端和客户端两部分服务端 vLLM 环境变量与启动参数参数取值说明model/data/models/Qwen2.5-7B-Instruct本地模型路径served-model-namechat-model对外暴露的模型名客户端会用到max-model-len32768最大上下文长度按业务调整gpu-memory-utilization0.9显存利用率避免 OOMenable-prefix-caching打开前缀缓存降低重复请求延迟max-num-seqs32最大并发序列数和显存正相关客户端关键参数参数取值说明base_urlhttps://your.domain/v1OpenAI 兼容接口前缀api_keysk-your-key可以留空或用任意占位符取决于服务端鉴权timeout60s首字超时设 15s总超时设 60sstreamtrue开启流式max_tokens2048单次生成上限防止服务端无限输出temperature0.7默认值业务可覆盖部署之后一定要做的验证动作是先用 curl 测一次非流式再测一次流式。流式请求中正常响应是每行data: {...}结束标志是data: [DONE]。如果发现响应缺少[DONE]检查网关是否缓冲了响应或者代理是否关闭了 chunked 传输。4.3 客户端封装设计与请求示例服务端稳定后客户端封装就简单了。我在鸿蒙工程里建了一个AiChatService.ets文件核心逻辑只有两百多行。关键点在于把请求构造和响应解析都集中管理UI 层只调用一个方法。import { http } from ohos.net.http; export class AiChatService { private baseUrl: string https://your.domain/v1/chat/completions; private apiKey: string sk-your-key; async chatStream(messages: ArrayObject, onDelta: (text: string) void) { let httpRequest http.createHttp(); let body { model: chat-model, messages: messages, stream: true, max_tokens: 2048, temperature: 0.7 }; let response await httpRequest.request(this.baseUrl, { method: http.RequestMethod.POST, header: { Content-Type: application/json, Authorization: Bearer ${this.apiKey} }, extraData: JSON.stringify(body), // 流式读取需要设置 expectDataType 和 readPartial readPartial: true, expectDataType: http.HttpDataType.STRING }); if (response.responseCode ! 200) { throw new Error(HTTP ${response.responseCode}); } let raw: string response.result as string; // 解析 SSE 格式 const lines raw.split(\n); for (const line of lines) { const trimmed line.trim(); if (!trimmed.startsWith(data:)) continue; const data trimmed.substring(5).trim(); if (data [DONE]) break; try { const json JSON.parse(data); const delta json.choices[0].delta?.content; if (delta) onDelta(delta); } catch (e) { // 忽略解析异常 } } httpRequest.destroy(); } }这段代码在 API 12 上实测可以正常拿到流式结果。但要注意expectDataType设置为STRING时如果响应体很大部分系统版本会存在分片不全的问题。更稳妥的方案是使用ArrayBuffer并配合TextDecoder逐步解码。我在线上最终用了 ArrayBuffer 方案代码稍长但稳定性提升明显。4.4 决策四部署环境与客户端环境解耦我的一个体会是很多团队把服务端和客户端配置写死在代码里导致更换部署平台时牵一发动全身。于是我定义了一组运行时配置在鸿蒙 App 启动时从远程配置中心拉取包括modelName、baseUrl、apiKey、maxTokens、temperature等。这样一旦服务器扩容或迁移客户端不需要发版只要修改远程配置就行。这个决策当时看起来有点过度设计但后来服务端从开发环境切到生产环境时只改了一条配置半小时内全部完成切换获得感很强。5. 上线前必须做的性能、安全与降级策略功能跑通和上线稳定之间隔着一条很大的河。前面三周我们做完了接入和联调剩下最后一周全在打磨性能、安全和容灾。这些内容在 demo 阶段很容易被忽略一旦用户量上来问题会成倍放大。5.1 性能实测数据与调优我在真实环境里做了一轮压测部署环境是单张 NVIDIA A10 24GB模型是 Qwen2.5-7B-InstructvLLM 启动客户端是鸿蒙 App。测试结论如下单并发流式请求首字延迟约 220ms生成速度约 45 tokens/s体验流畅。8 并发时吞吐量约 150 tokens/s但首字延迟上升到 600ms仍可接受。32 并发时显存接近上限出现排队部分请求等待超过 5 秒不建议生产使用。如果把max-model-len从 32768 降到 8192同样显存下并发能力能提升 40% 左右。如果你的应用场景以短对话为主不要贪长上下文压短一点换并发是很划算的买卖。客户端侧的优化我做了三件事第一请求前先做输入长度估算超过 8000 字符时自动截断或要求用户精简第二用LruCache缓存最近 50 条对话摘要这样用户从历史记录重新进入时不需要立刻调云端生成第三将图片、附件等非文本输入全部走独立接口不占用大模型对话通道。5.2 安全与合规密钥保护与内容过滤大模型接入的安全问题里最容易翻车的是 API Key 泄露。如果你的鸿蒙应用把服务端地址和 key 直接硬编码进代码包反编译后就能被提取然后攻击者可以拿你的 key 无限调用模型服务账单直接爆炸。我的做法是客户端不保存任何密钥。客户端请求先经过自建网关网关上做用户鉴权和限流再由网关转发到大模型服务。这样客户端拿到的只是一个有时效性的 token且可以单独吊销。网关层强制开启 rate limit。按用户维度限制每分钟最多 10 次请求每次最多 2048 tokens防止恶意刷量。所有通信走 HTTPS并且开启证书校验不要简单设置trustAll。鸿蒙的http模块默认会做证书校验但如果你自己封装了原生 socket就要格外小心。内容层面我必须提醒开源模型本身没有安全护栏。直接对外开放很可能生成不合适的内容。务必要在服务端单独挂一个内容安全过滤服务或者通过提示词工程加硬性约束。我在系统提示词里写明了禁止事项同时在服务端用正则和敏感词库做二次拦截。对于需要强合规的场景可以再接一个独立的审核 API 做三级过滤。5.3 降级与容错离线缓存与兜底方案开源大模型服务再稳定也可能出现网络抖动、服务端过载、模型推理超时等问题。如果鸿蒙应用没有任何降级策略用户只会看到请求失败这对体验是致命打击。我的降级链路是三级第一级流式接口超时或报错时重试一次但重试必须避开创建新请求直接复用用户已有的消息上下文。第二级如果服务端不可用客户端切换到预设的离线模板回复比如我现在网络不太顺畅稍后再试试吧。这听上去很简陋但能避免用户反复输入相同内容造成雪崩。第三级把用户发送的关键数据本地缓存到 Preferences 或 SQLite待网络恢复后自动重发。这个重发机制要小心如果用户已经在前端看到部分回复重发可能导致重复下单或重复生成所以要加状态判断。另外我在实际项目里还加了请求签名和防重放机制。客户端每次请求携带时间戳和随机数网关校验签名有效期不超过 5 分钟。这样即使请求包被篡改或重放也无法造成实际影响。5.4 决策五面向故障做设计而不是面向成功做设计最后一个决策也是我做完整个项目后最想分享的不要把大模型当成一个永远可用的黑盒服务而要把它当成一个大概率会出现偶发故障的第三方依赖来设计。你需要在客户端、网关、服务端三个层面都定义好失败时怎么办。这个思路的转变来自于一次线上事故某天上游模型服务因为显存 OOM 导致连续 10 分钟返回 503当时我们的鸿蒙应用没有任何兜底用户反馈全是窗口一片空白。后来补上降级链再有类似事故至少用户在 UI 上能看到友好提示历史对话也不会丢。对一个成熟应用来说稳定和可预期比任何花哨功能都重要。6. 这套方案跑起来之后的几点心得体会项目上线一段时间我再回头看这些工程决策最深的体会是接入开源大模型的本质不是在调用一个 API而是在设计一个包含模型、服务、客户端、运维的系统。鸿蒙 NEXT 的 SDK 只是这个系统里的一环真正决定体验的是你在模型选型、部署方式、网络架构、安全策略和容灾方案上的取舍。如果让我重新做一遍我会把先定义失败场景这件事提前到架构阶段。比如服务端响应超过 5 秒怎么办、模型返回空内容怎么办、用户网络切换导致连接中断怎么办。把这些场景提前列出来后面开发的时候就不至于手忙脚乱。关于部署工具我想再补充一句开源社区的工具迭代非常快GitHub 上几乎每周都有新的推理框架和模型格式出现。我的建议是不用追新选择社区活跃度高、API 稳定、且有大厂或知名公司背书的方案然后把它吃透。Ollama 和 vLLM 的组合足够支撑绝大多数中轻量业务除非你的场景特殊到需要定制显存排队策略或者分布式推理否则不需要引入更重的架构。最后分享一个开发中的小技巧鸿蒙端调试流式接口时最好先在 PC 上用curl --N验证服务端是否真的逐 token 返回然后再去调客户端的解析逻辑。如果 PC 端都拿不到流式效果问题一定在服务端或网关不用浪费时间在客户端找问题。这个习惯帮我省掉了大量无意义排查。一个项目的完整性从来不只靠某一个亮点功能撑起来。把模型接入做到让用户感受不到模型存在的程度才是真功夫。希望这篇实战记录对正在啃 HarmonyOS NEXT 和开源大模型接入的你有点帮助。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号