1
resposta

A resposta B está mesmo correta?

Buenas!

Apesar de estar marcada como correta, acho que há um erro na resposta B. Da forma mostrada, o yield não está enviando apenas novos pedaços de resposta, mas a concatenação de todos os pedaços à cada iteração:

ClClaroClaro!Claro! ParaClaro! Para queClaro! Para que euClaro! Para que eu possClaro! Para que eu possaClaro! Para que eu possa listarClaro! Para que eu possa listar osClaro! Para que eu possa listar os produtosClaro! Para que eu possa listar os produtos maisClaro! Para que eu possa listar os produtos mais populClaro! Para que eu possa listar os produtos mais populares(...)

O yield está correto?

def trata_resposta(prompt):
    resposta_parcial = ''
    for resposta in bot(prompt):
        pedaco_da_resposta = resposta.choices[0].delta.get('content','')
        if len(pedaco_da_resposta):
            resposta_parcial += pedaco_da_resposta
            yield resposta_parcial   # Não deveria ser `yield pedaco_da_resposta` ?

Abraço!

1 resposta

E aí!

Parece que você tá certo.Na opção B, o yield tá meio confuso. Ele tá mandando de volta a resposta parcial completa a cada iteração, em vez de mandar só o novo pedaço. Se liga nesse trecho:

if len(pedaco_da_resposta):
    resposta_parcial += pedaco_da_resposta
    yield resposta_parcial

Acho que a intenção era só enviar o pedaço novo, então acho que deveria ser mais ou menos assim:

if len(pedaco_da_resposta):
    yield pedaco_da_resposta

A cada iteração, vai mandar só o pedaço novo da resposta, não a resposta completa toda vez.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software