A função communicateWithOpenAI é responsável por enviar mensagens para a API da OpenAI e retornar as respostas correspondentes. Aqui está uma explicação de cada parte da função:

  1. Definição da URL e Obtenção da Chave da API:
  2. Envio da Solicitação para a API:
  3. Tratamento da Resposta da API:
  4. Tratamento de Erros:
export const communicateWithOpenAI = async (messages) => {
  const url = '<https://api.openai.com/v1/chat/completions>';
  const api_key = getApiKey();

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${api_key}`
      },
      body: JSON.stringify({
        model: "gpt-3.5-turbo",
        messages
      })
    });

    if (!response.ok) {
      const errorMessage = `Failed to fetch. Status code: ${response.status}`;
      throw new Error(errorMessage);
    }

    const data = await response.json();

    if (!data.choices || data.choices.length === 0 || !data.choices[0].message || !data.choices[0].message.content) {
      throw new Error('No valid messages found in API response');
    }

    return {
      success: true,
      content: data.choices[0].message.content,
    };
  } catch (error) {
    console.error('Ocorreu um erro:', error.message);
    throw error;
  }
};