spedbuch
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
Imports System.Net.Http
|
||||
Imports System.Net.Http.Headers
|
||||
Imports System.Text
|
||||
Imports System.Text.Json
|
||||
Imports System.Threading.Tasks
|
||||
Imports System.Windows.Forms
|
||||
Imports Newtonsoft.Json
|
||||
Imports Newtonsoft.Json.Linq
|
||||
|
||||
Public Class cOpenAI
|
||||
@@ -10,6 +13,8 @@ Public Class cOpenAI
|
||||
Shared apiKey As String = "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"
|
||||
Shared apiUrl As String = "https://api.openai.com/v1/responses"
|
||||
|
||||
Shared apiKey_VERAG_Herbert As String = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImRmNjg2ZmY2LTJiMjYtNDIxYS1iMTQzLThmNzFmY2I3YjA1ZiIsImV4cCI6MTc4NTkxNzUxMCwianRpIjoiOTViM2MxZGQtMjcxMC00YWY0LTgxMGUtYzVjYWFhODdmNTM2IiwiaWF0IjoxNzgzNDk4MzEwfQ.OJ_GDpZs3Zxv7VvEpKHPjNn8jkJStkm_ruFtmqk_SiE"
|
||||
|
||||
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."
|
||||
@@ -67,7 +72,7 @@ Public Class cOpenAI
|
||||
|
||||
' Funktion zur Kommunikation mit OpenAI API (synchrones Verhalten)
|
||||
Public Shared Function AskOpenAI(question As String,
|
||||
Optional maxOutputTokens As Integer = 1000) As String
|
||||
Optional maxOutputTokens As Integer = 1000, Optional model As String = "gpt-4.1-mini") As String
|
||||
|
||||
Try
|
||||
Using client As New HttpClient()
|
||||
@@ -76,7 +81,7 @@ Public Class cOpenAI
|
||||
New AuthenticationHeaderValue("Bearer", apiKey.Trim())
|
||||
|
||||
Dim requestJson As New JObject From {
|
||||
{"model", "gpt-4.1-mini"},
|
||||
{"model", model},
|
||||
{"input", question},
|
||||
{"max_output_tokens", maxOutputTokens}
|
||||
}
|
||||
@@ -143,6 +148,254 @@ Public Class cOpenAI
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
' Funktion zur Kommunikation mit OpenAI API (synchrones Verhalten)
|
||||
Public Shared Function AskVERAG_HerbertAI(question As String,
|
||||
Optional maxOutputTokens As Integer = 1000) As String
|
||||
|
||||
Using client As New HttpClient()
|
||||
|
||||
'client.BaseAddress = New Uri("http://192.168.0.215:11434/")
|
||||
client.BaseAddress = New Uri("http://192.168.0.215:8000/v1/")
|
||||
|
||||
client.DefaultRequestHeaders.Authorization =
|
||||
New AuthenticationHeaderValue("Bearer", apiKey_VERAG_Herbert)
|
||||
'Qwen/Qwen2.5-14B-Instruct
|
||||
Dim payload = New With {
|
||||
.model = "Herbert",
|
||||
.messages = New Object() {
|
||||
New With {.role = "system", .content = "Du bist ein hilfreicher Assistent."},
|
||||
New With {.role = "user", .content = question}
|
||||
},
|
||||
.temperature = 0.2,
|
||||
.max_tokens = maxOutputTokens,
|
||||
.stream = False
|
||||
}
|
||||
|
||||
Dim json As String = JsonConvert.SerializeObject(payload)
|
||||
Dim content As New StringContent(json, Encoding.UTF8, "application/json")
|
||||
|
||||
Dim response As HttpResponseMessage =
|
||||
client.PostAsync("http://192.168.0.215:8000/v1/chat/completions", content).
|
||||
GetAwaiter().
|
||||
GetResult()
|
||||
|
||||
Dim resultJson As String =
|
||||
response.Content.ReadAsStringAsync().GetAwaiter().GetResult()
|
||||
|
||||
If Not response.IsSuccessStatusCode Then
|
||||
Throw New Exception("OpenWebUI Fehler: " & response.StatusCode.ToString() & vbCrLf & resultJson)
|
||||
End If
|
||||
|
||||
Dim obj As JObject = JObject.Parse(resultJson)
|
||||
|
||||
Return obj("choices")(0)("message")("content").ToString()
|
||||
|
||||
End Using
|
||||
|
||||
End Function
|
||||
|
||||
Shared Function askAI_Kontakdaten_WebResearch(eingabe As String) As String
|
||||
|
||||
Dim prompt As String =
|
||||
"Du bist ein B2B Contact Finder.
|
||||
|
||||
Such im Web nach den Kontaktdaten, vorwiegend Telefon + Mail
|
||||
Accurancy ist die Wahrscheinlcihkeit, dass es sich um das gescuht UNternehmen handelt;
|
||||
|
||||
Ausgabeformat:
|
||||
|
||||
Treffer 1
|
||||
|
||||
Quelle:
|
||||
Unternehmen:
|
||||
Website:
|
||||
Telefon:
|
||||
E-Mail:
|
||||
Adresse:
|
||||
Accurancy:
|
||||
|
||||
Falls mehrere plausible Unternehmen gefunden werden, gib maximal 3 Treffer aus.
|
||||
Jeder Treffer muss vollständig von einer Quelle sein sein.
|
||||
|
||||
|
||||
Kein eindeutiger Treffer möglich.
|
||||
Grund: ...
|
||||
|
||||
EINGABE: [[" & eingabe & "]]
|
||||
|
||||
"
|
||||
|
||||
Console.WriteLine(prompt)
|
||||
Return AskOpenAI(prompt, 10000, "gpt-5.5")
|
||||
|
||||
End Function
|
||||
Shared Function askAI_HERBERT_Allg(prompt As String) As String
|
||||
|
||||
|
||||
|
||||
Console.WriteLine(prompt)
|
||||
|
||||
Dim antwort As String = AskVERAG_HerbertAI(prompt, 2500)
|
||||
|
||||
|
||||
|
||||
Console.WriteLine(antwort)
|
||||
|
||||
Return antwort
|
||||
|
||||
End Function
|
||||
Shared Function askAI_HERBERT_Kontakdaten_WebResearch(eingabe As String) As String
|
||||
|
||||
Dim prompt As String =
|
||||
"Du bist ein B2B Contact Finder.
|
||||
|
||||
HARTE REGEL:
|
||||
Jeder Treffer darf ausschließlich Daten aus einer einzigen Quelle enthalten.
|
||||
Standardquelle ist die offizielle Unternehmenswebsite.
|
||||
Das Mischen von Website, Telefonnummer, E-Mail-Adresse oder Adresse aus unterschiedlichen Quellen ist verboten.
|
||||
|
||||
Ziel:
|
||||
Finde möglichst schnell die Telefonnummer und E-Mail-Adresse eines Unternehmens.
|
||||
|
||||
Eingabe:
|
||||
Die Eingabe ist unstrukturiert und kann Firmenname, Ort, PLZ, Land, Website, Telefonnummer, E-Mail oder Freitext enthalten.
|
||||
|
||||
Arbeitsweise:
|
||||
|
||||
Identifiziere das wahrscheinlich richtige Unternehmen.
|
||||
Ermittle die offizielle Website.
|
||||
Verwende danach ausschließlich diese Website als Quelle.
|
||||
Suche dort zuerst auf der Kontaktseite, danach im Impressum.
|
||||
Telefon, E-Mail und Adresse dürfen nur ausgegeben werden, wenn sie auf derselben offiziellen Website gefunden wurden.
|
||||
Sobald Telefonnummer oder E-Mail gefunden wurden, beende die Recherche.
|
||||
Nur wenn keine offizielle Website eindeutig gefunden wird, verwende Google Maps als einzige alternative Quelle.
|
||||
Wenn Google Maps verwendet wird, dürfen alle ausgegebenen Daten nur aus Google Maps stammen.
|
||||
Nutze keine weiteren Quellen.
|
||||
Recherchiere keine Ansprechpartner.
|
||||
|
||||
Regeln:
|
||||
|
||||
Ein Treffer = eine Quelle.
|
||||
Keine Daten aus mehreren Quellen kombinieren.
|
||||
Verwende nur Informationen, die eindeutig demselben Unternehmen zugeordnet sind.
|
||||
Erfinde keine Daten.
|
||||
Rate keine Telefonnummern, E-Mail-Adressen, Domains oder Adressen.
|
||||
Korrigiere keine Domains durch Vermutung.
|
||||
Bei Unsicherheit Information weglassen.
|
||||
Wenn nur Telefon gefunden wird, gib nur Telefon aus.
|
||||
Wenn nur E-Mail gefunden wird, gib nur E-Mail aus.
|
||||
Keine Platzhalter wie N/A, unbekannt oder nicht gefunden.
|
||||
Keine Faxnummern, Handelsregisterdaten, Rechtsform, Branche, Umsatz oder UID.
|
||||
Ausgabe kurz und ohne Fließtext.
|
||||
|
||||
Ausgabeformat:
|
||||
|
||||
Treffer 1
|
||||
|
||||
Quelle:
|
||||
Unternehmen:
|
||||
Website:
|
||||
Telefon:
|
||||
E-Mail:
|
||||
Adresse:
|
||||
|
||||
Falls mehrere plausible Unternehmen gefunden werden, gib maximal 3 Treffer aus.
|
||||
Jeder Treffer muss vollständig quellenrein sein.
|
||||
|
||||
Falls kein eindeutiger Treffer möglich ist:
|
||||
|
||||
Kein eindeutiger Treffer möglich.
|
||||
Grund: ...
|
||||
|
||||
EINGABE: [[" & eingabe & "]]
|
||||
|
||||
"
|
||||
|
||||
|
||||
Console.WriteLine(prompt)
|
||||
|
||||
Dim antwort As String = AskVERAG_HerbertAI(prompt, 2500)
|
||||
|
||||
|
||||
|
||||
Console.WriteLine(antwort)
|
||||
|
||||
Return antwort
|
||||
|
||||
End Function
|
||||
Shared Function askAI_Kontakdaten_WebResearcADVh(eingabe As String) As String
|
||||
|
||||
Dim prompt As String =
|
||||
"Du bist ein B2B Contact Finder.
|
||||
|
||||
HARTE REGEL:
|
||||
Jeder Treffer darf ausschließlich Daten aus einer einzigen Quelle enthalten.
|
||||
Standardquelle ist die offizielle Unternehmenswebsite.
|
||||
Das Mischen von Website, Telefonnummer, E-Mail-Adresse oder Adresse aus unterschiedlichen Quellen ist verboten.
|
||||
|
||||
Ziel:
|
||||
Finde möglichst schnell die Telefonnummer und E-Mail-Adresse eines Unternehmens.
|
||||
|
||||
Eingabe:
|
||||
Die Eingabe ist unstrukturiert und kann Firmenname, Ort, PLZ, Land, Website, Telefonnummer, E-Mail oder Freitext enthalten.
|
||||
|
||||
Arbeitsweise:
|
||||
|
||||
Identifiziere das wahrscheinlich richtige Unternehmen.
|
||||
Ermittle die offizielle Website.
|
||||
Verwende danach ausschließlich diese Website als Quelle.
|
||||
Suche dort zuerst auf der Kontaktseite, danach im Impressum.
|
||||
Telefon, E-Mail und Adresse dürfen nur ausgegeben werden, wenn sie auf derselben offiziellen Website gefunden wurden.
|
||||
Sobald Telefonnummer oder E-Mail gefunden wurden, beende die Recherche.
|
||||
Nur wenn keine offizielle Website eindeutig gefunden wird, verwende Google Maps als einzige alternative Quelle.
|
||||
Wenn Google Maps verwendet wird, dürfen alle ausgegebenen Daten nur aus Google Maps stammen.
|
||||
Nutze keine weiteren Quellen.
|
||||
Recherchiere keine Ansprechpartner.
|
||||
|
||||
Regeln:
|
||||
|
||||
Ein Treffer = eine Quelle.
|
||||
Keine Daten aus mehreren Quellen kombinieren.
|
||||
Verwende nur Informationen, die eindeutig demselben Unternehmen zugeordnet sind.
|
||||
Erfinde keine Daten.
|
||||
Rate keine Telefonnummern, E-Mail-Adressen, Domains oder Adressen.
|
||||
Korrigiere keine Domains durch Vermutung.
|
||||
Bei Unsicherheit Information weglassen.
|
||||
Wenn nur Telefon gefunden wird, gib nur Telefon aus.
|
||||
Wenn nur E-Mail gefunden wird, gib nur E-Mail aus.
|
||||
Keine Platzhalter wie N/A, unbekannt oder nicht gefunden.
|
||||
Keine Faxnummern, Handelsregisterdaten, Rechtsform, Branche, Umsatz oder UID.
|
||||
Ausgabe kurz und ohne Fließtext.
|
||||
|
||||
Ausgabeformat:
|
||||
|
||||
Treffer 1
|
||||
|
||||
Quelle:
|
||||
Unternehmen:
|
||||
Website:
|
||||
Telefon:
|
||||
E-Mail:
|
||||
Adresse:
|
||||
|
||||
Falls mehrere plausible Unternehmen gefunden werden, gib maximal 3 Treffer aus.
|
||||
Jeder Treffer muss vollständig quellenrein sein.
|
||||
|
||||
Falls kein eindeutiger Treffer möglich ist:
|
||||
|
||||
Kein eindeutiger Treffer möglich.
|
||||
Grund: ...
|
||||
|
||||
EINGABE: [[" & eingabe & "]]
|
||||
|
||||
"
|
||||
|
||||
Console.WriteLine(prompt)
|
||||
Return AskOpenAI(prompt, 10000, "gpt-5.5")
|
||||
|
||||
End Function
|
||||
|
||||
Shared Function askAI_Zolltarif(
|
||||
unternehmensbeschreibung As String,
|
||||
artikel As List(Of ZollArtikelInput)
|
||||
|
||||
Reference in New Issue
Block a user