3
respostas

Erro leitura Arquivo com codigo promocional

pessoal não sei se é um tema de conexão porém quando faço qualquer pergunta referente ao codigo promocional ica num loop infinito o run e não da uma resposta.... ai fica travado a thread e não consigo dar sequencia alguem conseguiria me ajudar?, Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Olá Cristhyan,

Pelo que entendi, você está tendo problemas com um loop infinito ao fazer perguntas sobre o código promocional no seu chatbot criado com Python e GPT. Isso pode ser causado por várias razões, incluindo um problema de conexão, como você mencionou, ou pode ser um problema no código.

Sem ver o código, é difícil dizer exatamente o que pode estar causando o problema. No entanto, aqui estão algumas sugestões gerais que podem ajudar:

  • Verifique o fluxo de controle do seu código: Certifique-se de que não há loops infinitos no seu código. Isso pode acontecer se a condição de saída de um loop nunca for atendida.
  • Verifique a lógica de manipulação de erros: Se o seu código está tentando lidar com erros ou exceções, certifique-se de que a lógica está correta e não está causando o loop infinito.
  • Verifique a lógica de recuperação de falhas: Se o seu código tem lógica para se recuperar de falhas (como tentar novamente uma operação após uma falha), certifique-se de que essa lógica está correta e não está causando o loop infinito.
  • Verifique a lógica de conexão: Se o problema for realmente devido à conexão, você pode querer adicionar alguma lógica para lidar com falhas de conexão, como tentar novamente após um certo período de tempo ou após um certo número de tentativas.

Espero que isso ajude! Se você puder fornecer mais detalhes sobre o seu código ou o problema que está enfrentando, eu ficaria feliz em tentar ajudar mais.

opa obrigado

compartilho partes do meu codigo, o principal executor ali é o app com a def bot

    def bot(self,prompt):
        maximo_tentativas = 1
        repeticao = 0
        
        while True:
            try:
                #cria o copilador da mensagem do usuário
                personalidade = self.seleciona_persona(prompt)
                self.cliente.beta.threads.messages.create(
                     thread_id=self.threads_id,
                     role="user",
                     content=f"""Assuma, de agora em diante, a personalidade abaixo
                     ignore as personalidades anteriores, lembre-se que seu nome é Lumybot
                     # Persona
                     {personalidade}
                    caso seja none a persona assuma uma personalidade neutra
                     """,
                     file_ids=self.file_ids
                )
                self.cliente.beta.threads.messages.create(
                     thread_id= self.threads_id,
                     role = "user",
                     content= prompt,
                     file_ids=self.file_ids
                )
                #cria campo de execução acionando o assistente
                run = self.cliente.beta.threads.runs.create(
                     thread_id=self.threads_id,
                     assistant_id=self.assistente_id
                )
                
                # linha de repetição para garantir que a execução foi completa e conseguir responder a pergunta
                while run.status != self.STATUS_COMPLETED:
                     run = self.cliente.beta.threads.runs.retrieve(
                          thread_id=self.threads_id,
                          run_id= run.id
                     )
                     #Status da execuçao do Run
                     print(f'Status: {run.status}')
                    #devio responsavel por absorver um comportamento novo ou não se existir a chamada de função
                     if run.status == self.STATUS_REQUIRES_ACTION:
                            tools_acionadas = run.required_action.submit_tool_outputs.tool_calls
                            respostas_tools_acionadas = []
                            for um_tool in tools_acionadas:
                                nome_funcao = um_tool.function.name
                                funcao_escolhida =  self.lista_funcoes[nome_funcao]
                                args = json.loads(um_tool.function.arguments)
                                print(args)
                                resposta_funcao=funcao_escolhida(args)

                                respostas_tools_acionadas.append({
                                    "tool_call_id":um_tool.id,
                                    "output":resposta_funcao
                                })
                            
                            # Envia a saída das ferramentas de execução de volta
                            run = self.cliente.beta.threads.runs.submit_tool_outputs(
                                thread_id=self.threads_id,
                                run_id=run.id,
                                tool_outputs=respostas_tools_acionadas
                            )
                #acessa todas as respostas dentro do histórico para analise e trataiva para melhor resposta ao usuario
                #necessário converter para modelo de lista se não não é possivel acessar a resposta atual
                historico = list(self.cliente.beta.threads.messages.list(thread_id=self.threads_id).data)
                resposta = historico[0]
                #envia resposta para o usuário
                return resposta               

Olá! Fico feliz que você esteja gostando do curso e aprendendo coisas novas. É sempre bom descobrir que as habilidades que já temos têm um nome e são reconhecidas. Continue com o ótimo trabalho e continue aprendendo! Se tiver mais perguntas ou precisar de ajuda com algo, estou aqui para ajudar.

Lembre-se de deixar seu tópico como resolvido ou concluído para obter alcance!