Access als Prompt-Steuerzentrale: Wie man standardisierte Prompts dynamisch erzeugt und verwaltet

Warum Access?

Weil Access da ist. Weil Access schnell ist.
Und weil Du damit Strukturen und Texte so zusammenbauen kannst, wie Du’s brauchst.
Gerade wenn’s um Prompts geht, brauchst Du System. Kein wildes Copy-Paste.

Ich zeig Dir, wie Du Access als Prompt-Verwaltung nutzt – inklusive dynamischer Variablen, KI-Zugriff und historischer Nachverfolgbarkeit.


Szenario: Du willst


  • wiederverwendbare Prompts bauen
  • Platzhalter wie [KUNDENNAME] automatisch befĂŒllen
  • aus Access heraus an ChatGPT (oder Azure OpenAI) senden
  • die Antwort speichern und analysieren

Tabellenstruktur

TabelleBeschreibung
tblPromptsPrompt-Vorlagen mit Titel und Text
tblVariablenErsetzbare Platzhalter
tblKontexteKonkrete Kontexteingaben (z. B. Kunde)
tblLogsGesendete Prompts und Antworten

Prompt-Vorlage (Beispiel)

Schreibe eine freundliche E-Mail an [KUNDENNAME], in der wir uns fĂŒr [LEISTUNG] bedanken und auf [NÄCHSTER_SCHRITT] hinweisen.

Platzhalter dynamisch ersetzen (VBA)

Function ErsetzePlatzhalter(promptText As String, contextID As Long) As String
    Dim rs As DAO.Recordset
    Dim key As String, value As String

    Set rs = CurrentDb.OpenRecordset("SELECT Platzhalter, Wert FROM qryKontextVariablen WHERE KontextID=" & contextID)
    
    Do While Not rs.EOF
        key = "[" & rs!Platzhalter & "]"
        value = rs!Wert
        promptText = Replace(promptText, key, value)
        rs.MoveNext
    Loop
    rs.Close
    Set rs = Nothing

    ErsetzePlatzhalter = promptText
End Function

Die Query qryKontextVariablen verbindet tblVariablen mit tblKontexte.


Prompt an ChatGPT senden

Function SendePrompt(prompt As String) As String
    Dim http As Object
    Dim jsonRequest As String
    Dim jsonResponse As String

    Set http = CreateObject("MSXML2.XMLHTTP")

    jsonRequest = "{""model"":""gpt-4"",""messages"":[{""role"":""user"",""content"":""" & Replace(prompt, """", "\""") & """}]}"

    With http
        .Open "POST", "https://api.openai.com/v1/chat/completions", False
        .SetRequestHeader "Content-Type", "application/json"
        .SetRequestHeader "Authorization", "Bearer DEIN_API_KEY"
        .Send jsonRequest
        jsonResponse = .ResponseText
    End With

    SendePrompt = jsonResponse
End Function

Antwort extrahieren (VBA)

Function ExtrahiereAntwort(json As String) As String
    Dim sc As Object
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    sc.AddCode "function parse(j){return JSON.parse(j).choices[0].message.content;}"
    ExtrahiereAntwort = sc.Run("parse", json)
End Function

Beispiel: Komplettdurchlauf

Sub StartePromptSitzung(promptID As Long, kontextID As Long)
    Dim rs As DAO.Recordset
    Dim rawPrompt As String
    Dim finalPrompt As String
    Dim antwort As String
    Dim json As String

    Set rs = CurrentDb.OpenRecordset("SELECT Text FROM tblPrompts WHERE ID=" & promptID)
    If rs.EOF Then Exit Sub

    rawPrompt = rs!Text
    finalPrompt = ErsetzePlatzhalter(rawPrompt, kontextID)
    json = SendePrompt(finalPrompt)
    antwort = ExtrahiereAntwort(json)

    CurrentDb.Execute "INSERT INTO tblLogs (PromptID, KontextID, Anfrage, Antwort) " & _
                      "VALUES (" & promptID & "," & kontextID & "," & _
                      "'" & Replace(finalPrompt, "'", "''") & "'," & _
                      "'" & Replace(antwort, "'", "''") & "')"

    MsgBox "Antwort erhalten.", vbInformation
End Sub

Vorteile fĂŒr Dich

  • Standardisierte, geprĂŒfte Prompts
  • Zentrale Verwaltung, kein Wildwuchs
  • KontextabhĂ€ngige Variablen
  • Versionskontrolle ĂŒber tblLogs
  • Einfache Erweiterbarkeit (mehrsprachig, Templates, Benutzerrechte)

Was Du beachten musst

  • Keine sensiblen Daten direkt als Prompt-Text speichern
  • Prompt-Speicher trennen von KI-Antworten
  • SorgfĂ€ltige Pflege der Platzhalter-Texte
  • Setze Quoten- und Fehler-Handling im HTTP-Aufruf (nicht gezeigt)

Bonus: Prompt-Vorschau im Formular

Du willst wissen, was rauskommt, bevor Du sendest?

Binde in Dein Access-Formular ein ungebundenes Textfeld ein:

Private Sub btnVorschau_Click()
    Me.txtVorschau = ErsetzePlatzhalter(Me.txtPromptVorlage, Me.cboKontext)
End Sub

Das macht Eindruck. Auch intern.


Wenn Du Hilfe brauchst beim Aufbau: Ich bin da. Norddeutsch, klar und direkt.

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert