HarmonyOS鸿蒙Next中Chat组件如何接入dify知识库模型
HarmonyOS鸿蒙Next中Chat组件如何接入dify知识库模型
//API版
import { Chat, ChatRole, ChatMessage } from '@changwei/chatui'
import {
ChatCompletionSystemMessageParam,
ChatCompletionUserMessageParam,
IChatCompletionMessageParam,
ChatCompletionChunk,
OpenAI,
ChatCompletion
} from '@changwei/openai'
@Component
struct ChatCompletionPage2 {
private openaiClient: OpenAI = new OpenAI(
"API-KEY",
undefined,
"Base URL"
)
private messages: IChatCompletionMessageParam[] = [new ChatCompletionSystemMessageParam("You are a helpful assistant.")]
aboutToAppear() {
// 初始化操作
}
build() {
Row() {
Column() {
Chat({
title: '',
needTitleBar: true,
welcomeMessage: '',
userMessageBackgroundColor: Color.White,
userMessageTextColor: Color.Black,
botAvatar: $r('app.media.tb'),
messageFontSize: 20,
useMarkdown: true,
needBackButton: false,
submitButtonText: '发送',
inputTextPlaceHolder: '请输入内容',
inputTextColor: Color.Black,
onSendMessage: (ctl, message) => {
// 发送用户消息
ctl.postMessage(new ChatMessage({ role: ChatRole.User, content: message.content }));
// 显示回复等待动画
ctl.setTyping(true);
this.messages.push(
new ChatCompletionUserMessageParam(message.content, message.name)
);
let streamMode = true;
// 修改后的流式处理部分代码
this.openaiClient.chat.completions.create({
messages: this.messages,
stream: streamMode,
model: '模型名称'
}).then(async (response: ChatCompletion | ChatCompletionChunk[] | string) => {
if (streamMode) {
let str = response as string;
str = `[${str.replace(/\s*data\: \[DONE\]\s*/, '').replaceAll(/\s*data:\s*/g, ',').substring(1)}]`
let chunks: ChatCompletionChunk[] = [];
try {
chunks = JSON.parse(str);
} catch (e) {
chunks = [];
}
let output = '';
const assistantMsg = new ChatMessage({
role: ChatRole.Assistant,
content: ''
});
for (const chunk of chunks) {
const content = chunk.choices?.[0]?.delta?.content;
if (content) {
output += content;
assistantMsg.content = output;
}
}
ctl.postMessage(assistantMsg, true); // 更新消息内容
ctl.setTyping(false);
} else {
const resp = response as ChatCompletion;
ctl.postMessage(new ChatMessage({
role: ChatRole.Assistant,
content: Array.isArray(resp.choices[0]?.message?.content)
? resp.choices[0].message.content.join(' ')
: resp.choices[0]?.message?.content ?? ''
}));
ctl.setTyping(false);
}
}).catch((error: Error) => {
console.error('API Error:', error.message);
ctl.setTyping(false);
});
}
})
}
}
.height('100%')
}
}
export default ChatCompletionPage2
更多关于HarmonyOS鸿蒙Next中Chat组件如何接入dify知识库模型的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于HarmonyOS鸿蒙Next中Chat组件如何接入dify知识库模型的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中接入Dify知识库模型,首先需要在Dify平台上创建并部署知识库模型,获取API Key和模型URL。然后在鸿蒙Next项目中,通过HTTP请求调用Dify的API接口,将用户输入发送到Dify模型并获取响应。具体步骤如下:
- 创建Dify模型:在Dify平台上创建并部署知识库模型,获取API Key和模型URL。
- 配置HTTP请求:在鸿蒙Next项目中,使用
HttpURLConnection
或OkHttp
等库配置HTTP请求,设置请求头(包括API Key)和请求体(用户输入)。 - 发送请求并处理响应:向Dify的API接口发送请求,获取模型生成的响应,并在UI中展示。
通过以上步骤,即可在鸿蒙Next中成功接入Dify知识库模型。