我正在使用 @google/generative-ai 库构建 Node.js 聊天机器人。我在处理用户和模型之间的聊天历史记录时遇到错误。
以下是问题的细分:
这表明模型需要历史对象的特定格式,该格式可能无法正确发送。
相关代码片段:
App.js(客户端):
const getResponse = async () => {
if (!value) {
setError("Please enter something!");
return;
}
try {
const options = {
method: "POST",
body: JSON.stringify({
history: chatHistory,
message: value,
}),
headers: {
"Content-Type": "application/json",
},
};
const response = await fetch("http://localhost:8000/gemini", options);
const data = await response.text();
console.log(data);
setChatHistory((oldChatHistory) => [
...oldChatHistory,
{
role: "user",
parts: value,
},
{
role: "model",
parts: data,
},
]);
setValue("");
} catch (error) {
console.log(error);
setError("Something went wrong!");
}
};
server.js(服务器端):
app.post("/gemini", async (req, res) => {
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const chat = model.startChat({
history: req.body.history,
});
const msg = req.body.message;
const result = await chat.sendMessage(msg);
const response = await result.response;
const text = response.text();
res.send(text);
});
附加信息:
Node.js 版本:18.17.0 @google/generative-ai 版本:0.3.1
我要问的是:
我也有同样的问题。我修复了,但我不太了解 Node.js。 :D
我所做的改变:
setChatHistory((oldChatHistory) => [
...oldChatHistory,
{
role: "user",
parts: [{ text: value }],
},
{
role: "model",
parts: [{ text: data }],
},
]);
在上面的代码中,我检查了 Google Gemini 文档,看到了部分字段。 parts 字段是文档中的一个数组,我像文档一样更改了我的代码。然后..
{chatItem.role} : {chatItem.parts[0].text}
在上面的代码中,我得到了答案,并将答案写在我的项目上。
我希望,我一直在帮助你。