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)
Tabelle | Zweck |
---|---|
tblPrompts | Eingaben, Rollen, Kontexte |
tblAntworten | GPT-Ausgaben, Tokens |
tblFehler | Fehler, 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.
No responses yet