[JS] Sem cotinuidade na conversa API openAI
Bom dia! Estou fazendo um projetinho que é implementado a API do openAI para que tenha uma conversa em estilo chat, porém a conversa nao é continua, parece que cada vez que escrevo algo o chat reseta e acaba nao tendo um contexto na conversa.
//SCRIPT DO SERVIDOR NODE
const bodyParser = require('body-parser')
const express = require('express')
const app = express()
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: '', //apaguei minha apikey por segurança
});
const openai = new OpenAIApi(configuration);
app.use(bodyParser.json());
app.get('/', (req,res) => {
res.sendFile(__dirname + '/index.html')
})
app.post('/enviar', async (req,res) => {
const txt = req.body.text
const response = await openai.createCompletion({
model: "text-davinci-003",
prompt: txt,
temperature: 0.9,
max_tokens: 150,
top_p: 1,
frequency_penalty: 0.0,
presence_penalty: 0.6,
stop: [" Human:", " AI:"],
});
const resp = response.data.choices[0].text
res.status(200).json({body: {text: resp}})
})
app.listen(3000,() => console.log('servidor aberto'), )
//SCRIPT DO CLIENTE HTML
<input type="text" id="text">
<button id="button">ok</button>
<div id="chat"></div>
<script>
var botao = document.querySelector('#button');
var text = document.querySelector('#text');
var chat = document.querySelector('#chat');
function enviar(){
chat.innerHTML += `<li>EU: ${text.value} <li>`
fetch('/enviar', {
method: 'POST',
headers:{
'Content-Type': 'application/json'
},
body: JSON.stringify({text: text.value})
})
.then( res => res.json())
.then( data => {
let txt = data.body.text
chat.innerHTML += `<li>IA: ${txt} <li>`
})
}
botao.addEventListener('click', enviar)
Onde você está salvado o retorno anterior?. Deseja salvar em um banco de dados ou no local storage. Me parece que você está recebendo novos dados e subscrevendo os antigos
Entao, sim, estou subscrevendo, mas caso eu amazenasse os dados, qual tipo de request uso para inserir os dados do armazenado?
Se você estiver usando um array para armazenar, basicamente ao fazer a pergunta tu faz um get na api, esse array recebe o novo valor. Remove o antigo da (tela se tiver no front) e mostra o array inteiro na tela com os novos valores
Mas tem que dar uma olhada na documentação, talvez ele volte direto na resposta ao post
Você precisa utilizar o campo context e diminuir a temperatura.
Dá uma lida nisso aqui: https://stancsz.medium.com/keeping-the-gpt-3-context-alive-875e1624adf4 https://platform.openai.com/docs/guides/completion/prompt-design