CommunityEscrita e Ediçãogithub.com

gerar-perguntas

Gera um conjunto de perguntas de pesquisa candidatas usando vários agentes geradores de IA, em dois modos (um prompt simples e transferência de descobertas de um campo distante nomeado), depois mescla quase-duplicatas e reescreve cada pergunta em um estilo simples e bilateral. Use no início de uma busca por perguntas de pesquisa em um campo onde cada pergunta pode ser testada por um piloto curto avaliado por script, ou sempre que for necessário um conjunto amplo e deduplicado de perguntas candidatas antes de escolher entre elas.

O que é gerar-perguntas?

Esta skill produz um arquivo `pool.json` contendo uma lista de perguntas de pesquisa candidatas, cada uma com um ID anônimo, mescladas para que quase-duplicatas apareçam apenas uma vez e reescritas em um estilo simples e imparcial, sem direcionamento para o efeito que investigam. Ela é útil no início de uma busca por perguntas de pesquisa em um campo onde cada pergunta pode ser testada por um piloto curto, avaliado por script, ou sempre que for necessário um conjunto amplo e deduplicado de perguntas candidatas antes de escolher entre elas. A skill suporta a execução em sub-agentes com contextos próprios, permitindo escolher diferentes modelos para cada gerador, e funciona com qualquer sistema de IA que suporte a definição de agentes e execução de scripts, como Claude Code, Cursor e Codex. O processo envolve a criação de briefs, execução de geradores em dois modos (prompt simples e transferência de descobertas de um campo distante), identificação de quase-duplicatas por similaridade de cosseno ou similaridade lexical, julgamento por um agente juiz, reescrita e anonimização para gerar o pool final. Os resultados do teste mostraram que entre 27% e 28% das perguntas geradas levaram a descobertas novas e confirmadas, dependendo do modo.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/techurbanist/research-skills/tree/HEAD/skills/generate-questions

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que gerar-perguntas faz?

Esta skill produz pool.json: uma lista de perguntas de pesquisa candidatas, cada uma com um id anônimo, mescladas para que quase-duplicatas apareçam uma vez e reescritas para que toda pergunta tenha o mesmo estilo simples e não nomeie nenhuma direção para o efeito que pergunta. As próximas habilidades (screen-pilot, critique-forecast, check-novelty) usam este arquivo como entrada.

O que você precisa primeiro

  • Um perfil de campo: uma cópia de field-profile/TEMPLATE.md deste pacote, preenchida para o seu campo e salva no projeto (por padrão FIELD-PROFILE.md na raiz do projeto). O pesquisador deve concordar com seu conteúdo, em particular o campo, os sujeitos nos quais os pilotos serão executados, os limites do piloto e quem gostaria de saber as respostas. O perfil testado é field-profile/example-small-language-models.md.
  • Uma pasta de trabalho para esta rodada, aqui chamada de RUN/.
  • Subagentes com seus próprios contextos. Onde você puder escolher o modelo, use um modelo diferente para cada gerador. Você também pode executar um gerador através da ferramenta ou API de outro provedor e salvar sua saída no mesmo formato.

