Einheit 6 / 11

Zugriffskontrolle, Prompt-Vorlage und Konversationsmanagement

Gewinne:

  • Richten Sie eine Zugriffskontrolle (ACL) ein, die den Abruf basierend auf der Benutzerberechtigung filtert
  • Schreiben einer soliden Eingabeaufforderungsvorlage, die den Kontext und die Benutzerfrage richtig platziert
  • Üben Sie Fragenunabhängigkeit und Verlaufsmanagement in mehrrundigen Gesprächen

Wir haben die Architektur etabliert; Machen wir es jetzt sicher, konsistent und gesprächig. In dieser Einheit gibt es drei wichtige Themen: (1) Zugriffskontrolle, die den Abruf basierend auf der Berechtigung des Benutzers filtert, (2) eine robuste Eingabeaufforderungsvorlage, die den Kontext und die Frage richtig platziert, (3) Fragenunabhängigkeit und Verwaltung des Gesprächsverlaufs im Mehrrunden-Chat. Ohne diese drei Faktoren wird ein Assistent entweder Daten verlieren, inkonsistente Antworten geben oder bei Folgefragen scheitern.

Zugriffskontrolle: Unbefugte Daten sollten niemals ankommen

Größtes Risiko für Unternehmen: Ein Dokument, das ein Benutzer nicht sehen sollte, dringt in die Antwort ein. Ein sehr häufiger Anfängerfehler besteht darin, „dem Modell bei der Eingabeaufforderung mitzuteilen, dass es ‚verborgene Dokumente anzeigen‘ soll“. Das ist nicht sicher. Das Modell vergisst möglicherweise eine Anweisung oder eine sofortige Injektion kann ihr entgehen. Der richtige Ort ist die Rückholphase: Das nicht autorisierte Stück sollte überhaupt nicht eingebracht werden.

Dies erreichen Sie, indem Sie die Autoritätsmetadaten (Abteilung, Rolle, Datenschutzebene), die Sie jedem Teil zugewiesen haben, während der Suche als Filter anwenden. Sie bestimmen sicher, wer der Benutzer ist (Identität und Rollen) auf der Anwendungsebene und fügen dem Anruf einen ACL-Filter (Access Control List) hinzu.

# Gefiltert nach Autoritätsabruf (konzeptionell)user = Authenticate(session) # authentifiziert von vertrauenswürdiger Quelle = user.roles + ["everyone"] # z.B. ["HR", "admin"]result = vektor_db.search( vektor=embed(question), top_k=20, filter={"permission_group": {"in": erlaubt}, # nur erlaubte Teile "privacy": {"lte": user.level}} # unterhalb der Ebene)

Achtung: Bitten Sie das Model niemals um Autorität und verlassen Sie sich nicht auf die Aufforderung. Identität und Autorität werden auf der vertrauenswürdigen Ebene der Anwendung bestimmt; Der Abruffilter ist obligatorisch, die Eingabeaufforderungsanweisung ist nur eine zusätzliche Ebene. „Ich habe es in der Eingabeaufforderung geschrieben“ ist keine Sicherheit.

Solide Eingabeaufforderungsvorlage

Die Eingabeaufforderungsvorlage ist das Grundgerüst, das den Kontext, die Benutzerfrage und die Verhaltensanweisungen aus dem Abruf zusammenführt. Bestandteile einer guten Vorlage: Rollen-/Aufgabenbeschreibung, Verhaltensregeln (Grundlage, „Ich weiß nicht“-Erlaubnis, Ressourcenanfrage, Ton), Kontext, Frage.

Sie sind HR-Assistent eines Unternehmens. Ihre Aufgabe ist es, Mitarbeiterfragen NUR basierend auf dem folgenden KONTEXT zu beantworten. Regeln: – Wenn die Antwort nicht eindeutig im Kontext steht, schreiben Sie „Ich konnte in der Dokumentation keine Informationen dazu finden, wenden Sie sich an das HR-Team.“ Nicht raten, nicht erfinden. – Wenn die Quellen im Kontext widersprüchlich sind, nehmen Sie die offizielle Richtlinie als Grundlage und geben Sie den Widerspruch an. – Fügen Sie die Quelle, auf die Sie sich verlassen, als [Quelle: Datei, Abschnitt] am Ende jeder Behauptung hinzu. – Antworten Sie in einer kurzen, klaren und professionellen Sprache. KONTEXT:{numbered_parts}FRAGE: {user_question}

