CommunitySchreiben & Editierengithub.com

fragen-generieren

Generiert einen Pool von Kandidatenforschungsfragen mit mehreren KI-Generator-Agenten, in zwei Modi (einfache Aufforderung und Übertragung von Erkenntnissen aus einem benannten entfernten Fachgebiet), entfernt dann nahe Duplikate und schreibt jede Frage in einem einheitlichen, zweiseitigen Stil um. Verwenden Sie dies zu Beginn einer Suche nach Forschungsfragen in einem Gebiet, in dem jede Frage durch einen kurzen, per Skript bewerteten Piloten getestet werden kann, oder wann immer ein breiter, deduplizierter Pool von Kandidatenfragen benötigt wird, bevor Sie eine Auswahl treffen.

Was ist fragen-generieren?

Dieser Skill erstellt eine Datei `pool.json` mit einem deduplizierten Satz von Forschungsfragen, die als Eingabe für nachfolgende Skills wie `screen-pilot`, `critique-forecast` und `check-novelty` dient. Er verwendet mehrere KI-Generator-Agenten in zwei Modi: einer einfachen Aufforderung („plain“) und der Übertragung von Erkenntnissen aus einem entfernten Fachgebiet („distant“). Die generierten Fragen werden dann auf nahe Duplikate geprüft und in einem einheitlichen, neutralen Stil umgeschrieben, der keine Richtung des Effekts vorgibt. Der Skill enthält Skripte für die Zuweisung von Fachgebieten, das Erstellen von Kurzbeschreibungen, das Ausführen der Generatoren, das Zusammenführen, die Duplikatsuche und die Anonymisierung. Er ist ideal für den Einstieg in die explorative Forschung, wenn eine große, qualitativ hochwertige Auswahl an Fragen benötigt wird. Die getestete Implementierung verwendete drei verschiedene Claude-Modelle und generierte in etwa drei Minuten 204 Fragen, wobei durch die Deduplizierung 168 Fragen übrig blieben.

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

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht fragen-generieren?

Dieser Skill erzeugt pool.json: eine Liste von Kandidaten-Forschungsfragen, jeweils mit einer anonymen ID, zusammengeführt, sodass nahe Duplikate nur einmal erscheinen, und umgeschrieben, sodass jede Frage den gleichen schlichten Stil hat und keine Richtung für den Effekt benennt, nach dem sie fragt. Die nächsten Skills (screen-pilot, critique-forecast, check-novelty) verwenden diese Datei als Eingabe.

Was Sie zuerst brauchen

  • Ein Feldprofil: eine Kopie von field-profile/TEMPLATE.md aus diesem Paket, ausgefüllt für Ihr Fachgebiet und im Projekt gespeichert (standardmäßig FIELD-PROFILE.md im Projektstammverzeichnis). Der Forscher sollte den Inhalt bestätigen, insbesondere das Fachgebiet, die Probanden, an denen die Piloten durchgeführt werden, die Pilotenlimits und wer die Antworten wissen möchte. Das getestete Profil ist field-profile/example-small-language-models.md.
  • Ein Arbeitsordner für diese Runde, hier RUN/ genannt.
  • Unter-Agenten mit ihren eigenen Kontexten. Wo Sie das Modell wählen können, verwenden Sie ein anderes Modell für jeden Generator. Sie können einen Generator auch über das Tool oder die API eines anderen Anbieters ausführen und seine Ausgabe im gleichen Format speichern.

