0
respostas

Está dando um erro 'str' object has no attribute 'content'

Esse é o código do arquivo app.py :

from flask import Flask,render_template, request, Response from openai import OpenAI from dotenv import load_dotenv import os from time import sleep from helpers import * from selecionar_persona import * from selecionar_documento import * from assistente_ecomart import *

load_dotenv()

cliente = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) modelo = "gpt-4"

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

Cria um novo assistente através do método pegar_json.

assistente = pegar_json()

Acessando a thread_id do json.

thread_id = assistente["thread_id"]

Pegando o atributo assisant_id do json.

assistente_id = assistente["assistant_id"]

Pegando a lista de arquivos do metadados

file_ids = assistente["file_ids"]

def bot(prompt): maximo_tentativas = 1 repeticao = 0 while True: try: # Camada que traz a personalidade do assistente. personalidade = personas[selecionar_persona(prompt)] # Acessa a camada de mensagens da thread e cria uma nova mensagem que vai ser interpretada pelo assistente para chegar a resposta # Responsável por garantir que essa persona seja associada. cliente.beta.threads.messages.create( thread_id=thread_id, role = "user", content = f""" Assuma, de agora em diante, a personalidade abaixo. Ignore as personalidades anteriores.

                # Persona
                {personalidade}
                """,
                file_ids=file_ids
               
            )
        # Criar uma mensagem que vai ser associada a uma thread. Essa mensagem é a pergunta que o usuário fez para o assistente.
        cliente.beta.threads.messages.create(
                thread_id=thread_id,
                role = "user",
                content =  prompt,
                file_ids=file_ids
                
            )
        # Execução da thread. Passando o parâmetro thread que vai manter o histórico de mensagens e o identificador do assistente que vai responder a essa thread.
        run = cliente.beta.threads.runs.create(
            thread_id=thread_id,
            assistant_id=assistente_id
        )
        #   Só demonstra a a resposta quando o status da execução for "completed". Enquanto o status da execução for diferente de "completed", o código vai ficar em loop, esperando a resposta do assistente. 
        #   Passar a thread que precisa observar e a execução que está sendo realizada. Quando o status for alterado, ai consegue acessar a resposta.
        while run.status !="completed":
            run = cliente.beta.threads.runs.retrieve(
                thread_id=thread_id,
                run_id=run.id
        )
        # Guarda todas as informações que podem ser acessadas pelo assistente em cima de uma thread.
        historico = list(cliente.beta.threads.messages.list(thread_id=thread_id).data)
        resposta = historico[0]
        return resposta
    
    except Exception as erro:
            repeticao += 1
            if repeticao >= maximo_tentativas:
                    return "Erro no GPT: %s" % erro
            print('Erro de comunicação com OpenAI:', erro)
            sleep(1)

@app.route("/chat", methods=["POST"]) def chat(): prompt = request.json["msg"] resposta = bot(prompt) # Resposta que tem um formato com relação ao assistente. texto_resposta = resposta.content[0].text.value return texto_resposta

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

if name == "main": app.run(debug = True)

![Imagem do erro quando eu envio uma mensagem ao chatbot](https://cdn1.gnarususercontent.com.br/1/5914902/10ca2fcd-4616-4308-b0e7-6d93e4a4c600.png)