Warum Azure OpenAI?

Wenn Du GPT brauchst, aber nicht über OpenAI.com gehen willst.
Weil Du Azure sowieso nutzt.
Oder weil Datenschutz bei Dir nicht verhandelbar ist.

Azure bietet Dir GPT über einen eigenen Endpoint.
Access spricht das per REST an – ganz ohne KI-Overhead.

Was brauchst Du?

  • Azure OpenAI Ressource
  • Modell (z. B. gpt-4, gpt-35-turbo)
  • Bereitgestellte Deployment-ID
  • Zugriffsschlüssel (API Key)
  • Region und Endpunkt

Beispiel-URL

https://DEINNAME.openai.azure.com/openai/deployments/DEPLOYMENTID/chat/completions?api-version=2024-02-15-preview

Tabellenstruktur (Beispiel)

TabelleZweck
tblPromptsEingaben, Rollen, Kontexte
tblAntwortenGPT-Ausgaben, Tokens
tblFehlerFehler, Statuscodes

Grundlegender Aufruf in VBA

Function AzureGPT(prompt As String) As String
    Dim http As Object
    Dim url As String
    Dim key As String
    Dim deploymentID As String
    Dim apiVersion As String
    Dim region As String
    Dim jsonRequest As String
    Dim jsonResponse As String

    region = "westeurope"
    deploymentID = "gpt-4-2024"
    apiVersion = "2024-02-15-preview"
    key = "DEIN_API_KEY"

    url = "https://" & region & ".api.cognitive.microsoft.com/openai/deployments/" & _
          deploymentID & "/chat/completions?api-version=" & apiVersion

    jsonRequest = "{""messages"":[{""role"":""user"",""content"":""" & Replace(prompt, """", "\""") & """}], ""temperature"":0.7}"

    Set http = CreateObject("MSXML2.ServerXMLHTTP")
    http.Open "POST", url, False
    http.setRequestHeader "Content-Type", "application/json"
    http.setRequestHeader "api-key", key
    http.Send jsonRequest

    jsonResponse = http.responseText
    AzureGPT = ExtrahiereGPTAntwort(jsonResponse)
End Function

Antwort extrahieren (Minimallösung)

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

Button im Formular: Prompt starten

Private Sub btnStart_Click()
    Dim frage As String
    Dim antwort As String

    frage = Me.txtPrompt
    antwort = AzureGPT(frage)

    Me.txtAntwort = antwort
End Sub

Komplexere Prompts (mit Rollen)

jsonRequest = "{" & _
"""messages"":[" & _
"{""role"":""system"",""content"":""Du bist ein norddeutscher Berater.""}," & _
"{""role"":""user"",""content"":""" & Replace(prompt, """", "\""") & """}]," & _
"""temperature"":0.5" & _
"}"

Token zählen lassen

Azure gibt Dir das mit – aber wenn Du willst, kannst Du’s schätzen:

Function SchaetzeTokens(text As String) As Long
    SchaetzeTokens = Len(text) / 4 ' grobe Faustregel
End Function

Was geht gut

  • Fragen stellen
  • Texte analysieren
  • Formulieren lassen
  • Code umschreiben oder erklären
  • Daten klassifizieren, zusammenfassen

Was Du beachten musst

  • Keine Anhänge oder Dateien – nur Text
  • Inputgröße (maxTokens) begrenzen, sonst Timeout
  • Temperatur niedrig halten für klare Antworten
  • Fehlerlog führen, z. B. bei HTTP 429 (Rate Limit)

Fehlerlogging (Beispiel)

Sub LogFehler(statusCode As Long, prompt As String)
    CurrentDb.Execute "INSERT INTO tblFehler (Zeitpunkt, Code, Prompt) VALUES (Now()," & statusCode & ", '" & Replace(prompt, "'", "''") & "')"
End Sub

„GPT ist kein Magier. Aber wenn Access die Bühne baut, kann was Gutes dabei rauskommen.“

Wenn Du GPT in Access sauber integrieren willst – ich helf Dir.
Ohne Hype. Ohne Schnickschnack. Nur Funktion.

Tags:

No responses yet

Schreibe einen Kommentar

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