下面的代码可以正常工作。我可以将问题 curl 到ChatGPT,它会一次性回复。但是,如果我尝试参与需要引用以前提交的状态的对话,则聊天无法进行。
我想知道我需要做些什么(以及所需的代码)来保留对话的上下文
const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: "sk-my-key",
});
const openai = new OpenAIApi(configuration);
// Set up the server
const app = express();
app.use(bodyParser.json());
app.use(cors())
// Set up the ChatGPT endpoint
app.post("/chat", async (req, res) => {
// Get the prompt from the request
const { prompt } = req.body;
// Generate a response with ChatGPT
const completion = await openai.createCompletion({
model: "text-davinci-002",
prompt: prompt,
});
res.send(completion.data.choices[0].text);
});
// Start the server
const port = 8080;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
正在新终端中运行的CURL:
curl -X POST -H "Content-Type: application/json" -d '{"prompt":"Hello, how are you doing today?"}' http://localhost:8080/chat
1条答案
按热度按时间luaexgnf1#
您可以在提示符中传递一些上下文,因此保存一些内容,如最后10个回复,将其与新消息一起发送,然后弹出最旧的回复并添加最新的回复。
更有效的方法是,你也可以每交流10次,问“总结这次对话:......”然后将总结与每条消息一起传递并重复。
在请求中传递一个低温参数也是一个好主意,这样可以使聊天集中在主题上。