> 技术文档 > 鸿蒙应用集成 DeepSeek API 完整开发教程_鸿蒙应用调用deepseek实例

鸿蒙应用集成 DeepSeek API 完整开发教程_鸿蒙应用调用deepseek实例

鸿蒙应用集成 DeepSeek API 完整开发教程

前言

在 AI 应用开发领域,DeepSeek 作为先进的大语言模型提供了强大的自然语言处理能力。本文将详细介绍如何在鸿蒙操作系统中集成 DeepSeek API,实现 AI 对话功能。无论你是鸿蒙应用开发者还是 AI 技术爱好者,都可以通过本教程快速掌握集成方法。

环境准备

开发工具

DevEco Studio 3.1 及以上版本(鸿蒙应用开发官方 IDE)

鸿蒙 SDK API 9 及以上版本

账号准备

访问 DeepSeek 官方平台(https://api.deepseek.com)

注册开发者账号并创建应用

在控制台获取 API 密钥(sk-xxx 格式)

核心代码实现

项目结构说明

首先在鸿蒙项目中创建工具类文件夹,本文示例结构如下:

plaintext

src/main/ets/

├── utils/

│ └── AIRequest_Util.ts # API请求工具类

├── pages/

│ └── testHttp.ets # 测试页面组件

└── entry/

└── main_pages.json # 路由配置

完整代码实现

1. AI 请求工具类实现(AIRequest_Util.ts)

typescript

import http from \'@ohos.net.http\';

import hilog from \'@ohos.hilog\';

/**

* DeepSeek AI API请求工具类

* 封装HTTP请求逻辑与响应处理

*/

export class AIRequest_Util {

/**

* 发送AI请求

* @param question 提问内容

* @param callback 响应回调函数

*/

request(question: string, callback: (text: string) => void) {

hilog.info(0x0000, \'testTag\', \'ALiYunHttpUtils request invoke. question: %{public}s\', question);

// 1. 创建HTTP请求实例

let httpRequest = http.createHttp();

// 2. 构建请求数据(符合DeepSeek API格式)

const requestData = {

model: \"deepseek-chat\", // 使用对话模型

messages: [

{ role: \"system\", content: \"你是人工智能AI\" }, // 系统提示

{ role: \"user\", content: question } // 用户提问

],

\"stream\": false // 关闭流式响应

};

// 3. 发起POST请求

httpRequest.request(

\"https://api.deepseek.com/chat/completions\", // DeepSeek API地址

{

method: http.RequestMethod.POST, // 请求方法

header: {

\"Content-Type\": \"application/json\", // 内容类型

\"Authorization\": \"Bearer sk-3e4695d9f07c454c8cb9d59822d27987\" // API密钥(需替换为实际密钥)

},

extraData: JSON.stringify(requestData), // 请求体序列化

readTimeout: 60000, // 读取超时时间

connectTimeout: 60000, // 连接超时时间

usingProtocol: http.HttpProtocol.HTTP1_1 // 使用HTTP协议

}, (err, data: http.HttpResponse) => {

// 4. 错误处理

if (err) {

hilog.error(0x0000, \'testTag\', \'请求失败: %{public}s\', JSON.stringify(err));

httpRequest.destroy();

callback(\"请求失败,请检查网络\");

return;

}

try {

// 5. 解析响应数据

const response = JSON.parse(data.result as string);

hilog.info(0x0000, \'testTag\', \'完整响应: %{public}s\', JSON.stringify(response));

// 检查API错误

if (response.error) {

hilog.error(0x0000, \'testTag\', \'API错误: %{public}s\', response.error.message);

callback(`API错误: ${response.error.message}`);

return;

}

// 提取AI回答内容

if (response.choices && response.choices.length > 0) {

const content = response.choices[0].message.content;

if (content) {

hilog.info(0x0000, \'testTag\', \'提取到的文本: %{public}s\', content);

callback(content);

return;

}

}

throw new Error(\"未找到有效响应内容\");

} catch (e) {

hilog.error(0x0000, \'testTag\', \'解析失败: %{public}s\', e.message);

callback(\"解析响应失败\");

} finally {

// 释放资源

httpRequest.destroy();

}

}

)

}

}

// 导出单例对象

export const DeepSeek = new AIRequest_Util();

2. 页面组件实现(testHttp.ets)

typescript

import { DeepSeek } from \'../utils/AIRequest_Util\'; // 导入工具类

@Entry

@Component

struct testHttp {

@State answer: string = \'\' // 存储AI回答

build() {

Column() {

// 交互按钮

Button(\'click\')

.width(\'50%\')

.onClick(() => {

// 调用DeepSeek API

DeepSeek.request(\"你是谁\", (answer) => {

// 更新UI显示回答

this.answer = answer

})

})

// 显示回答内容

Text(this.answer)

.fontSize(30)

.margin({ top: 20 })

}

.height(\'100%\')

.width(\'100%\')

.justifyContent(FlexAlign.Center)

.alignItems(HorizontalAlign.Center)

}

}

3. 配置路由(main_pages.json)

json

{

\"src\": [

{

\"pages\": [

\"pages/testHttp\"

],

\"name\": \"entry\",

\"window\": {

\"designWidth\": 720,

\"autoDesignWidth\": true

}

}

]

功能模块解析

1. API 请求核心流程

DeepSeek API 调用遵循以下步骤:

创建 HTTP 请求实例

构建符合 OpenAI 格式的请求体(DeepSeek 兼容 OpenAI 接口规范)

设置请求头(包含 API 密钥和内容类型)

发送 POST 请求到 DeepSeek API 端点

处理响应数据并提取 AI 回答

2. 请求参数说明

参数名 类型 说明

model string 模型名称,deepseek-chat为对话模型

messages array 消息数组,包含系统提示和用户提问

messages.role string 消息角色,system为系统提示,user为用户输入,assistant为 AI 回答

messages.content string 消息内容

stream boolean 是否启用流式响应,false为关闭(本示例使用)

3. 错误处理机制

代码中实现了三层错误处理:

网络请求错误(如超时、连接失败)

API 接口错误(如认证失败、参数错误)

响应解析错误(如数据格式异常)

实现效果:

可能遇到的问题:

05-31 23:37:56.504 40524-28380 A00000/testTag E API错误: Insufficient Balance

API密钥余额不足,去官网充钱