112 lines
5.0 KiB
VB.net
112 lines
5.0 KiB
VB.net
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 |