1
resposta

Fiz o desafio usando o groq e o código ficou dessa forma. No que pode ser melhorado ?

def ler_perguntas():
lista_de_perguntas = []
with open("perguntas.txt", "r", encoding="utf-8") as arquivo:
lista_de_perguntas = arquivo.readlines()
return lista_de_perguntas

def perguntar_para_o_groq(pergunta):
os.environ["GROQ_API_KEY"] = userdata.get('GROQ_API_KEY')
from groq import Groq

client_groq = Groq()

completion = client_groq.chat.completions.create(
model="openai/gpt-oss-20b",
messages=[
{
"role": "user",
"content": f"Responda de forma resumida em uma unica linha à pergunta {pergunta} "
}
],
temperature=1,
max_completion_tokens=8192,
top_p=1,
reasoning_effort="medium",
stream=True,
stop=None,
)
respostas = []
for chunk in completion:
conteudo = chunk.choices[0].delta.content
if conteudo:
respostas.append(conteudo)
resultado = {"pergunta": pergunta , "resposta": "".join(respostas) }
return resultado

def salvar_arquivo_csv(nome_arquivo,conteudo):
import csv
colunas = ["pergunta", "resposta"]
with open(nome_arquivo, "w", newline="", encoding="utf-8") as arquivo_csv:
escritor = csv.DictWriter(arquivo_csv, fieldnames=colunas)
escritor.writeheader()
escritor.writerows(conteudo)

def ler_arquivo_pelo_panda(nome_arquivo_csv):
import pandas as pd
df = pd.read_csv(nome_arquivo_csv)
return df

Chamada das funções

lista_pergunta = ler_perguntas()
lista_resposta_groq = []
for pergunta in lista_pergunta:
resposta = perguntar_para_o_groq(pergunta)
lista_resposta_groq.append(resposta)
salvar_arquivo_csv("respostas.csv",lista_resposta_groq)
meu_df = ler_arquivo_pelo_panda("/content/respostas.csv")
print(meu_df)

1 resposta

Oi, Igo! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.

Ficou bem bacana a forma organizada como separou as responsabilidades em funções e automatizou a leitura, geração de respostas e gravação em CSV.

Um ponto importante para melhorar é evitar criar o cliente da API e fazer imports repetidos dentro da função, além de tratar as perguntas com strip() para remover quebras de linha vindas do arquivo. Isso deixa o código mais eficiente e previsível.
Uma dica interessante para o futuro é centralizar a criação do cliente e já ler as perguntas tratadas, integrando essa melhoria no fluxo:


from groq import Groq

def ler_perguntas(caminho):
    with open(caminho, "r", encoding="utf-8") as arquivo:
        return [linha.strip() for linha in arquivo if linha.strip()]

def perguntar_para_groq(client, pergunta):
    completion = client.chat.completions.create(
        model="openai/gpt-oss-20b",
        messages=[{
            "role": "user",
            "content": f"Responda de forma resumida em uma unica linha: {pergunta}"
        }],
        stream=True
    )
    partes = []
    for chunk in completion:
        texto = chunk.choices[0].delta.content
        if texto:
            partes.append(texto)
    return {"pergunta": pergunta, "resposta": "".join(partes)}

client = Groq()
perguntas = ler_perguntas("perguntas.txt")
respostas = [perguntar_para_groq(client, p) for p in perguntas]

Esse código lê o arquivo removendo linhas vazias, cria o cliente apenas uma vez e reutiliza ele para montar cada resposta por streaming.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!