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!