gpt4 book ai didi

reactjs - 如何将来自 API 的响应保存到某个状态,以便我可以显示旧的搜索/响应?

转载 作者:行者123 更新时间:2023-12-02 05:46:28 24 4
gpt4 key购买 nike

这是我正在尝试做的事情:首先,我想显示我从 API 收到的响应(我可以这样做),然后我想显示以前的提示和先前调用 API 的响应。

import { useEffect, useState } from "react";
import Navbar from "./components/navbar/Navbar";
import Form from "./components/form/Form";
import Ideas from "./pages/Ideas";
import "./app.scss";

const { Configuration, OpenAIApi } = require("openai");

export default function App() {

const [companyType, setCompanyType] = useState("");
const [prompt, setPrompt] = useState("");
const [response, setResponse] = useState("");
const [list, setList] = useState({});


useEffect(() => {
console.log("use effect ran");
}, []);

const configuration = new Configuration({
apiKey: process.env.REACT_APP_API_KEY,
});

const openai = new OpenAIApi(configuration);

const searchForProductIdeas = (event) => {
event.preventDefault();
openai
.createCompletion("text-davinci-002", {
prompt: `List new product ideas for a ${companyType} company.`,
temperature: 1,
max_tokens: 256,
top_p: 1,
frequency_penalty: 0,
presence_penalty: 0,
})

.then((response) => {

// creates a variable to store response in
const idea = response.data.choices[0].text;
//sets the prompt
setPrompt(`List new product ideas for a ${companyType} company.`);
//sets the response
setResponse(idea);
// set the previous prompts and responses
setList({...prompt, ...idea})

});
};
return (
<div className="app">
<Navbar />

<div>{prompt}</div>
<div>{response}</div>
<div>{list}</div>
</div>
);
}

欢迎任何帮助。还想知道我是否需要 axios 来调用 openai API?

最佳答案

您可能希望将之前的搜索词和结果对存储在一个数组中。发出新请求时,将当前的 promptresponse 状态移动到 list 状态数组中。

例子:

export default function App() {
const [companyType, setCompanyType] = useState("");
const [prompt, setPrompt] = useState("");
const [response, setResponse] = useState("");
const [list, setList] = useState([]); // <-- array

...

const searchForProductIdeas = (event) => {
event.preventDefault();

openai
.createCompletion("text-davinci-002", {
...
})
.then((response) => {
// creates a variable to store response in
const idea = response.data.choices[0].text;
//sets the prompt
setPrompt(`List new product ideas for a ${companyType} company.`);

//sets the response
setResponse(idea);

// set the previous prompts and responses
if (prompt && response) {
setList(list => [...list, { prompt, response }]); // <-- append into new array
}
});
};

return (
<div className="app">
<Navbar />

<div>{prompt}</div>
<div>{response}</div>
<div>
<ul>
<p>Previous prompts and responses</p>
{list.map(({ prompt, response }, i) => ( // <-- map previous entries
<li key={i}>
<p>{prompt}</p>
<p>{response}</p>
</li>
))}
</ul>
</div>
</div>
);
}

关于reactjs - 如何将来自 API 的响应保存到某个状态,以便我可以显示旧的搜索/响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72236412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com