Verlässliche Quellenangaben schaffen Vertrauen und helfen beim Lesen, die Richtigkeit von Antworten zu überprüfen. Dieser Leitfaden zeigt dir, wie du zitierfähiges Material aufbereitest und das Modell anweist, Quellenangaben passend zu formatieren. Dabei kommen Muster zum Einsatz, mit denen OpenAI-Modelle vertraut sind.
Übersicht
Ein System für Quellenangaben besteht aus mehreren Teilen: Du legst fest, was zitiert werden darf, stellst das Material übersichtlich dar, erklärst dem Modell, wie es darauf verweisen soll, und validierst das Ergebnis, bevor es angezeigt wird.
Dieser Leitfaden behandelt fünf Kernelemente, mit denen das Modell direkt arbeitet:
- Zitierfähige Einheiten: Lege fest, was das Modell zitieren darf.
- Darstellung des Materials: Stelle das Quellenmaterial in einem klaren, strukturierten Format bereit.
- Format der Quellenangaben: Gib genau vor, welches Format das Modell für Quellenangaben verwenden soll.
- Anweisungen im Prompt: Erkläre dem Modell, wann es Quellen angeben soll und wie es das korrekt macht.
- Parsen von Quellenangaben: Extrahiere die Quellenangaben aus der Antwort des Modells für die weitere Verarbeitung.
Zitierfähige Einheiten auswählen
Bevor du Prompts schreibst, lege klar fest, was das Modell zitieren kann. Gängige Optionen sind:
| Zitierfähige Einheit | Am besten geeignet, wenn … | Nachteil | Beispiel |
|---|---|---|---|
| Dokument | Du musst nur zeigen, aus welchem Dokument die Antwort stammt. | Nicht sehr präzise. | Verweise auf das gesamte Handbuch für Mitarbeitende, wenn du nur zeigen musst, welches Dokument die Aussage belegt. |
| Block / Textabschnitt | Du möchtest ein gutes Gleichgewicht zwischen Einfachheit und Präzision. | Noch immer nicht zeilengenau. | Verweise auf den konkreten Vertragsabsatz oder den abgerufenen Textabschnitt, der die Klausel enthält. |
| Zeilenbereich | Du musst die genaue Textstelle zeigen, die als Beleg dient. | Für das Modell schwieriger. | Verweise auf die Zeilen L42-L47, wenn die genaue Textstelle überprüft werden muss. |
Eine gute zitierfähige Einheit sollte folgende Eigenschaften haben:
- Konsistent: Dieselbe Quelle sollte über mehrere Durchläufe hinweg dieselbe ID behalten.
- Leicht überprüfbar: Menschen sollten sie lesen und den umgebenden Kontext verstehen können.
- Passende Größe: groß genug, um verständlich zu sein, aber klein genug, um präzise zu bleiben.
Für die meisten Systeme sind Quellenangaben auf Blockebene die beste Standardwahl. Sie sind für das Modell in der Regel einfacher als zeilengenaue Quellenangaben und für die Nutzenden hilfreicher als Verweise auf ganze Dokumente.
Zitierfähiges Material darstellen
Das Modell kann kein Material zitieren, das nicht klar dargestellt ist. Unabhängig davon, ob das Material aus einem Tool stammt oder direkt eingefügt wird, sollte es Folgendes enthalten:
- Stabile Quellen-ID: Eine konsistente Kennung wie
file1oderblock1. - Lesbarer Text: Klar formatiertes Quellenmaterial.
- Metadaten (optional): URLs, Zeitstempel, Titel und ähnliche Kontextinformationen.
Quellen-IDs und Positionsangaben: Eine Quellen-ID ist eine stabile,
vom Modell erzeugte Kennung wie block1. Eine Positionsangabe bezeichnet die
genaue, in der Benutzeroberfläche hervorgehobene Stelle, etwa lines L8-L13 oder
Paragraph 21. Im Allgemeinen sollte das Modell die Quellen-ID ausgeben,
während dein System die Positionsangabe auflöst oder darstellt. Werden beide zu früh vermischt,
führt das häufig zu mehr Formatierungsfehlern.
Format der Quellenangaben festlegen
Du musst festlegen, in welchem Format das Modell Quellenangaben erzeugen soll. Verwende ein Format, das eindeutig und konsistent ist und das Modell leicht und zuverlässig reproduzieren kann.
Im Folgenden findest du das von uns empfohlene Format für Quellenangaben und die dazugehörigen Marker. Wir empfehlen diese Quellenmarker ausdrücklich, da sie den Markern sehr nahekommen, mit denen unsere Modelle trainiert wurden. Wenn du andere Markerwerte wählst, halte das Gesamtformat der Quellenangaben möglichst ähnlich.
| Bestandteil | Funktion | Empfehlung |
|---|---|---|
CITATION_START | Öffnet den Quellenmarker. | \ue200 |
| Kategorie der Quellenangabe | Kennzeichnet den Typ der Quellenangabe. Verwende cite für alle unterstützten Quellen. | cite |
CITATION_DELIMITER | Trennt Felder innerhalb des Markers. | \ue202 |
| Quellen-ID | Kennzeichnet die zitierte Einheit. turn# ist die Nummer des Gesprächsschritts. item# bezeichnet die konkrete Datei, den Block oder die URL. | turn0file1, turn0block1, turn0url1 |
| Positionsangabe (optional) | Grenzt die Quellenangabe auf einen genauen Textbereich ein. | L8-L13 |
CITATION_STOP | Schließt den Quellenmarker. | \ue201 |
Bei Tool-Aufrufen wird turnN einmal pro Aufruf erhöht,
nicht einmal pro einzelnem Ergebnis. Innerhalb eines Aufrufs werden Quellen
durch Suffixe wie file0, file1 und
so weiter unterschieden. In einem System mit nur einer Antwort haben alle Verweise nur dann die Form
turn0..., wenn das Modell vor seiner Antwort
genau einen Tool-Aufruf ausführt. Bei mehreren Tool-Aufrufen können stattdessen Verweise
wie turn0fileX, turn1fileX und so weiter auftreten.
Vorlage
{CITATION_START}<citation_family>{CITATION_DELIMITER}<source_id>{CITATION_DELIMITER}<locator>{CITATION_STOP}
Beispiel
{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_DELIMITER}L8-L13{CITATION_STOP}
Wenn dein System keine Positionsangaben verwendet, lasse dieses Feld weg:
{CITATION_START}cite{CITATION_DELIMITER}turn0file1{CITATION_STOP}
Wirksame Anweisungen für Quellenangaben schreiben
Verwende vertraute Muster für Quellenangaben, um eine möglichst hohe Genauigkeit zu erreichen. Eigene oder ungewohnte Formate erhöhen die kognitive Belastung des Modells und führen dadurch zu Fehlern bei Quellenangaben, besonders in folgenden Fällen:
- niedrigem Reasoning-Aufwand, bei dem das Modell weniger Budget hat, um Formatierungsfehler zu korrigieren.
- hochkomplexen Aufgaben, bei denen der Großteil des Reasoning-Budgets für die eigentliche Aufgabe aufgewendet wird und nicht für die Korrektur der Syntax von Quellenangaben.
Im Folgenden empfehlen wir ein Format für Quellenangaben, das den dem Modell vertrauten Mustern ähnelt. Du kannst es unverändert übernehmen oder an dein eigenes System anpassen.
Wenn du einen eigenen Prompt formulieren möchtest, lege Folgendes fest:
- die genaue Syntax der Markierungen.
- wo Quellenangaben stehen sollen.
- wann Quellen angegeben werden sollen und wann nicht.
- wie mehrere Belege angegeben werden sollen.
- welche Formate nicht zulässig sind.
- was zu tun ist, wenn Belege fehlen.
Quellenangaben parsen
Sobald das Modell Quellenangaben ausgibt, musst du sie aus dem Antworttext extrahieren. So kannst du die zugehörigen Quellen anhand ihrer IDs ermitteln, Links anzeigen oder die unverarbeiteten Markierungen entfernen, bevor du die Antwort anzeigst.
Den folgenden Hilfscode kannst du direkt in deine Anwendung kopieren. Er parst Quellenangaben mit einer oder mehreren Quellen sowie optionale Zeilenbereiche als Positionsangaben. Dabei bleiben die Zeichenpositionen im ursprünglichen Text erhalten.
Dieses Beispiel unterstützt nur Positionsangaben anhand von Zeilen. Passe es an, wenn dein System ein anderes Format für Positionsangaben verwendet.
Wenn deine Quellen-IDs anders aufgebaut sind, passe SOURCE_ID_RE an dein
System an.
Beispiele
Die folgenden Beispiele zeigen zwei gängige Muster für Quellenangaben:
- Über ein Tool abgerufener Kontext, bei dem dein Tool zitierfähiges Material und IDs zurückgibt.
- Direkt eingefügter Kontext, bei dem du zitierfähige Blöcke im Prompt bereitstellst.
Quellenangaben für über Tools abgerufenen Kontext formatieren
Verwende dieses Muster, wenn das Modell Kontext über ein Tool abruft und diesen in seiner Antwort als Quelle angibt.
Zitierfähige Einheiten definieren
Wähle die zitierfähigen Einheiten danach aus, wie präzise die Quellenangaben für deinen Anwendungsfall sein müssen. Die folgenden Beispiele zeigen einige mögliche Tool-Ausgaben.
Die folgenden Beispiele zeigen einige empfohlene Formate für Tool-Ausgaben. Das zugrunde liegende Tool kann je nach Anwendung variieren. Entscheidend ist, dass die Ausgabe wie in diesen Beispielen eine klare, stabile Struktur hat.
Prompt-Anweisungen formulieren
## Citations
Results are returned by "tool_1". Each message from `tool_1` is called a "source" and identified by its reference ID, which is the first occurrence of `turn\\d+file\\d+` (for example, `turn0file0` or `turn2file1`). In this example, the string `turn0file0` would be the source reference ID.
Citations are references to `tool_1` sources. Citations may be used to refer to either a single source or multiple sources.
A citation to a single source must be written as:
{CITATION_START}cite{CITATION_DELIMITER}turn\d+file\d+{CITATION_STOP}
If line-level citations are supported, a citation to a specific line range must be written as:
{CITATION_START}cite{CITATION_DELIMITER}turn\d+file\d+{CITATION_DELIMITER}L\d+-L\d+{CITATION_STOP}
Citations to multiple sources must be written by emitting multiple citation markers, one for each supporting source.
You must NOT write reference IDs like `turn0file0` verbatim in the response text without putting them between {CITATION_START}...{CITATION_STOP}.
- Place citations at the end of the supported sentence, or inline if the sentence is long and contains multiple supported clauses.
- Citations must be placed after punctuation.
- Cite only retrieved sources that directly support the cited text.
- Never invent source IDs, line ranges, or block locators that were not returned by the tool.
- If multiple retrieved sources materially support a proposition, cite all of them.
- If the retrieved sources disagree, cite the conflicting sources and describe the disagreement accurately.
Beispielausgabe:
The on-call handoff process is documented in the weekly support sync notes. \ue200cite\ue202turn0file0\ue202L8-L13\ue201
Quellenangaben für direkt eingefügten Kontext formatieren
Verwende dieses Muster, wenn du den Kontext vorab abrufst oder vorbereitest und direkt in den Prompt einfügst.
Zitierfähige Einheiten definieren
Bei direkt eingefügtem Kontext ist es üblich, Quellabschnitte mit expliziten Tags und stabilen Referenz-IDs zu umschließen.
<BLOCK id="block1">
The service agreement states that termination for convenience requires thirty (30) days’ written notice, unless superseded by a customer-specific addendum.
In practice, renewal terms auto-extend for successive one-year periods when no written non-renewal notice is received before the deadline.
Appendix B further clarifies that pricing exceptions must be approved in writing by both Finance and the account owner.
</BLOCK>
<BLOCK id="block2">
Syllabus
</BLOCK>
...
So ist die zitierfähige Einheit klar abgegrenzt, und das Modell kann leicht darauf verweisen.
Prompt-Anweisungen formulieren
## Citations
Supporting context is provided directly in the prompt as citable units. Each citable unit is identified by the value of its `id` attribute in the first occurrence of a tag such as `<BLOCK id="block5"> ... </BLOCK>`. In this example, `block5` would be the source reference ID.
Because this pattern does not invoke tools, there is no tool turn counter to increment. That means you do not need to use a `turn#` prefix for the citation marker. You can keep IDs in a `turn0block5` style if that matches the rest of your system, or use plain IDs like `block5` as shown here. The key requirement is that the citation marker matches the injected context ID exactly and consistently.
Citations are references to these provided citable units. Citations may be used to refer to either a single source or multiple sources.
A citation to a single source must be written as:
{CITATION_START}cite{CITATION_DELIMITER}<block_id>{CITATION_STOP}
For example:
{CITATION_START}cite{CITATION_DELIMITER}block5{CITATION_STOP}
Citations to multiple sources must be written by emitting multiple citation markers, one for each supporting block.
You must NOT write block IDs verbatim in the response text without putting them between {CITATION_START}...{CITATION_STOP}.
- Place citations at the end of the supported sentence, or inline if the sentence is long and contains multiple supported clauses.
- Citations must be placed after punctuation.
- Cite only blocks that appear in the provided context.
- Never invent new block IDs.
- Never cite outside knowledge or outside authorities.
- If multiple blocks materially support a proposition, cite all of them.
- If the provided blocks conflict, cite the conflicting blocks and describe the conflict accurately.
Beispielausgabe:
The Court held that the District Court lacked personal jurisdiction over the petitioner. \ue200cite\ue202block5\ue201
Hinweis: Von OpenAI gehostete Tools wie die Websuche liefern automatisch Quellenangaben direkt im Text. Wenn du stattdessen gehostete Tools verwenden möchtest, lies die Übersicht der Tools, den Leitfaden zur Websuche und den Leitfaden zur Dateisuche.