2
respostas

[Dúvida] ChatBot responde em branco/vazio.

Pessoal, verifiquei que alguns códigos estão na versão antiga da OpenAi, com a atualização da biblioteca, alguns códigos precisam ser alterados. Cheguei a tentar fazer essa conversão porém não estou conseguindo fazer funcionar como deve.

Poderiam me auxiliar?

Meu código:

from flask import Flask, render_template, request, Response
import os
import dotenv
from time import sleep
from openai import OpenAI

dotenv.load_dotenv()
client = OpenAI()
# código para buscar o organizationId para identificar o requisitante da API - OpenAI.organization = os.getenv("") --


def bot(prompt):
    maxima_repeticao = 1
    repeticao = 0
    while True:
        try:
            model = 'gpt-3.5-turbo-16k'
            prompt_do_sistema = f"""
            Você é um chatbot de atendimento a clientes de um e-commerce.
            Você não deve responder perguntas que não sejam dados do ecommerce informado!
            """
            response = client.chat.completions.create(
                messages=[
                    {
                        "role": "system",
                        "content": prompt_do_sistema
                    },
                    {
                        "role": "user",
                        "content": prompt
                    }
                ],
                stream=True,
                temperature=1,
                max_tokens=256,
                top_p=1,
                frequency_penalty=0,
                presence_penalty=0,
                model=model)
            return response
        except Exception as erro:
            repeticao += 1
            if repeticao >= maxima_repeticao:
                return "Erro no GPT3: %s" % erro
            print('Erro de comunicação com OpenAI:', erro)
            sleep(1)


app = Flask(__name__)
app.secret_key = 'alura'


@app.route("/")
def home():
    return render_template("index.html")


@app.route("/chat", methods=['POST'])
def chat():
    prompt = request.json['msg']
    resposta = bot(prompt=prompt)
    texto_da_resposta = resposta
    return texto_da_resposta


if __name__ == "__main__":
    app.run(debug=True)
2 respostas

Oi Gabriel!

Com as mudanças na biblioteca, alguns códigos podem precisar de ajustes.

Uma coisa que notei é que a classe OpenAI não está mais sendo utilizada diretamente. Agora, você deve usar a classe ChatCompletion diretamente. Veja como ficaria essa parte do código:

response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": prompt_do_sistema},
        {"role": "user", "content": prompt},
    ],
    ...
)

Tente fazer essas alterações e veja se resolve o problema.

tenta fazer uma das seguintes alterações:

@app.route("/chat", methods=['POST'])
def chat():
    prompt = request.json['msg']
    resposta = bot(prompt=prompt)
    texto_da_resposta = resposta.choices[0].message.content
    return texto_da_resposta

ou sem o content no fim, da seguinte forma:

@app.route("/chat", methods=['POST'])
def chat():
    prompt = request.json['msg']
    resposta = bot(prompt=prompt)
    texto_da_resposta = resposta.choices[0].message
    return texto_da_resposta