Skip to content

Instantly share code, notes, and snippets.

@leomonteiro92
Created February 5, 2026 14:02
Show Gist options
  • Select an option

  • Save leomonteiro92/72cef04c1868c7bad7071f4136c5cd84 to your computer and use it in GitHub Desktop.

Select an option

Save leomonteiro92/72cef04c1868c7bad7071f4136c5cd84 to your computer and use it in GitHub Desktop.
Gerador de Questões de Vestibular
import os
from anthropic import Anthropic, types
from collections.abc import Callable
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()
MODEL = "claude-sonnet-4-5-20250929"
client = Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
system_prompt = (
"Você é um expert em criar questões de múltipla escolha no formato da FUVEST"
)
# Primeira Fase
first_phase_user_prompt = (
lambda topic: f""""
Crie 12 questões de múltipla escolha, no formato da prova de primeira fase da FUVEST com DIFICULDADE MÉDIA,
separe cada questão com uma linha feita por CINCO asteriscos(*****) e separe o gabarito com uma linha feita por CINCO sinais de igualdade(=====) APÓS as questões
O tema das questões é {topic}
EVITE questões com gráficos pois são dificeis de renderizar
"""
)
# Segunda Fase
second_phase_user_prompt = (
lambda topic1, topic2: f""""
Crie 1 questão no formato da prova de SEGUNDA FASE da FUVEST com DIFICULDADE MÉDIA,
Separe o gabarito com uma linha feita por CINCO sinais de igualdade(=====) APÓS o enunciado
O tema das questões deve ser multidisciplinar e pode envolver {topic1} e {topic2}
EVITE questões com gráficos pois são dificeis de renderizar
"""
)
user_prompt = (lambda phase, topic1, topic2: first_phase_user_prompt(topic1) if phase == 1 else second_phase_user_prompt(topic1, topic2))
def generate_questions(phase: int, topic1: str, topic2: str) -> str | None:
response: types.Message = client.messages.create(
max_tokens=4096,
model=MODEL,
messages=[
{
"role": "user",
"content": system_prompt + "\n" + user_prompt(phase, topic1, topic2),
},
],
stream=False,
)
content = response.content
return content[0].text
def write_file(preffix: str, content: str, ttype: str):
with open(f"qa/{preffix}-{ttype}.md", "w") as file:
file.write(content)
def main():
phase = 1
topic1 = "Geometria_espacial"
topic2 = "Analise_combinatoria"
response = generate_questions(phase,topic1, topic2)
[questions, answer_key] = response.split("=====")
now = datetime.now()
preffix = now.strftime("%Y%m%d%H%M%S") + "_" + topic1.lower() + "_" + topic2.lower()
write_file(preffix, questions, "Q")
write_file(preffix, answer_key, "A")
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment