RAG & menschliches Feedback

RAG (menschliches Feedback) ermöglicht es Ihnen, Eagle Doc aus korrigierten Extraktionen zu trainieren, damit künftige Extraktionen besser werden. Als Business wird jedes gelernte Beispiel über denselben Kunden-Header — x-sub-business-ref oder x-sub-business-id —, den Sie bereits bei Extraktionsanfragen senden, einem Ihrer Kunden zugeordnet.

Gleicher Header, Lernen pro Kunde

Fügen Sie einer Lernanfrage den Kunden-Header hinzu, und das korrigierte Beispiel wird diesem Kunden zugeordnet. Lassen Sie ihn weg, wird das Beispiel business-weit. Ansonsten ändert sich an der Human-Feedback-API nichts, wenn Sie einen Business-API-Schlüssel verwenden.

So funktioniert die Zuordnung pro Kunde

Die Zuordnung entscheidet, welche gelernten Beispiele die Extraktionen eines bestimmten Kunden beeinflussen. Die Regeln sind deterministisch:

Zuordnungsregeln
  • Die eigenen Beispiele eines Kunden werden für die Extraktionen dieses Kunden zuerst gewichtet.
  • Business-weite Beispiele — ohne Kunden-Header übermittelt — gelten für jeden Kunden.
  • Beispiele, die anderen Kunden gehören, sind ausgeschlossen — die Korrekturen eines Kunden fließen niemals in die Ergebnisse eines anderen ein.
  • Die Zuordnung beginnt zum Zeitpunkt der Übermittlung und ist nicht rückwirkend — frühere Beispiele behalten den Kunden, unter dem sie übermittelt wurden.

Ein korrigiertes Beispiel übermitteln

Senden Sie die korrigierte Extraktion als Multipart-Form-Data an den Lern-Endpunkt — das Ausgangsdokument (file), die original-Extraktions-JSON und Ihre corrected-JSON. Fügen Sie den Kunden-Header hinzu, um das Beispiel diesem Kunden zuzuordnen.

Parameters
Name Description
api-key (header) Your business API key, prefixed APIB-. Usage is billed to the business subscription.
x-sub-business-ref (header, optional) Your own client number. Attributes this example to that client (zero-touch: the client is created on first use). Omit to make the example business-wide.
x-sub-business-id (header, optional) Alternative to x-sub-business-ref: the Eagle Doc client id. Use one or the other, not both.
file (form-data) The source document (PNG, JPEG or PDF). For multi-page documents, attach a PDF or all page images.
original (form-data) The original extraction JSON, exactly as Eagle Doc returned it. Compared against corrected so the wrong fields are found automatically.
corrected (form-data) The same JSON with only the wrong field values fixed. Keep everything else intact.
Responses
Code Description
200 OK — the corrected example was learned and attributed to the resolved client.
{
    "message": "The learning has been updated successfully."
}
403 BadCredentialException — the API key is missing or invalid. The error body follows the standard shape:
{
    "httpCode": 403,
    "httpCodeName": "FORBIDDEN",
    "messageCode": 3009,
    "message": "API key invalid",
    "messageDetails": [],
    "data": null
}
404 FileNotFoundException — a required file was not found.
500 InternalServerErrorException — something went wrong. Reason is not known.
curl --location 'https://de.eagle-doc.com/api/docu/learning' \
  --header 'api-key: APIB-your-business-key' \
  --header 'x-sub-business-ref: A-1023' \
  --form 'file=@"invoice.pdf"' \
  --form 'original=@"original.json"' \
  --form 'corrected=@"corrected.json"'
import requests

resp = requests.post(
    "https://de.eagle-doc.com/api/docu/learning",
    headers={
        "api-key": "APIB-your-business-key",
        "x-sub-business-ref": "A-1023",   # attribute this example to a client
    },
    files={
        "file": open("invoice.pdf", "rb"),
        "original": open("original.json", "rb"),
        "corrected": open("corrected.json", "rb"),
    },
)
print(resp.json())
import fs from "node:fs";

const form = new FormData();
form.append("file", new Blob([fs.readFileSync("invoice.pdf")]), "invoice.pdf");
form.append("original", new Blob([fs.readFileSync("original.json")]), "original.json");
form.append("corrected", new Blob([fs.readFileSync("corrected.json")]), "corrected.json");

const resp = await fetch("https://de.eagle-doc.com/api/docu/learning", {
  method: "POST",
  headers: {
    "api-key": "APIB-your-business-key",
    "x-sub-business-ref": "A-1023", // attribute this example to a client
  },
  body: form,
});
console.log(await resp.json());

Die Regeln für Korrekturen auf Feldebene (Kontext, Notizen, Fixes-Arrays, Produktlisten) sind identisch mit dem Ablauf bei persönlichen Schlüsseln. Die vollständige Feldreferenz und ausgearbeitete Beispiele finden Sie in der vollständigen Human-Feedback-Referenz.

Lernen aus Anweisungen

Statt eines vollständig korrigierten Dokuments können Sie ein einzelnes Feld mit einer Regel in natürlicher Sprache über den Endpunkt für Lernanweisungen trainieren. Er akzeptiert denselben Kunden-Header, sodass die Anweisung nur für diesen Kunden gelernt wird.

Parameters
Name Description
api-key (header) Your business API key, prefixed APIB-.
x-sub-business-ref (header, optional) Your own client number. Learns the instruction for that client only. Omit to make it business-wide.
instructions (query parameter) The extraction rule, e.g. "from text 'paid by Feb 02, 2025', get InvoiceDueDate: '2025-02-02'". Concatenate multiple rules with semicolons (;).
corrected (form-data) The corrected extraction JSON the instruction applies to.
overwrite (query parameter) Boolean — whether to overwrite prior learnings for this document.
Responses
Code Description
200 OK — the instruction was learned for the resolved client.
{
    "message": "The learning has been updated successfully."
}
403 BadCredentialException — the API key is missing or invalid.
500 InternalServerErrorException — something went wrong. Reason is not known.
curl --location 'https://de.eagle-doc.com/api/docu/learning/instructions?instructions=from%20text%20%27paid%20by%20Feb%2002%2C%202025%27%2C%20get%20InvoiceDueDate%3A%20%272025-02-02%27&overwrite=false' \
  --header 'api-key: APIB-your-business-key' \
  --header 'x-sub-business-ref: A-1023' \
  --form 'corrected=@"corrected.json"'
import requests

resp = requests.post(
    "https://de.eagle-doc.com/api/docu/learning/instructions",
    params={
        "instructions": "from text 'paid by Feb 02, 2025', get InvoiceDueDate: '2025-02-02'",
        "overwrite": "false",
    },
    headers={
        "api-key": "APIB-your-business-key",
        "x-sub-business-ref": "A-1023",   # learn for this client only
    },
    files={"corrected": open("corrected.json", "rb")},
)
print(resp.json())
import fs from "node:fs";

const url = new URL("https://de.eagle-doc.com/api/docu/learning/instructions");
url.searchParams.set("instructions", "from text 'paid by Feb 02, 2025', get InvoiceDueDate: '2025-02-02'");
url.searchParams.set("overwrite", "false");

const form = new FormData();
form.append("corrected", new Blob([fs.readFileSync("corrected.json")]), "corrected.json");

const resp = await fetch(url, {
  method: "POST",
  headers: {
    "api-key": "APIB-your-business-key",
    "x-sub-business-ref": "A-1023", // learn for this client only
  },
  body: form,
});
console.log(await resp.json());
Korrekturen summieren sich — pro Kunde

Halten Sie die Korrekturen jedes Kunden am Laufen, und die Extraktionen dieses Kunden werden immer besser — unabhängig von Ihren anderen Kunden. Das Feedback eines Kunden wirkt sich niemals auf die Ergebnisse eines anderen aus.

Zur Syntax der Anweisungen, zu Beispielen und zur vollständigen Parameterliste siehe die vollständigen Human-Feedback-Referenz.

Support

Wir helfen Ihnen gerne

Sie bauen Ihre Integration für mehrere Kunden auf und etwas ist unklar? Wir helfen Ihnen gerne, damit Ihr Projekt gelingt.

Erreichen Sie uns unter support@eagle-doc.com