{"id":22216,"date":"2024-12-24T04:28:20","date_gmt":"2024-12-24T03:28:20","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=22216"},"modified":"2025-01-10T18:34:54","modified_gmt":"2025-01-10T17:34:54","slug":"perplexity-ki-modele-in-java-ausgeben","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=22216","title":{"rendered":"Zum &#8222;Tag der Ruhe&#8220; mal Perplexity KI-Modelle in Java  ausgeben"},"content":{"rendered":"<p>Wir haben diese 7 Perplexity Modelle, mein Favorit ist \u00fcbrigens GPT-4 Omni (GPT-4o):<\/p>\n<p><!--more--><\/p>\n<table>\n<thead>\n<tr>\n<th class=\"string\">Modell<\/th>\n<th class=\"string\">Beschreibung<\/th>\n<th class=\"string\">groesse<\/th>\n<th class=\"string\">Datum<\/th>\n<th class=\"boolean\">Fotos<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"string\">GPT-3.5<\/td>\n<td class=\"string\">Standardmodell f\u00fcr allgemeine Anfragen. Hohe Verf\u00fcgbarkeit und solide Leistung.<\/td>\n<td class=\"string\">175 Milliarden<\/td>\n<td class=\"string\">November 2022<\/td>\n<td class=\"boolean\">false<\/td>\n<\/tr>\n<tr>\n<td class=\"string\">GPT-4 Turbo<\/td>\n<td class=\"string\">Verbesserte Version von GPT-4 mit schnellerer Verarbeitung und geringeren Kosten.<\/td>\n<td class=\"string\">~1 Billion (gesch\u00e4tzt)<\/td>\n<td class=\"string\">November 2023<\/td>\n<td class=\"boolean\">false<\/td>\n<\/tr>\n<tr>\n<td class=\"string\">GPT-4 Omni<\/td>\n<td class=\"string\">Optimierte Version von GPT-4 mit pr\u00e4zisen Antworten und besserer Kontextverarbeitung.<\/td>\n<td class=\"string\">~1 Billion (gesch\u00e4tzt)<\/td>\n<td class=\"string\">Mai 2024<\/td>\n<td class=\"boolean\">false<\/td>\n<\/tr>\n<tr>\n<td class=\"string\">Claude 3 (Sonnet und Opus)<\/td>\n<td class=\"string\">Hervorragend f\u00fcr tiefgehende Analysen und komplexe Probleml\u00f6sungen.<\/td>\n<td class=\"string\">Sonnet: 70 Milliarden, Opus: ~2 Billionen (gesch\u00e4tzt)<\/td>\n<td class=\"string\">M\u00e4rz 2023<\/td>\n<td class=\"boolean\">false<\/td>\n<\/tr>\n<tr>\n<td class=\"string\">Sonar Large 32K<\/td>\n<td class=\"string\">Unterst\u00fctzt gro\u00dfe Kontexte mit bis zu 32k Token, ideal f\u00fcr umfangreiche Dokumentenanalyse.<\/td>\n<td class=\"string\">70 Milliarden<\/td>\n<td class=\"string\">Juli 2024<\/td>\n<td class=\"boolean\">false<\/td>\n<\/tr>\n<tr>\n<td class=\"string\">pplx-7b-online<\/td>\n<td class=\"string\">Echtzeit-Websuche f\u00fcr aktuelle Informationen, leichtgewichtig und schnell.<\/td>\n<td class=\"string\">7 Milliarden<\/td>\n<td class=\"string\">November 2024<\/td>\n<td class=\"boolean\">true<\/td>\n<\/tr>\n<tr>\n<td class=\"string\">pplx-70b-online<\/td>\n<td class=\"string\">Kombination aus Echtzeit-Websuche und hoher Pr\u00e4zision bei komplexen Anfragen.<\/td>\n<td class=\"string\">70 Milliarden<\/td>\n<td class=\"string\">November 2024<\/td>\n<td class=\"boolean\">true<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Davon erstellen wir eine JSon-Datei <strong>ki_modelle.json<\/strong><\/p>\n<pre class=\"nums:false minimize:true lang:default decode:true \" >[\r\n    {\r\n        \"modell\": \"GPT-3.5\",\r\n        \"beschreibungUndVorteile\": \"Standardmodell f\u00fcr allgemeine Anfragen. Hohe Verf\u00fcgbarkeit und solide Leistung.\",\r\n        \"groesse\": \"175 Milliarden\",\r\n        \"veroeffentlichungsdatum\": \"November 2022\",\r\n        \"kannFotosErzeugen\": false\r\n    },\r\n    {\r\n        \"modell\": \"GPT-4 Turbo\",\r\n        \"beschreibungUndVorteile\": \"Verbesserte Version von GPT-4 mit schnellerer Verarbeitung und geringeren Kosten.\",\r\n        \"groesse\": \"~1 Billion (gesch\u00e4tzt)\",\r\n        \"veroeffentlichungsdatum\": \"November 2023\",\r\n        \"kannFotosErzeugen\": false\r\n    },\r\n    {\r\n        \"modell\": \"GPT-4 Omni\",\r\n        \"beschreibungUndVorteile\": \"Optimierte Version von GPT-4 mit pr\u00e4zisen Antworten und besserer Kontextverarbeitung.\",\r\n        \"groesse\": \"~1 Billion (gesch\u00e4tzt)\",\r\n        \"veroeffentlichungsdatum\": \"Mai 2024\",\r\n        \"kannFotosErzeugen\": false\r\n    },\r\n    {\r\n        \"modell\": \"Claude 3 (Sonnet und Opus)\",\r\n        \"beschreibungUndVorteile\": \"Hervorragend f\u00fcr tiefgehende Analysen und komplexe Probleml\u00f6sungen.\",\r\n        \"groesse\": \"Sonnet: 70 Milliarden, Opus: ~2 Billionen (gesch\u00e4tzt)\",\r\n        \"veroeffentlichungsdatum\": \"M\u00e4rz 2023\",\r\n        \"kannFotosErzeugen\": false\r\n    },\r\n    {\r\n        \"modell\": \"Sonar Large 32K\",\r\n        \"beschreibungUndVorteile\": \"Unterst\u00fctzt gro\u00dfe Kontexte mit bis zu 32k Token, ideal f\u00fcr umfangreiche Dokumentenanalyse.\",\r\n        \"groesse\": \"70 Milliarden\",\r\n        \"veroeffentlichungsdatum\": \"Juli 2024\",\r\n        \"kannFotosErzeugen\": false\r\n    },\r\n    {\r\n        \"modell\": \"pplx-7b-online\",\r\n        \"beschreibungUndVorteile\": \"Echtzeit-Websuche f\u00fcr aktuelle Informationen, leichtgewichtig und schnell.\",\r\n        \"groesse\": \"7 Milliarden\",\r\n        \"veroeffentlichungsdatum\": \"November 2024\",\r\n        \"kannFotosErzeugen\": true\r\n    },\r\n    {\r\n        \"modell\": \"pplx-70b-online\",\r\n        \"beschreibungUndVorteile\": \"Kombination aus Echtzeit-Websuche und hoher Pr\u00e4zision bei komplexen Anfragen.\",\r\n        \"groesse\": \"70 Milliarden\",\r\n        \"veroeffentlichungsdatum\": \"November 2024\",\r\n        \"kannFotosErzeugen\": true\r\n    }\r\n]\r\n<\/pre>\n<p>Eine Java Klasse die die KI-Modelle einliesst und auf System-Out ausgibt:<\/p>\n<pre class=\"lang:java decode:true \" >package de.wenzlaff.ki.model;\r\n\r\nimport java.io.IOException;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Path;\r\nimport java.util.List;\r\n\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\n\r\n\/**\r\n * KI-Model Demo.\r\n * \r\n * @author Thomas Wenzlaff\r\n *\/\r\npublic class KIModelle {\r\n\r\n\tpublic static final String JSON_MODEL_DATEI = \"src\/main\/resources\/de\/wenzlaff\/ki\/model\/ki_modelle.json\";\r\n\r\n\t\/\/ Klasse f\u00fcr KI-Modelldaten\r\n\tstatic class KIModel {\r\n\r\n\t\tpublic String modell;\r\n\t\tpublic String beschreibungUndVorteile;\r\n\t\tpublic String groesse;\r\n\t\tpublic String veroeffentlichungsdatum;\r\n\t\tpublic boolean kannFotosErzeugen;\r\n\r\n\t\t@Override\r\n\t\tpublic String toString() {\r\n\t\t\treturn \"Modell: \" + modell + \"\\n\" + \"Beschreibung: \" + beschreibungUndVorteile + \"\\n\" + \"Gr\u00f6\u00dfe: \" + groesse + \"\\n\" + \"Ver\u00f6ffentlichungsdatum: \"\r\n\t\t\t\t\t+ veroeffentlichungsdatum + \"\\n\" + \"Kann Fotos erzeugen: \" + (kannFotosErzeugen ? \"Ja\" : \"Nein\") + \"\\n\";\r\n\t\t}\r\n\t}\r\n\r\n\t\/\/ Methode zum Laden von JSON-Daten aus einer Datei\r\n\tpublic List&lt;KIModel&gt; loadModelsFromJson(String filePath) throws IOException {\r\n\t\tvar objectMapper = new ObjectMapper();\r\n\t\tvar jsonContent = Files.readString(Path.of(filePath));\r\n\t\treturn objectMapper.readValue(jsonContent, new TypeReference&lt;List&lt;KIModel&gt;&gt;() {\r\n\t\t});\r\n\t}\r\n\r\n\t\/\/ Hauptmethode zum Testen des Imports\r\n\tpublic static void main(String[] args) {\r\n\t\tvar kiModelle = new KIModelle(); \/\/ Verwendung von var\r\n\t\ttry {\r\n\t\t\tvar modelle = kiModelle.loadModelsFromJson(JSON_MODEL_DATEI);\r\n\t\t\tSystem.out.println(\"Liste von \" + modelle.size() + \" perplexity Modellen aus der JSON-Datei:\\n\");\r\n\t\t\tmodelle.forEach(modell -&gt; {\r\n\t\t\t\tSystem.out.println(modell);\r\n\t\t\t\tSystem.out.println(\"-------------------------\");\r\n\t\t\t});\r\n\t\t} catch (IOException e) {\r\n\t\t\tSystem.err.println(\"Fehler beim Laden der JSON-Datei: \" + e.getMessage());\r\n\t\t}\r\n\t}\r\n}\r\n<\/pre>\n<p>Und noch eine JUnit-Testklasse:<\/p>\n<pre class=\"lang:java decode:true \" >package de.wenzlaff.ki.model;\r\n\r\nimport static org.junit.jupiter.api.Assertions.assertEquals;\r\nimport static org.junit.jupiter.api.Assertions.assertFalse;\r\nimport static org.junit.jupiter.api.Assertions.assertNotNull;\r\nimport static org.junit.jupiter.api.Assertions.assertTrue;\r\n\r\nimport java.io.IOException;\r\nimport java.nio.file.Files;\r\nimport java.nio.file.Path;\r\nimport java.util.List;\r\n\r\nimport org.junit.jupiter.api.BeforeEach;\r\nimport org.junit.jupiter.api.Test;\r\n\r\nimport com.fasterxml.jackson.core.type.TypeReference;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\n\r\n\/**\r\n * Test des KIModell.\r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\nclass KIModelleTest {\r\n\r\n\tprivate List&lt;KIModelle.KIModel&gt; modelle;\r\n\r\n\t@BeforeEach\r\n\tvoid setUp() throws IOException {\r\n\t\tvar jsonContent = Files.readString(Path.of(KIModelle.JSON_MODEL_DATEI));\r\n\t\tvar objectMapper = new ObjectMapper();\r\n\t\tmodelle = objectMapper.readValue(jsonContent, new TypeReference&lt;List&lt;KIModelle.KIModel&gt;&gt;() {\r\n\t\t});\r\n\t}\r\n\r\n\t@Test\r\n\tvoid testAnzahlDerModelle() {\r\n\t\tassertEquals(7, modelle.size(), \"Es sollten genau 7 Modelle vorhanden sein.\");\r\n\t}\r\n\r\n\t@Test\r\n\tvoid testErstesModell() {\r\n\t\tvar erstesModell = modelle.get(0);\r\n\t\tassertEquals(\"GPT-3.5\", erstesModell.modell);\r\n\t\tassertEquals(\"Standardmodell f\u00fcr allgemeine Anfragen. Hohe Verf\u00fcgbarkeit und solide Leistung.\", erstesModell.beschreibungUndVorteile);\r\n\t\tassertEquals(\"175 Milliarden\", erstesModell.groesse);\r\n\t\tassertEquals(\"November 2022\", erstesModell.veroeffentlichungsdatum);\r\n\t\tassertFalse(erstesModell.kannFotosErzeugen, \"GPT-3.5 sollte keine Fotos erzeugen k\u00f6nnen.\");\r\n\t}\r\n\r\n\t@Test\r\n\tvoid testFotoErzeugungBeiPplx7bOnline() {\r\n\t\tvar fotoModell = modelle.stream().filter(m -&gt; m.modell.equals(\"pplx-7b-online\")).findFirst().orElse(null);\r\n\r\n\t\tassertNotNull(fotoModell, \"Das Modell pplx-7b-online sollte existieren.\");\r\n\t\tassertTrue(fotoModell.kannFotosErzeugen, \"pplx-7b-online sollte Fotos erzeugen k\u00f6nnen.\");\r\n\t}\r\n\r\n\t@Test\r\n\tvoid testFotoErzeugungBeiPplx70bOnline() {\r\n\t\tvar fotoModell = modelle.stream().filter(m -&gt; m.modell.equals(\"pplx-70b-online\")).findFirst().orElse(null);\r\n\r\n\t\tassertNotNull(fotoModell, \"Das Modell pplx-70b-online sollte existieren.\");\r\n\t\tassertTrue(fotoModell.kannFotosErzeugen, \"pplx-70b-online sollte Fotos erzeugen k\u00f6nnen.\");\r\n\t}\r\n}\r\n<\/pre>\n<p>Damit das Projekt auch JSon lesen kann, wird in der pom.xml noch ein eintrag ben\u00f6tigt:<\/p>\n<pre class=\"minimize:true lang:xhtml decode:true \" >&lt;dependency&gt;\r\n\t\t    &lt;groupId&gt;com.fasterxml.jackson.core&lt;\/groupId&gt;\r\n\t\t    &lt;artifactId&gt;jackson-databind&lt;\/artifactId&gt;\r\n\t\t    &lt;version&gt;2.15.2&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>Den ganzen Code gibt es auch auf <a href=\"https:\/\/gitlab.com\/IT-Berater\/twmathe\/-\/blob\/main\/src\/main\/java\/de\/wenzlaff\/ki\/model\/KIModelle.java?ref_type=heads\" target=\"_blank\">GitLab<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben diese 7 Perplexity Modelle, mein Favorit ist \u00fcbrigens GPT-4 Omni (GPT-4o):<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5,6075,79],"tags":[6079,6081,6076,6080,6078,6077],"class_list":["post-22216","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","category-ki","category-programmierung","tag-ausgeben","tag-gpt-4-omni-gpt-4o","tag-ki","tag-ki-modelle","tag-modelle","tag-perplexity"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22216","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22216"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/22216\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22216"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}