Passos

  1. Escolha os geradores. Use pelo menos três modelos geradores, cada um em ambos os modos, para que cada modelo execute dois geradores: plain e distant. No teste, três modelos Claude (Opus 5.5, Fable 5.2, Sonnet 5.5) cada um escreveu 17 perguntas por modo.
  2. Atribua campos distantes. Escolha uma lista de campos distantes com descobertas bem estabelecidas (testado: psicologia cognitiva, psicolinguística, economia comportamental, ecologia) e sorteie um por gerador distante sem reposição: python3 scripts/assign_fields.py SEED "campo um;campo dois;..." NOME1 NOME2 NOME3. Registre a semente e a saída.
  3. Escreva os briefs. python3 scripts/make_briefs.py FIELD-PROFILE.md RUN N NOME1:plain NOME1:distant:"CAMPO" ... escreve um brief por gerador em RUN/briefs/ (um cabeçalho curto, o prompt do modo de prompts/plain.md ou prompts/distant.md, depois prompts/constraints.md, tudo preenchido a partir do perfil) e cria as pastas de saída.
  4. Execute os geradores. Inicie um subagente novo por brief, com o modelo para o qual o brief é, e diga a ele para ler apenas seu brief e segui-lo. Não mostre a ele perguntas exemplo nem a saída de outro gerador. Ele escreve candidates.json (e, em modo distante, transfers.md, sua lista de trabalho, que é mantida para registro e não é passada adiante).
  5. Verifique o formato. python3 scripts/check_candidates.py N RUN/generation/*/*/candidates.json. Peça a um gerador uma correção se seu arquivo falhar, e registre isso.
  6. Agrupe e encontre quase-duplicatas.
    • python3 scripts/merge.py RUN/pool SEED plain:NOME1=RUN/generation/plain/NOME1/candidates.json distant:NOME1=... ... mantém apenas o texto da pergunta e embaralha.
    • python3 scripts/candidate_pairs.py RUN/pool lista pares de perguntas similares. A versão testada incorpora as perguntas com nomic-embed-text através de um servidor Ollama local e mantém pares com similaridade de cosseno de pelo menos 0,83, no máximo 5 vizinhos mais próximos por pergunta. Sem Ollama, adicione --lexical (não testado: similaridade de contagem de palavras, 5 vizinhos mais próximos de cada pergunta).
  7. Julgue duplicatas. Preencha prompts/dedup_judge.md a partir do perfil (python3 scripts/fill_prompt.py FIELD-PROFILE.md prompts/dedup_judge.md > RUN/pool/dedup_judge.md). Para mais de cerca de 150 pares, divida-os (python3 scripts/split_pairs.py RUN/pool 150) e dê cada lote a um juiz novo (testado: Sonnet 5.5, quatro lotes de 152 pares). Cada juiz lê apenas o prompt preenchido e seu lote e escreve suas decisões; junte-as com python3 scripts/join_decisions.py RUN/pool decisions_1.json .... Então python3 scripts/apply_merges.py RUN/pool mescla clusters e escreve to_rewrite.json.
  8. Reescreva. Preencha prompts/rewrite.md da mesma forma e dê a ele, com RUN/pool/to_rewrite.json, para um agente novo (testado: Sonnet 5.5), que escreve RUN/pool/rewritten.json e não lê nenhum outro arquivo.
  9. Anonimize. python3 scripts/anonymise.py RUN/pool SEED verifica se todo id foi reescrito, lista perguntas com mais de 50 palavras, reembaralha e escreve RUN/pool/pool.json (ids Q01, Q02, ... e texto) e RUN/pool/sources.json (de qual gerador e modo cada um veio). Mostre críticos, previsores, construtores de piloto e verificadores de novidade apenas pool.json.

Sementes: quaisquer inteiros fixos, escolhidos e registrados antes da execução do passo.

O que o teste mostrou

No teste (campo: o comportamento observável de modelos de linguagem pequenos e abertos), 12 geradores escreveram 204 perguntas em cerca de três minutos. A mesclagem deixou 168 (18% eram quase-duplicatas; ideias como confiança declarada separando respostas corretas de incorretas surgiram em vários geradores). A parcela de perguntas cujo piloto encontrou um efeito e cuja verificação de literatura não encontrou relato anterior na mesma direção foi:

ModoDescobertas novas e confirmadas
Prompt simples14 de 50 (28%)
Transferência de um campo distante14 de 51 (27%)
Problematização (não incluído)6 de 42 (14%)
Mapeamento de lacunas a partir de resumos recentes (não incluído)3 de 36 (8%)

Com 36 a 51 perguntas por modo, essas diferenças são descritivas (teste de taxas iguais, p = 0,054). Os dois modos não incluídos estão documentados em NOT-RECOMMENDED.md no topo deste pacote.

Arquivos

  • prompts/plain.md, prompts/distant.md: os prompts de geração. N é substituído pelo número de perguntas; os outros placeholders vêm do perfil de campo.
  • prompts/constraints.md: restrições que todo gerador recebe.
  • prompts/dedup_judge.md, prompts/rewrite.md: o juiz de duplicatas e o reescritor.
  • scripts/: fill_prompt.py, make_briefs.py, assign_fields.py, check_candidates.py, merge.py, candidate_pairs.py, split_pairs.py, join_decisions.py, apply_merges.py, anonymise.py. Apenas biblioteca padrão.

Habilidades Relacionadas