Die Nummerierung der Kontextteile ([1], [2], ...) erleichtert die Zitierung des Modells. Schreiben Sie außerdem die Quelle zu Beginn jedes Stücks, damit das Modell sie korrekt zitieren kann.

Tipp: Halten Sie die Eingabeaufforderungsvorlage konstant und platzieren Sie Variablen (Kontext, Frage) immer an den gleichen Stellen. Eine feste Vorlage erhöht sowohl die Testbarkeit als auch die Kosten dank der sofortigen Zwischenspeicherung in einigen Systemen.

KONTEXT:[1] (Quelle: ik_el_kitabi.pdf, Abschnitt 5.2) Der bezahlte Jahresurlaub beträgt 14 Tage...[2] (Quelle: ik_el_kitabi.pdf, Abschnitt 5.4) Der Urlaub beträgt 20 Tage für Personen mit mehr als 5 Dienstjahren...

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwach (keine Erdung, keine Quelle, Identität gemischt):

Verwenden Sie diese Dokumente und beantworten Sie die Frage: {parts}Benutzer: {question}# Problem: Modell gerät aus dem Kontext, erfindet sich, zitiert keine Quellen, # verhält sich willkürlich im Widerspruch.

Stark (Rolle + Regeln + nummerierter Kontext + Quelle obligatorisch):

Sie sind... Verlassen Sie sich einfach auf CONTEXT. Andernfalls sagen Sie „Ich weiß nicht“. Wählen Sie im Konfliktfall die offizielle Richtlinie. Fügen Sie [Quelle: ...] zu jeder Behauptung hinzu.KONTEXT: [1]... [2]... FRAGE: {Frage}# Ergebnis: Antwort, die dem Kontext entspricht, Quellen enthält und den Widerspruch korrekt verwaltet.

Gesprächsmanagement für mehrere Touren

Ein echter Benutzer stellt keine einzige Frage und lässt sie dann stehen; spricht. „Wie viele Tage Jahresurlaub habe ich?“ → „Was ist mit dem 6-jährigen Mitarbeiter?“ → „Wie bewerbe ich mich?“ Allein die zweite und dritte Frage sind bedeutungslos; hängt vom vorherigen Kontext ab.

Sie müssen zwei Probleme lösen. Die erste dient dem Wiederauffinden: Machen Sie die Folgefrage unabhängig (Umschreiben der Frage). „Was ist mit dem 6-jährigen Mitarbeiter?“ → „Auf wie viele Tage Jahresurlaub hat ein Arbeitnehmer mit 6 Jahren Anspruch?“ Sie suchen mit dieser unabhängigen Frage. Der zweite ist für die Produktion: Sie geben dem Modell auch den Gesprächsverlauf, damit dieser konsistent fortgesetzt wird.

# Zweistufig: unabhängigisieren → suchen → mit Verlauf generieren (konzeptionell) independent = model.uret( „Verwenden Sie den Gesprächsverlauf, um die Frage selbst verständlich zu machen:\nVerlauf: {history}\nFrage: {follow_question}“) context = retrieval(independent) # Suche mit unabhängiger FrageAntwort = model.uret(prompt(context, History, follow_question))

Wenn der Verlauf zunimmt (langes Gespräch), wird das Senden aller Daten auf einmal teuer und füllt das Kontextfenster. Lösung: Fassen Sie die vorherigen Runden zusammen oder behalten Sie die letzten N Runden bei und reduzieren Sie die vorherigen auf die Zusammenfassung. Dadurch bleiben die Kosten unter Kontrolle und die Konsistenz bleibt erhalten.

Status

Problem

Lösung

Folgefrage hat keinen Kontext

Retrieval-Suchen sind bedeutungslos

Machen Sie die Frage unabhängig (umschreiben)

Langes Gespräch

Kosten und Fensterschwellen

Zusammenfassung vergangener Touren

Der Benutzer hat das Thema geändert

Alter Kontext wird infiziert

Reduzieren Sie den bisherigen Einfluss auf ein neues Thema

Die Autorität kann je nach Tour variieren

Gefahr einer Leckage

Wenden Sie den ACL-Filter jede Runde erneut an

Drei Mini-Hüllen

