Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Desafio

#Criar um arquivo txt a partir de uma listade perguntas em python

perguntas = [
    'De que é feito o Sol?',
    'De que é feito o planeta Saturno?',
    'Qual é a galáxia mais antiga já encontrada?',
    'Qual é a maior estrela já encontrada?',
    'Qual é a estrela mais próxima do Sol?'
]

with open("perguntas.txt", "w", encoding="utf-8") as arquivo:
  for pergunta in perguntas:
    arquivo.write(pergunta + '\n')
    
#Ler as perguntas desse arquivo
with open("perguntas.txt", "r", encoding="utf-8") as arquivo:
  perguntas = arquivo.readlines()
  for index, pergunta in enumerate(perguntas):
    print(f"Pergunta {index+1}: {pergunta}")
    
#Obter resposta de uma LLM para cada pergunta
import os
from google.colab import userdata
from groq import Groq
from google.api_core.exceptions import TooManyRequests
import time

os.environ['GROQ_API_KEY'] = userdata.get('GROQ_API_KEY')

client = Groq()

#função para responder às perguntas usando a LLM gpt-oss-20B
def responder_lista_de_perguntas(perguntas):
  print("Resposta para as perguntas:\n")
  respostas = []
  for pergunta in perguntas:
    try:
      completion = client.chat.completions.create(
      model="openai/gpt-oss-20b",
      messages=[
        {
          "role": "user",
          "content": pergunta
        }
      ],
      temperature=0.5,
      max_completion_tokens=7000, # Reduzido para ficar dentro do limite de tokens
      top_p=1,
      reasoning_effort="medium",
      stream=True,
      stop=None
    )
      resposta = ''

      # Itera sobre a resposta do stream e agrega o conteúdo à lista "respostas"
      for chunk in completion:
        resposta += chunk.choices[0].delta.content or ""
      print(resposta)
      respostas.append(resposta)
    except TooManyRequests as e:
      print(f"\nERRO: Limite de requisições excedido. Tentando novamente em 60 segundos.")
      print(f"Detalhes do erro: {e}")
      time.sleep(60) # Espera 60 segundos
      # Chama a função recursivamente a partir do índice atual
      responder_lista_de_perguntas(perguntas)
      return # Retorna para evitar processamento duplicado após a chamada recursiva
  return respostas

#salvar os resultados em um arquivo .csv
import pandas as pd # Importar pandas

respostas_list = responder_lista_de_perguntas(perguntas)

# Converter a lista de respostas para um DataFrame do pandas
df_respostas = pd.DataFrame(respostas_list, columns=['Resposta'])

df_respostas.to_csv('respostas_perguntas.csv', index=False, sep=';')
print("Respostas salvas com sucesso!")

#Ler o arquivo .csv usando Pandas
respostas = pd.read_csv("respostas_perguntas.csv", sep=';')

respostas.head()
1 resposta

Olá, Paulo Anderson! Como vai?

Parabéns pela realização das atividades!

Você conseguiu apresentar um conteúdo muito completo, mostrando como manipular arquivos em Python, desde a criação de um .txt até a leitura e escrita em CSV, além de integrar uma LLM para responder às perguntas. Também foi excelente a forma como você organizou o código em etapas claras, incluindo o tratamento de erros como TooManyRequests, o que demonstra cuidado com a robustez da solução.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Modularização: separar funções em arquivos diferentes para facilitar manutenção.
  • Validação: garantir que os dados lidos do arquivo estejam limpos antes de enviar para a LLM.
  • Automação: incluir logs ou salvar também as perguntas junto das respostas no CSV para rastreabilidade.

Ah uma pergunta: O que você considera mais interessante evoluir agora, aprimorar o uso de bibliotecas de IA para enriquecer as respostas ou explorar técnicas de tratamento de dados antes de enviar as perguntas ao modelo?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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