Imports System.Net.Http Imports System.Text Imports System.Threading.Tasks Imports Newtonsoft.Json.Linq Public Class cOpenAI Shared apiKey As String = "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" Shared apiUrl As String = "https://api.openai.com/v1/chat/completions" Shared Sub doFirstAI() 'Dim frage As String = "Wie viele Tage braucht ein Versandschein von Istanbul nach München? Gib nur die Zahl zurück." Dim frage As String = "Schreibe ein HAIKO über AI." ' API-Aufruf und Ausgabe der Antwort Dim antwort As String = AskOpenAI(frage) Console.WriteLine("Antwort von OpenAI: " & antwort) ' Console.WriteLine("Drücke eine beliebige Taste zum Beenden...") ' Console.ReadKey() End Sub Shared Function askAI_TruckPlate(text) As String 'Dim frage As String = "Wie viele Tage braucht ein Versandschein von Istanbul nach München? Gib nur die Zahl zurück." 'ASKAI_TruckPlate Dim Prompt = "Extrahiere das oder die LKW-Kennzeichen aus folgendem Text. Es handelt sich vorwiegend um Kennzeichen aus der Türkei, Osteuropa und dem Balkan. Die Kennzeichen sind entweder zusammengeschrieben oder enthalten Leerzeichen. Regeln: Falls kein Kennzeichen im Text vorhanden ist, gib eine leere Zeichenkette zurück. Falls genau ein Kennzeichen erkannt wird, gib es ohne Leerzeichen zurück. Falls genau zwei Kennzeichen erkannt werden, gib sie ohne Leerzeichen durch einen / getrennt zurück. Falls mehr als zwei Kennzeichen erkannt werden, gib eine leere Zeichenkette zurück. Beispiel: Text: 'Der LKW mit dem Kennzeichen BG 1234 AB wurde kontrolliert, ebenso TR AB123CD' Erwartete Ausgabe 'BG1234AB/TRAB123CD' Text: 'Keine Kennzeichen gefunden' Erwartete Ausgabe '' Text: 'Die Fahrzeuge RO 123 ABC, TR 45ABC67, PL 123456, UA AB 1234' Erwartete Ausgabe '' Text: 'Fahrzeug mit Kennzeichen SRB AB123 und eines mit MD 45 ABC' Erwartete Ausgabe 'SRBAB123/MD45ABC' Hier ist der zu analysierende Text '{TEXT}' gib nur das extrahierte Kennzeichen bzw. die leere Zeichenkette zurück, ohne weitere Kommentare oder Erklärungen." Console.WriteLine("Go..") Console.WriteLine(Prompt.Replace("{TEXT}", text)) ' API-Aufruf und Ausgabe der Antwort Return AskOpenAI(Prompt.Replace("{TEXT}", text).Replace("""", "\""").Replace(vbCrLf, " ").Replace(vbLf, " ").Replace(vbCr, " ")) 'Console.WriteLine("Antwort von OpenAI: " & antwort) ' Console.WriteLine("Drücke eine beliebige Taste zum Beenden...") ' Console.ReadKey() End Function ' Funktion zur Kommunikation mit OpenAI API (synchrones Verhalten) Shared Function AskOpenAI(question As String) As String Try Using client As New HttpClient() client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}") ' JSON-Body für die API-Anfrage mit GPT-4o Dim requestBody As String = " { ""model"": ""gpt-4o-mini"", ""messages"": [ {""role"": ""user"", ""content"": """ & question & """} ], ""max_tokens"": 10, ""temperature"": 0 }" Dim content As New StringContent(requestBody, Encoding.UTF8, "application/json") ' POST-Anfrage senden und Antwort synchron verarbeiten Dim response As HttpResponseMessage = client.PostAsync(apiUrl, content).Result If response.IsSuccessStatusCode Then Dim responseBody As String = response.Content.ReadAsStringAsync().Result ' JSON-Antwort parsen, um die OpenAI-Antwort zu extrahieren Dim jsonResponse As JObject = JObject.Parse(responseBody) Dim answer As String = jsonResponse("choices")(0)("message")("content").ToString().Trim() Return answer ' Antwort zurückgeben Else Console.WriteLine($"Fehler: {response.StatusCode} - {response.Content.ReadAsStringAsync().Result}") ' Fehlerausgabe bei API-Problemen Return $"Fehler: {response.StatusCode} - {response.Content.ReadAsStringAsync().Result}" End If End Using Catch ex As Exception ' Allgemeine Fehlerbehandlung Console.WriteLine($"Fehler: {ex.Message}") Return $"Fehler: {ex.Message}" End Try End Function End Class