Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

'ChoiceDelta' object has no attribute 'get'

Após a implementação do stream, minha aplicação não está conseguindo rodar.

Até essa aula, consegui trazer as respostas da minha API normalmente, porém após implementar os códigos necessários para o stream, o terminal apresenta o seguinte erro:

"Debugging middleware caught exception in streamed response at a point where response headers were already sent. Traceback (most recent call last): File "c:\alura\Phyton e Openai\integrações openai.venv\Lib\site-packages\pydantic\main.py", line 753, in getattr return pydantic_extra[item] ^^^^^^^^^^^^^^^^^^^^ KeyError: 'get'

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "c:\alura\Phyton e Openai\integrações openai.venv\Lib\site-packages\werkzeug\wsgi.py", line 256, in next return self._next() ^^^^^^^^^^^^ File "c:\alura\Phyton e Openai\integrações openai.venv\Lib\site-packages\werkzeug\wrappers\response.py", line 32, in _iter_encoded for item in iterable: File "c:\alura\Phyton e Openai\integrações openai\app.py", line 167, in trata_resposta pedaco_da_resposta = resposta.choices[0].delta.get('content', '') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "c:\alura\Phyton e Openai\integrações openai.venv\Lib\site-packages\pydantic\main.py", line 755, in getattr raise AttributeError(f'{type(self).name!r} object has no attribute {item!r}') from exc AttributeError: 'ChoiceDelta' object has no attribute 'get' 127.0.0.1 - - [26/Dec/2023 09:36:10] "POST /chat HTTP/1.1" 200 - "

Tentei resolver através do ChatGPT e procurando outras fontes, porém não tive sucesso.

Alguém consegue me auxiliar?

2 respostas

E aí! Beleza?

Uma coisa que você pode fazer é dar uma olhada na documentação, porque teve uma atualização que quebraram vários cursos de IA aqui pelo o que vi, dai confere se tá usando a versão mais atualizada das coisas

Outra coisa é tentar dar uma debugada nesse resposta.choices[0].delta pra ver o que tá rolando lá dentro. Às vezes, isso pode te dar uma luz sobre o que fazer.

solução!

Esse curso foi feito com uma versão antiga da biblioteca da OpenAI. Para o código funcionar com a versão mais recente da biblioteca é preciso fazer uma pequena alteraçao na função trata_resposta():

def trata_resposta(prompt):
    for resposta in bot(prompt):
            pedaco_da_resposta = resposta.choices[0].delta.content
            if pedaco_da_resposta is not None:
                    yield pedaco_da_resposta

Estou utilizando a versão 1.5.0 da biblioteca e dessa maneira funcionou.