大家好,江鸟中原鸿蒙展翅,今天小试牛刀给大家详细讲解一下鸿蒙大模型聊天机器人的开发过程。
引言
在当今的数字时代,技术的进步每天都在改变着我们的生活。而对于热衷于最前沿技术的开发者来说,挑战新兴技术总是令人兴奋。最近,我踏上了一段新的旅程:使用华为的鸿蒙操作系统(HarmonyOS)开发一个聊天机器人。这个决定源于我对鸿蒙系统的好奇,以及对AI和机器学习的持续兴趣。
在这个博客中,我想与大家分享我的开发历程——从最初的学习鸿蒙课程到实际开发一个聊天机器人,以及在这个过程中调用阿里云百炼的大模型API接口的经验。无论你是鸿蒙开发的新手,还是有经验的开发者,我希望我的故事能够启发你,并为你的开发旅程提供一些有价值的见解。
接下来,让我们一起探索鸿蒙系统的潜力,了解如何利用这一新兴平台来创造出引人入胜的聊天机器人体验。
开发动机
我的开发旅程始于对华为鸿蒙操作系统的好奇。鸿蒙系统不仅是一个新兴的操作系统,而且它提供了一种全新的方式来构建跨平台应用。我想要挑战自己,看看能否利用这一平台开发出一款独特的聊天机器人。我的目标是创建一个能够在多种设备上运行的智能助手,不仅可以处理日常的查询,还能学习并适应用户的喜好和行为。
目标功能
1.智能对话:
利用阿里云百炼大模型API,使机器人能够进行自然且流畅的对话,提供准确的信息和有用的建议。
2.个性化推荐:
根据用户的历史互动和偏好,定制个性化的内容和建议。
最终成果
经过数月的努力,我的聊天机器人终于完成。它不仅能够在不同的鸿蒙设备上流畅运行,还能够提供丰富的交互体验。利用阿里云的强大AI能力,它能够理解并回应复杂的查询,同时为用户提供个性化的内容。无论是安排日常事务,还是简单的闲聊,它都能做得游刃有余。这个项目不仅增强了我的编程技能,也让我对鸿蒙系统的潜力有了更深的认识。
先介绍一下如何调用阿里云的api
1.登录阿里云百炼的网址 阿里云百炼 (aliyun.com) 你需要先申请内测 内测之后就可以正常使用了
2.我们可以使用使用 HttpURLConnection
发送GET请求一下是一个小代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class ApiCaller {
public static void callApi(String apiUrl) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(apiUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
// 可选:设置连接超时和读取超时
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
// 连接API
connection.connect();
// 获取响应
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
System.out.println("Response: " + response.toString());
} else {
System.out.println("GET请求失败,响应码: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭资源
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (connection != null) {
connection.disconnect();
}
}
}
public static void main(String[] args) {
// 示例API URL
String apiUrl = "https://api.example.com/data";
callApi(apiUrl);
}
}
3.我们可以结合相关的官方文档调用api 需要填写自己的accessKeyId,agentKey和accessKeySercret 以及自己创建的大模型appId,这里的accesskId需要到阿里云官网上去申请RAM账号去使用阿里云的相关服务。
static final String accessKeyId =
static final String accessKeySecret =
static final String agentKey =
static AccessTokenClient accessTokenClient;
static BaiLianConfig config;
static final String appId =
static ApplicationClient client;
public static CompletionsResponse send(String prompt) {
String text;
accessTokenClient = new AccessTokenClient(accessKeyId, accessKeySecret, agentKey);
String token = accessTokenClient.getToken();
config = new BaiLianConfig().setApiKey(token);
CompletionsRequest request = new CompletionsRequest()
.setAppId(appId)
.setPrompt(prompt)
.setHasThoughts(true)
.setSessionId("******"); //多轮对话, 多次请求如果session id相同,则后续对话自动保存之前的对话上下文, sessionId尽量采用uuid, 如String sessionId = UUIDGenerator.generate();
client = new ApplicationClient(config);
ApplicationClient client = new ApplicationClient(config);
CompletionsResponse response = client.completions(request);
return response;
下面是相关js代码的调用
我们可以通过自己封装成的tosend的方法拿到大模型回复的response通过拿到的response转换成text就可以在前端中展示了
function output(input) {
async function fetchData(input) {
try {
const response = await fetch('/tosend', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ input }),
});
if (response.ok) {
const jsonResponse = await response.json();
console.log(jsonResponse)
return jsonResponse.text; // 返回product属性值
} else {
console.error('Error fetching data from the backend. Status code: ' + response.status);
return null;
}
} catch (error) {
console.error('An error occurred while fetching data:', error);
return null;
}
}
// 调用fetchData函数并处理结果
fetchData(input).then(data => {
if (data !== null) {
addChat(data,input); // 更新前端界面
}
});
}
下面是我做好聊天机器人