openAI
This commit is contained in:
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.5.5.5")>
|
||||
<Assembly: AssemblyFileVersion("1.5.5.5")>
|
||||
<Assembly: AssemblyVersion("1.5.5.6")>
|
||||
<Assembly: AssemblyFileVersion("1.5.5.6")>
|
||||
|
||||
@@ -159,7 +159,7 @@ Public Class usrCntlMDMAuswertungen
|
||||
" and RechnungsDatum between '" & datWoelflVon.Value.ToShortDateString & "' and '" & datWoelflBis.Value.ToShortDateString & "'" &
|
||||
" order by [RechnungsNr] "
|
||||
' MsgBox(sqlstr)
|
||||
Dim SQL As New SQL
|
||||
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
Dim dt As DataTable = SQL.loadDgvBySql(sqlstr, "FMZOLL")
|
||||
|
||||
|
||||
@@ -172,12 +172,12 @@ Public Class usrCntlMDMAuswertungen
|
||||
Exit Sub
|
||||
End Try
|
||||
Dim clmns As String = ""
|
||||
|
||||
Dim notfoundStr = ""
|
||||
For Each r As DataRow In dt.Rows
|
||||
|
||||
If r.Item("LeistungsBez").ToString.Contains("00/23") Or r.Item("LeistungsBez").ToString.Contains("DL/23") Then
|
||||
|
||||
Dim antragsID As Integer = CInt(SQL.getValueTxtBySql("SELECT UStVAn_ID FROM tblUStVAntrag WHERE FilialenNr = " & r.Item("FilialenNr").ToString & " AND AbfertigungsNr = " & r.Item("AbfertigungsNr").ToString, "FMZOLL"))
|
||||
Dim antragsID As Integer = CInt(SQL.getValueTxtBySql("SELECT UStVAn_ID FROM tblUStVAntrag WHERE FilialenNr = " & r.Item("FilialenNr").ToString & " AND AbfertigungsNr = " & r.Item("AbfertigungsNr").ToString, "FMZOLL",,, -1))
|
||||
|
||||
Dim listVZMonth As New List(Of Integer)
|
||||
|
||||
@@ -236,7 +236,8 @@ Public Class usrCntlMDMAuswertungen
|
||||
r.Item("LeistungsBez") = LeistungsBez
|
||||
End If
|
||||
|
||||
|
||||
Else
|
||||
notfoundStr &= r.Item("FilialenNr").ToString & " And AbfertigungsNr = " & r.Item("AbfertigungsNr").ToString & vbNewLine
|
||||
End If
|
||||
|
||||
|
||||
@@ -244,10 +245,14 @@ Public Class usrCntlMDMAuswertungen
|
||||
|
||||
Next
|
||||
|
||||
If notfoundStr <> "" Then
|
||||
MsgBox("Antrag nicht gefunden: " & notfoundStr)
|
||||
End If
|
||||
|
||||
If dt.Columns.Contains("RK_ID") Then dt.Columns.Remove("RK_ID")
|
||||
|
||||
For i = 0 To dt.Columns.Count - 1
|
||||
clmns &= dt.Columns(i).ColumnName.ToString().Replace(";", ",") & ";"
|
||||
clmns &= dt.Columns(i).ColumnName.ToString().Replace(";", ", ") & ";"
|
||||
|
||||
Next
|
||||
|
||||
@@ -261,7 +266,7 @@ Public Class usrCntlMDMAuswertungen
|
||||
clmns &= dt.Rows(i).Item(j).ToString().Replace(vbNewLine, "").Replace(vbCr, "").Replace(vbLf, "").Replace("\n", "").Replace("\r", "").Replace(vbCrLf, "") & ";"
|
||||
|
||||
' If Not o Is Nothing AndAlso Not o.value Is Nothing Then
|
||||
'clmns &= o.Value.ToString().Replace(";", ",") & ";"
|
||||
'clmns &= o.Value.ToString().Replace(";", ", ") & ";"
|
||||
' Else
|
||||
' clmns &= ";"
|
||||
'End If
|
||||
@@ -467,15 +472,15 @@ Public Class usrCntlMDMAuswertungen
|
||||
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
|
||||
Dim displayFilter = False
|
||||
Dim sqlstr As String = ""
|
||||
sqlstr &= " SELECT COUNT(*) as COUNT,prod_descr,sou_descr, out_descr ,SUM(TOT_QTY) as TOT_QTY, MAX(SOU_CURR) as SOU_CURR,"
|
||||
sqlstr &= " SUM(ORIG_LIST_PRICE) as ORIG_LIST_PRICE_SUM, COUNT(ORIG_LIST_PRICE) as ORIG_LIST_PRICE_COUNT,AVG(ORIG_LIST_PRICE) as ORIG_LIST_PRICE_AVG, "
|
||||
sqlstr &= " SUM(SC_BC_RATE) as SC_BC_RATE_SUM, COUNT(SC_BC_RATE) as SC_BC_RATE_COUNT,AVG(SC_BC_RATE) as SC_BC_RATE_AVG, "
|
||||
sqlstr &= " SUM(PLATTS_PRICE) as PLATTS_PRICE_SUM, COUNT(PLATTS_PRICE) as PLATTS_PRICE_COUNT,AVG(PLATTS_PRICE) as PLATTS_PRICE_AVG, "
|
||||
sqlstr &= " SUM(EUR_IV_BC_AMNT) as EUR_IV_BC_AMNT"
|
||||
sqlstr &= " Select COUNT(*) As COUNT,prod_descr,sou_descr, out_descr ,SUM(TOT_QTY) As TOT_QTY, MAX(SOU_CURR) As SOU_CURR,"
|
||||
sqlstr &= " SUM(ORIG_LIST_PRICE) As ORIG_LIST_PRICE_SUM, COUNT(ORIG_LIST_PRICE) As ORIG_LIST_PRICE_COUNT,AVG(ORIG_LIST_PRICE) As ORIG_LIST_PRICE_AVG, "
|
||||
sqlstr &= " SUM(SC_BC_RATE) As SC_BC_RATE_SUM, COUNT(SC_BC_RATE) As SC_BC_RATE_COUNT,AVG(SC_BC_RATE) As SC_BC_RATE_AVG, "
|
||||
sqlstr &= " SUM(PLATTS_PRICE) As PLATTS_PRICE_SUM, COUNT(PLATTS_PRICE) As PLATTS_PRICE_COUNT,AVG(PLATTS_PRICE) As PLATTS_PRICE_AVG, "
|
||||
sqlstr &= " SUM(EUR_IV_BC_AMNT) As EUR_IV_BC_AMNT"
|
||||
sqlstr &= " FROM [tblIDS_Transaktionen] "
|
||||
sqlstr &= " WHERE 1=1 "
|
||||
sqlstr &= " WHERE 1= 1 "
|
||||
Select Case cboIDSDateType._value
|
||||
Case "LDat" : sqlstr &= " AND [TRS_DATE] between '" & datIDSVon.Value & "' and '" & datIDSBis.Value & "' "
|
||||
Case "LDat" : sqlstr &= " And [TRS_DATE] between '" & datIDSVon.Value & "' and '" & datIDSBis.Value & "' "
|
||||
Case "RGDat" : sqlstr &= " AND BC_INVO_DATE between '" & datIDSVon.Value & "' and '" & datIDSBis.Value & "' "
|
||||
End Select
|
||||
If txtOrt.Text <> "" Then
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
Imports System.Net.Http
|
||||
Imports System.Net.Http.Headers
|
||||
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 apiKey As String = "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"
|
||||
Shared apiKey As String = "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"
|
||||
Shared apiUrl As String = "https://api.openai.com/v1/responses"
|
||||
|
||||
Shared Sub doFirstAI()
|
||||
'Dim frage As String = "Wie viele Tage braucht ein Versandschein von Istanbul nach München? Gib nur die Zahl zurück."
|
||||
@@ -64,49 +66,256 @@ Public Class cOpenAI
|
||||
|
||||
|
||||
' Funktion zur Kommunikation mit OpenAI API (synchrones Verhalten)
|
||||
Shared Function AskOpenAI(question As String) As String
|
||||
Public Shared Function AskOpenAI(question As String,
|
||||
Optional maxOutputTokens As Integer = 1000) 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
|
||||
}"
|
||||
client.DefaultRequestHeaders.Authorization =
|
||||
New AuthenticationHeaderValue("Bearer", apiKey.Trim())
|
||||
|
||||
Dim content As New StringContent(requestBody, Encoding.UTF8, "application/json")
|
||||
Dim requestJson As New JObject From {
|
||||
{"model", "gpt-4.1-mini"},
|
||||
{"input", question},
|
||||
{"max_output_tokens", maxOutputTokens}
|
||||
}
|
||||
|
||||
' POST-Anfrage senden und Antwort synchron verarbeiten
|
||||
Dim response As HttpResponseMessage = client.PostAsync(apiUrl, content).Result
|
||||
Dim content As New StringContent(
|
||||
requestJson.ToString(),
|
||||
Encoding.UTF8,
|
||||
"application/json"
|
||||
)
|
||||
|
||||
If response.IsSuccessStatusCode Then
|
||||
Dim responseBody As String = response.Content.ReadAsStringAsync().Result
|
||||
Dim response As HttpResponseMessage =
|
||||
client.PostAsync(apiUrl, content).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()
|
||||
Dim responseBody As String =
|
||||
response.Content.ReadAsStringAsync().Result
|
||||
|
||||
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}"
|
||||
If Not response.IsSuccessStatusCode Then
|
||||
Return "Fehler: " & response.StatusCode.ToString() &
|
||||
Environment.NewLine & responseBody
|
||||
End If
|
||||
|
||||
Dim json As JObject = JObject.Parse(responseBody)
|
||||
|
||||
' 1. Standard-Fall: output_text direkt vorhanden
|
||||
If json("output_text") IsNot Nothing Then
|
||||
Return json("output_text").ToString().Trim()
|
||||
End If
|
||||
|
||||
' 2. Fallback: output/content/text durchsuchen
|
||||
Dim output = json("output")
|
||||
|
||||
If output IsNot Nothing AndAlso output.Type = JTokenType.Array Then
|
||||
|
||||
For Each item As JToken In output
|
||||
|
||||
Dim contentArray = item("content")
|
||||
|
||||
If contentArray IsNot Nothing AndAlso contentArray.Type = JTokenType.Array Then
|
||||
|
||||
For Each contentItem As JToken In contentArray
|
||||
|
||||
If contentItem("text") IsNot Nothing Then
|
||||
Return contentItem("text").ToString().Trim()
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
End If
|
||||
|
||||
' 3. Wenn nichts gefunden wurde: gesamte Antwort zurückgeben
|
||||
Return "Keine Textantwort gefunden." &
|
||||
Environment.NewLine &
|
||||
responseBody
|
||||
|
||||
End Using
|
||||
|
||||
Catch ex As Exception
|
||||
' Allgemeine Fehlerbehandlung
|
||||
Console.WriteLine($"Fehler: {ex.Message}")
|
||||
Return $"Fehler: {ex.Message}"
|
||||
Return "Fehler: " & ex.ToString()
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Shared Function askAI_Zolltarif(
|
||||
unternehmensbeschreibung As String,
|
||||
artikel As List(Of ZollArtikelInput)
|
||||
) As String
|
||||
|
||||
Dim inputJson As New JObject From {
|
||||
{"unternehmensbeschreibung", unternehmensbeschreibung},
|
||||
{"artikel", New JArray(
|
||||
artikel.Select(Function(a) New JObject From {
|
||||
{"artikelnummer", a.artikelnummer},
|
||||
{"kundenwarenbeschreibung", a.kundenwarenbeschreibung},
|
||||
{"kn8_text", a.kn8_text},
|
||||
{"moegliche_eu_tarifnummern", New JArray(If(a.moegliche_eu_tarifnummern, New List(Of String)))},
|
||||
{"tarifnummer_tuerkei", a.tarifnummer_tuerkei}
|
||||
})
|
||||
)}
|
||||
}
|
||||
|
||||
Dim prompt As String =
|
||||
"Du bist ein Zolltarif-Klassifizierungsassistent für Deutschland/EU und das Vereinigte Königreich.
|
||||
|
||||
Aufgabe
|
||||
|
||||
Ermittle für jeden übergebenen Artikel die wahrscheinlich zutreffende vollständige Zolltarifnummer für Deutschland/EU sowie für UK.
|
||||
|
||||
Die Ausgabe muss ausschließlich als valides JSON-Array erfolgen.
|
||||
|
||||
Priorität der Informationen
|
||||
|
||||
1. Alle verfügbaren Informationen sind gemeinsam zu bewerten.
|
||||
2. Der KN8-Text ist die wichtigste Einzelinformation und dient als Grundlage für die zolltarifliche Einordnung.
|
||||
3. Mögliche EU-Tarifnummern sind sehr wahrscheinliche Kandidaten und besonders zu berücksichtigen.
|
||||
4. Die Kundenwarenbeschreibung dient der Präzisierung.
|
||||
5. Die Unternehmensbeschreibung liefert fachlichen Kontext.
|
||||
6. Die türkische Tarifnummer dient ausschließlich der Plausibilitätsprüfung.
|
||||
|
||||
Regeln
|
||||
|
||||
- Die Liste `moegliche_eu_tarifnummern` ist die einzige zulässige Quelle für 11-stellige EU EZT-Codenummern.
|
||||
- Kommt die ermittelte 11-stellige EZT-Codenummer nicht exakt in `moegliche_eu_tarifnummern` vor, darf sie nicht ausgegeben werden.
|
||||
- In diesem Fall ist stattdessen ausschließlich die passende 8-stellige KN-Unterposition auszugeben. - Für Deutschland grundsätzlich die vollständige 11-stellige EZT-Codenummer verwenden.
|
||||
- Für UK die vollständige 10-stellige UK Global Tariff Nummer verwenden.
|
||||
- Die deutsche Tarifnummer muss entweder genau 11 Ziffern oder – falls keine eindeutige vollständige EZT-Codenummer bestimmt werden kann – genau 8 Ziffern (KN-Unterposition) enthalten.
|
||||
- Die UK-Tarifnummer muss immer genau 10 Ziffern enthalten.
|
||||
- Keine Leerzeichen, Punkte oder sonstige Trennzeichen ausgeben.
|
||||
- Eine 11-stellige deutsche EZT-Codenummer darf ausschließlich verwendet werden, wenn sie vollständig in der Liste `moegliche_eu_tarifnummern` enthalten ist.
|
||||
- Ist keine passende 11-stellige EZT-Codenummer in `moegliche_eu_tarifnummern` enthalten, darf keine neue 11-stellige Nummer erzeugt oder ergänzt werden.
|
||||
- In diesem Fall ist ausschließlich die wahrscheinlichste 8-stellige KN-Unterposition auszugeben.
|
||||
- Die 8-stellige KN-Unterposition darf anhand aller verfügbaren Informationen selbst ermittelt werden.
|
||||
- Die UK-Tarifnummer ist unabhängig hiervon anhand aller verfügbaren Informationen zu bestimmen.
|
||||
- Falls keine ausreichend sichere Einstufung möglich ist, null verwenden.
|
||||
- Accuracy realistisch zwischen 0 und 100 schätzen.
|
||||
- Der Klassifizierungsgrund darf maximal zwei kurze Sätze umfassen.
|
||||
- Die Reihenfolge der Ausgabe muss exakt der Reihenfolge der Eingabe entsprechen.
|
||||
- Keine Erklärungen, kein Markdown, keine zusätzlichen Texte, ausschließlich gültiges JSON.
|
||||
|
||||
Warenbezeichnung
|
||||
|
||||
- Erstelle zusätzlich eine zollfachlich präzise Warenbezeichnung.
|
||||
- Die Warenbezeichnung dient der zollrechtlichen Identifizierung der Ware und nicht der Wiedergabe des KN8-Textes.
|
||||
- Der KN8-Text ist als Grundlage für die Einordnung zu verwenden, darf jedoch nicht wörtlich oder nahezu unverändert übernommen werden.
|
||||
- Übernimm aus dem KN8-Text lediglich die zutreffende allgemeine Warengruppe, gegebenenfalls in verkürzter oder sprachlich angepasster Form.
|
||||
- Ergänze anschließend – sofern anhand der übrigen Informationen eindeutig möglich – die konkrete Ware mit ', hier: ' (DE) bzw. ', here: ' (UK).
|
||||
- Ziel ist eine präzisere Warenbezeichnung als der KN8-Text, welche die Ware für einen Zollsachbearbeiter möglichst eindeutig beschreibt.
|
||||
- Leite die Warenbezeichnung aus allen verfügbaren Informationen ab (KN8-Text, Kundenwarenbeschreibung, mögliche EU-Tarifnummern, Unternehmensbeschreibung und türkische Tarifnummer).
|
||||
- Nutze die Terminologie, wie sie üblicherweise im Zolltarif (KN, TARIC, EZT bzw. UK Global Tariff), in den Erläuterungen zur Kombinierten Nomenklatur oder in verbindlichen Zolltarifauskünften verwendet wird.
|
||||
- Die Warenbezeichnung soll einem Zollsachbearbeiter eine möglichst eindeutige zollrechtliche Identifizierung ermöglichen.
|
||||
- Es handelt sich ausdrücklich nicht um eine Übersetzung oder Kopie des KN8-Textes und nicht um eine Marketing- oder Verkaufsbezeichnung.
|
||||
- Beschreibe die Ware anhand ihrer objektiven Merkmale:
|
||||
- Art der Ware
|
||||
- Hauptfunktion
|
||||
- Material (soweit tarifrelevant oder eindeutig bekannt)
|
||||
- Bauart oder Ausführung (soweit tarifrelevant)
|
||||
- Erstelle für Deutschland/EU die Warenbezeichnung ausschließlich in deutscher Sprache.
|
||||
- Erstelle für UK die Warenbezeichnung ausschließlich in englischer Sprache.
|
||||
- Verwende keine fremdsprachigen Gattungs- oder Produktbezeichnungen in der jeweiligen Ausgabe.
|
||||
- Übersetze allgemeine Warenbezeichnungen und Produktarten immer in die jeweilige Landessprache.
|
||||
- Marken-, Firmen- und Modellbezeichnungen (z. B. Bosch, KitchenAid, Karaca, Thermomix) werden nicht übersetzt und dürfen nur verwendet werden, wenn sie zur eindeutigen Identifizierung der Ware erforderlich sind.
|
||||
- Allgemeine Marketingbegriffe oder Verkaufsbezeichnungen sind in fachlich zutreffende Warenbezeichnungen umzuwandeln.
|
||||
- Die Warenbezeichnung soll grundsätzlich nach folgendem Schema aufgebaut sein:
|
||||
|
||||
Allgemeine Warengruppe, hier: konkrete Ware
|
||||
|
||||
- Die allgemeine Warengruppe soll sich am Zolltarif orientieren, jedoch kürzer und fachlich präziser formuliert sein als der KN8-Text.
|
||||
- Die allgemeine Warengruppe soll die tarifliche Einordnung widerspiegeln und nicht den vollständigen Wortlaut des KN8-Textes übernehmen.
|
||||
- Die konkrete Ware hinter ', hier: ' bzw. ', here: ' soll möglichst die tatsächliche Handelsbezeichnung oder den konkreten Gegenstand beschreiben und die allgemeine Warengruppe präzisieren.
|
||||
- Falls der KN8-Text bereits eine konkrete Warenbezeichnung enthält (z. B. 'Küchenmesser', 'Wasserkocher', 'Speiseteller'), darf diese übernommen werden.
|
||||
- Enthält der KN8-Text lediglich eine allgemeine Warengruppe (z. B. 'Elektrische Haushaltsgeräte', 'Haushaltsgeschirr aus Porzellan', 'Glaswaren für den Haushalt'), ist diese als allgemeine Warengruppe zu verwenden und anhand der übrigen Informationen mit ', hier: ' bzw. ', here: ' zu präzisieren.
|
||||
- Ziel ist ausdrücklich eine präzisere und zollfachlich treffendere Warenbezeichnung als der KN8-Text.
|
||||
- Ist keine konkrete Ware eindeutig ableitbar, entfällt der Zusatz ', hier: ' bzw. ', here: ' und es bleibt bei der allgemeinen Warengruppe.
|
||||
- Verwende nur tatsächlich vorhandene oder eindeutig ableitbare Produktbezeichnungen.
|
||||
- Keine erfundenen Eigenschaften oder Modellbezeichnungen.
|
||||
- Die Warenbezeichnung soll möglichst zwischen 3 und 12 Wörtern umfassen, außer eine längere tariftechnische Bezeichnung ist erforderlich.
|
||||
- Keine Werbesprache.
|
||||
- Keine bloße Wiederholung des KN8-Textes.
|
||||
- Keine Maße, Farben, Verpackungsgrößen oder sonstige Eigenschaften aufnehmen, sofern diese für die Tarifierung nicht relevant sind.
|
||||
|
||||
Wichtig
|
||||
|
||||
- Die deutsche Warenbezeichnung darf keine englischen, türkischen oder sonstigen fremdsprachigen Produktbezeichnungen enthalten.
|
||||
- Die englische Warenbezeichnung darf keine deutschen, türkischen oder sonstigen fremdsprachigen Produktbezeichnungen enthalten.
|
||||
- Ausgenommen sind international gebräuchliche Marken-, Firmen- und Modellnamen.
|
||||
|
||||
Beispiele DE
|
||||
|
||||
- Elektrischer Heißluftgarer
|
||||
- Elektrischer Haushaltsgrill, hier: Heißluftfritteuse
|
||||
- Elektrischer Wasserkocher
|
||||
- Elektrische Küchenmaschine, hier: Standmixer
|
||||
- Elektrischer Stabmixer
|
||||
- Haushaltsgeschirr aus Porzellan, hier: Speiseteller
|
||||
- Haushaltsgeschirr aus Porzellan, hier: Suppenteller
|
||||
- Küchenmesser, hier: Kochmesser
|
||||
- Besteck aus nichtrostendem Stahl, hier: Tafelgabel
|
||||
- Glaswaren für den Haushalt, hier: Trinkglas
|
||||
- Glaswaren für den Haushalt, hier: Vorratsglas
|
||||
- Kochgeschirr aus Gusseisen, hier: Kochtopf
|
||||
- Keramikwaren für den Haushalt, hier: Trinkbecher
|
||||
|
||||
Beispiele UK
|
||||
|
||||
- Electric hot air cooker
|
||||
- Electric domestic grill, here: air fryer
|
||||
- Electric kettle
|
||||
- Electric food preparation machine, here: countertop blender
|
||||
- Electric hand blender
|
||||
- Household tableware of porcelain, here: dinner plate
|
||||
- Household tableware of porcelain, here: soup plate
|
||||
- Kitchen knife, here: chef's knife
|
||||
- Stainless steel cutlery, here: table fork
|
||||
- Glassware for household use, here: drinking glass
|
||||
- Glassware for household use, here: storage jar
|
||||
- Cast iron cookware, here: cooking pot
|
||||
- Household ceramic ware, here: drinking mug
|
||||
|
||||
Klassifizierungsgrund
|
||||
|
||||
- Begründe die Einstufung ausschließlich anhand der objektiven Merkmale der Ware.
|
||||
- Nenne ausschließlich die tarifrelevanten Eigenschaften.
|
||||
- Maximal zwei kurze Sätze.
|
||||
|
||||
JSON-Ausgabe
|
||||
[
|
||||
{
|
||||
""artikelnummer"": ""..."",
|
||||
""moegliche_eu_tarifnummern"": ""12301234561,12365478911,12365498712"",
|
||||
|
||||
""tarifnummer_eu"": ""1234567890"",
|
||||
""accuracy_eu"": 95,
|
||||
""warenbezeichnung_de"": ""..."",
|
||||
""klassifizierungsgrund_eu"": ""..."",
|
||||
|
||||
""tarifnummer_uk"": ""1234567890"",
|
||||
""accuracy_uk"": 93,
|
||||
""goods_description_uk"": ""..."",
|
||||
""classification_reason_uk"": ""...""
|
||||
}
|
||||
]
|
||||
Eingabe:
|
||||
" & inputJson.ToString(Newtonsoft.Json.Formatting.None)
|
||||
Console.WriteLine(prompt)
|
||||
Return AskOpenAI(prompt, 25000)
|
||||
|
||||
End Function
|
||||
|
||||
Public Class ZollArtikelInput
|
||||
Public Property artikelnummer As String
|
||||
Public Property kundenwarenbeschreibung As String
|
||||
Public Property kn8_text As String
|
||||
Public Property moegliche_eu_tarifnummern As List(Of String)
|
||||
Public Property tarifnummer_tuerkei As String
|
||||
End Class
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
End Class
|
||||
Reference in New Issue
Block a user