Schritte

  1. Wählen Sie die Generatoren aus. Verwenden Sie mindestens drei generierende Modelle, jedes in beiden Modi, sodass jedes Modell zwei Generatoren ausführt: plain und distant. Im Test schrieben drei Claude-Modelle (Opus 5.5, Fable 5.2, Sonnet 5.5) jeweils 17 Fragen pro Modus.
  2. Weisen Sie entfernte Fachgebiete zu. Wählen Sie eine Liste entfernter Fachgebiete mit gut etablierten Erkenntnissen (getestet: Kognitionspsychologie, Psycholinguistik, Verhaltensökonomie, Ökologie) und ziehen Sie eines pro entferntem Generator ohne Zurücklegen: python3 scripts/assign_fields.py SEED "Fachgebiet eins;Fachgebiet zwei;..." NAME1 NAME2 NAME3. Notieren Sie den Samen und die Ausgabe.
  3. Schreiben Sie die Kurzbeschreibungen. python3 scripts/make_briefs.py FIELD-PROFILE.md RUN N NAME1:plain NAME1:distant:"FIELD" ... schreibt eine Kurzbeschreibung pro Generator in RUN/briefs/ (einen kurzen Header, die Eingabeaufforderung des Modus aus prompts/plain.md oder prompts/distant.md, dann prompts/constraints.md, alles aus dem Profil ausgefüllt) und erstellt die Ausgabeordner.
  4. Führen Sie die Generatoren aus. Starten Sie einen frischen Unter-Agenten pro Kurzbeschreibung, mit dem Modell, für das die Kurzbeschreibung bestimmt ist, und weisen Sie ihn an, nur seine Kurzbeschreibung zu lesen und zu befolgen. Zeigen Sie ihm keine Beispielfragen und keine Ausgabe eines anderen Generators. Er schreibt candidates.json (und im distant-Modus transfers.md, seine Arbeitsliste, die für die Aufzeichnung aufbewahrt und nicht weitergegeben wird).
  5. Überprüfen Sie das Format. python3 scripts/check_candidates.py N RUN/generation/*/*/candidates.json. Bitten Sie einen Generator einmal um eine Korrektur, wenn seine Datei fehlschlägt, und notieren Sie dies.
  6. Zusammenführen und nahe Duplikate finden.
    • python3 scripts/merge.py RUN/pool SEED plain:NAME1=RUN/generation/plain/NAME1/candidates.json distant:NAME1=... ... behält nur den Fragetext und mischt.
    • python3 scripts/candidate_pairs.py RUN/pool listet Paare ähnlicher Fragen auf. Die getestete Version bettet die Fragen mit nomic-embed-text über einen lokalen Ollama-Server ein und behält Paare mit Kosinus-Ähnlichkeit von mindestens 0,83, maximal 5 nächste Nachbarn pro Frage. Ohne Ollama fügen Sie --lexical hinzu (ungtestet: Wortanzahl-Ähnlichkeit, die 5 nächsten Nachbarn jeder Frage).
  7. Beurteilen Sie Duplikate. Füllen Sie prompts/dedup_judge.md aus dem Profil (python3 scripts/fill_prompt.py FIELD-PROFILE.md prompts/dedup_judge.md > RUN/pool/dedup_judge.md). Bei mehr als etwa 150 Paaren teilen Sie sie auf (python3 scripts/split_pairs.py RUN/pool 150) und geben Sie jede Charge einem frischen Richter (getestet: Sonnet 5.5, vier Chargen von 152 Paaren). Jeder Richter liest nur die ausgefüllte Eingabeaufforderung und seine Charge und schreibt seine Entscheidungen; führen Sie sie zusammen mit python3 scripts/join_decisions.py RUN/pool decisions_1.json .... Dann führt python3 scripts/apply_merges.py RUN/pool die Cluster zusammen und schreibt to_rewrite.json.
  8. Umschreiben. Füllen Sie prompts/rewrite.md auf die gleiche Weise und geben Sie es zusammen mit RUN/pool/to_rewrite.json einem frischen Agenten (getestet: Sonnet 5.5), der RUN/pool/rewritten.json schreibt und keine andere Datei liest.
  9. Anonymisieren. python3 scripts/anonymise.py RUN/pool SEED prüft, dass jede ID umgeschrieben wurde, listet Fragen mit über 50 Wörtern auf, mischt erneut und schreibt RUN/pool/pool.json (IDs Q01, Q02, ... und Text) und RUN/pool/sources.json (von welchem Generator und Modus jede stammt). Zeigen Sie Kritikern, Prognostikern, Pilotenbauern und Neuheitsprüfern nur pool.json.

Samen: beliebige feste ganze Zahlen, vor Ausführung des Schritts gewählt und notiert.

Was der Test zeigte

Im Test (Fachgebiet: das beobachtbare Verhalten kleiner offener Sprachmodelle) schrieben 12 Generatoren 204 Fragen in etwa drei Minuten. Das Zusammenführen hinterließ 168 (18 % waren nahe Duplikate; Ideen wie angegebene Konfidenz, die richtige von falschen Antworten trennt, kamen in mehreren Generatoren auf). Der Anteil der Fragen, deren Pilot einen Effekt fand und deren Literaturprüfung keinen früheren Bericht in der gleichen Richtung ergab, war:

ModusNeue und bestätigte Ergebnisse
Einfache Aufforderung14 von 50 (28 %)
Übertragung aus einem entfernten Fachgebiet14 von 51 (27 %)
Problematisierung (nicht enthalten)6 von 42 (14 %)
Lückenkartierung aus aktuellen Zusammenfassungen (nicht enthalten)3 von 36 (8 %)

Mit 36 bis 51 Fragen pro Modus sind diese Unterschiede deskriptiv (Test auf gleiche Raten, p = 0,054). Die beiden nicht enthaltenen Modi sind in NOT-RECOMMENDED.md oben in diesem Paket dokumentiert.

Dateien

  • prompts/plain.md, prompts/distant.md: die Generierungsaufforderungen. N wird durch die Anzahl der Fragen ersetzt; die anderen Platzhalter stammen aus dem Feldprofil.
  • prompts/constraints.md: Einschränkungen, die jeder Generator erhält.
  • prompts/dedup_judge.md, prompts/rewrite.md: der Duplikatrichter und der Umschreiber.
  • 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. Nur Standardbibliothek.

Verwandte Skills