Fall 1 – „Sicherheits“-Trugschluss mit Eingabeaufforderung. Ein Unternehmen legte einem Assistenten vertrauliche Gehaltsunterlagen vor, nach denen jeder fragen konnte, schrieb aber auf die Aufforderung hin nur „Geben Sie keine Gehaltsinformationen an“. Das Modell ließ die Gehaltsspanne durchsickern, als ein Benutzer die Frage auf Umwegen stellte. Als der ACL-Filter zum Abruf hinzugefügt wurde (Gehaltsteile nur zur HR-Rolle), wurde das Leck vollständig geschlossen; denn das Teil wird nie mehr gebracht.

Fall 2 – Kontextloses Stalking. In einem Support-Assistenten fragt der Benutzer: „Rückgabefrist?“ → „Was ist mit dem kaputten Produkt?“ Das System brachte irrelevante Teile für das „kaputte Produkt“. Durch die Hinzufügung der Fragenunabhängigkeit („Wie lange ist die Rückgabefrist für ein defektes Produkt?“) stieg die richtige Antwortquote von 44 % auf 90 %.

Fall 3 – Geschwollene Vergangenheit. In 30 Chatrunden mit einem Assistenten wurde bei jedem Anruf der gesamte Verlauf gesendet; Die Kosten stiegen dreimal pro Runde und die Reaktionen wurden langsamer. Als wir zu einer Struktur wechselten, die die letzten 6 Runden beibehielt und die vorherigen zusammenfasste, sanken die Token-Kosten um 62 % und die Konsistenz blieb erhalten.

Häufige Fehler

  • Autorität der Eingabeaufforderung überlassen: Modell vergisst/umgeht; Der ACL-Filter ist beim Abruf obligatorisch.
  • Der Kontext wird nicht aufgeführt: Das Modell kann nicht die richtige Quelle angeben.
  • Keine Verselbständigung der Folgefrage: Retrieval-Suchen sind sinnlos.
  • Blindes Senden des gesamten Verlaufs: Explodierende Kosten und Verzögerungen; zusammenfassen.
  • Nichtschreiben der Widerspruchsregel: Das Model stellt die unzuverlässige Quelle möglicherweise als offiziell dar.

Zusammenfassend

  • Die Zugriffskontrolle wird während der Abrufphase mit einem Metadatenfilter implementiert; Es sollten niemals nicht autorisierte Teile mitgebracht werden.
  • Identität und Autorität werden auf der Ebene der vertrauenswürdigen Anwendung bestimmt; Die sofortige Anweisung ist nur eine zusätzliche Verteidigungsebene.
  • Eine robuste Eingabeaufforderungsvorlage enthält Rolle, Verhaltensregeln (Begründung, Erlaubnis „Weiß nicht“, Quelle, Konflikt), nummerierten Kontext und Frage.
  • Bei mehrrundigen Gesprächen werden Folgefragen entkoppelt und das Modell liefert konsistente Antworten mit dem Verlauf.
  • Durch die Zusammenfassung der langen Historie bleibt das Kosten- und Kontextfenster unter Kontrolle; Die ACL wird jede Runde erneut angewendet.

Anwendungsaufgabe

(1) Definieren Sie mindestens drei Berechtigungsgruppen für Ihren eigenen Assistenten (z. B. jeder, Abteilung, Manager) und schreiben Sie in eine Tabelle, welcher Dokumenttyp für welche Gruppe geöffnet ist. (2) Passen Sie die obige Eingabeaufforderungsvorlage entsprechend Ihrer eigenen Rolle und Ihrem Ton an und schreiben Sie sie. Sorgen Sie dafür, dass der Kontext nummeriert und mit Quellenangaben versehen wird. (3) Schreiben Sie ein realistisches Gesprächsszenario mit drei Runden (Frage → Nachbereitung → Nachbereitung) und generieren Sie manuell unabhängige Versionen jeder Folgefrage. (4) Erklären Sie in einem Satz, warum der ACL-Filter in diesem Szenario jede Runde erneut angewendet werden sollte.

Checkliste

  • [ ] Ich implemetiere die Zugriffskontrolle mit einem Abruffilter, ich verlasse mich einfach nicht auf die Eingabeaufforderung.
  • [ ] Ich füge meiner Eingabeaufforderungsvorlage „Erdung, ich kenne Berechtigung, Quelle und Konfliktregel nicht“ hinzu.
  • [ ] Ich gebe die Kontextteile nummeriert und referenziert.
  • [ ] Folgefragen mache ich vor dem Abruf selbstständig.
  • [ ] Ich verwalte die Kosten und das Zeitfenster, indem ich den langen Gesprächsverlauf zusammenfasse.