我正在开发一款React应用,该应用使用TensorFlow QnA模型根据用户输入生成学习卡片。我实现了一个表单,用户可以在其中输入问题,提交后,应用应使用QnA模型生成答案,并创建包含问题和答案的新学习卡片。
但是,当我尝试提交表单时,出现以下错误:"类型错误:context.trim不是一个函数"。经过一些调查,我确定这个错误发生在QnA模型的process函数中,该函数由findAnswers函数调用。
以下是表单提交和QnA模型使用的相关代码:
import * as qna from "@tensorflow-models/qna";
import * as tf from "@tensorflow/tfjs";
//...
const [qnaModel, setQnAModel] = useState(null);
//...
const handleInputChange = (event) => {
setInput(event.target.value.toString());
};
// ...
const handleInputSubmit = async (event) => {
event.preventDefault();
if (qnaModel) {
// Make sure that the `context` parameter is a string
let context = String(input).trim();
// model => ready
console.log(typeof context);
const answers = await qnaModel.findAnswers(context, 1);
console.log(answers[0].question);
console.log(answers[0].answer);
setCards([
...cards,
{ question: answers[0].question, answer: answers[0].answer },
]);
} else {
// The qnaModel is not ready yet, so you should not try to use it
console.error("qnaModel is not ready yet");
}
};
我已经通过将上下文变量的类型记录到控制台来验证它确实是一个字符串。但是,错误仍然发生。
有没有其他人遇到这个错误或有任何想法如何修复它?任何帮助将不胜感激!
先谢了。
1条答案
按热度按时间46qrfjad1#
根据documentation,您看到该错误的原因是您没有向
findAnswers
传递正确的参数。其中第一个参数是要问的问题,第二个参数是问题所基于的段落,现在只传递数字
1
作为段落。该文档提供了以下示例:
还要注意的是,您试图访问答案的格式(
answers[0].question
)与您将得到的结果不一致。上面的文档示例记录了以下结果:根据编写代码的方式,如果要访问答案,可以使用
answers[0].text
。