Files
SDL/VERAG_PROG_ALLGEMEIN/Schnittstellen/OPEN_AI/cOpenAI.vb
2025-02-04 13:22:07 +01:00

70 lines
2.6 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
' 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
' Fehlerausgabe bei API-Problemen
Return $"Fehler: {response.StatusCode} - {response.Content.ReadAsStringAsync().Result}"
End If
End Using
Catch ex As Exception
' Allgemeine Fehlerbehandlung
Return $"Fehler: {ex.Message}"
End Try
End Function
End Class