Wir haben diese 7 Perplexity Modelle, mein Favorit ist übrigens GPT-4 Omni (GPT-4o):
Modell | Beschreibung | groesse | Datum | Fotos |
---|---|---|---|---|
GPT-3.5 | Standardmodell für allgemeine Anfragen. Hohe Verfügbarkeit und solide Leistung. | 175 Milliarden | November 2022 | false |
GPT-4 Turbo | Verbesserte Version von GPT-4 mit schnellerer Verarbeitung und geringeren Kosten. | ~1 Billion (geschätzt) | November 2023 | false |
GPT-4 Omni | Optimierte Version von GPT-4 mit präzisen Antworten und besserer Kontextverarbeitung. | ~1 Billion (geschätzt) | Mai 2024 | false |
Claude 3 (Sonnet und Opus) | Hervorragend für tiefgehende Analysen und komplexe Problemlösungen. | Sonnet: 70 Milliarden, Opus: ~2 Billionen (geschätzt) | März 2023 | false |
Sonar Large 32K | Unterstützt große Kontexte mit bis zu 32k Token, ideal für umfangreiche Dokumentenanalyse. | 70 Milliarden | Juli 2024 | false |
pplx-7b-online | Echtzeit-Websuche für aktuelle Informationen, leichtgewichtig und schnell. | 7 Milliarden | November 2024 | true |
pplx-70b-online | Kombination aus Echtzeit-Websuche und hoher Präzision bei komplexen Anfragen. | 70 Milliarden | November 2024 | true |
Davon erstellen wir eine JSon-Datei ki_modelle.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
[ { "modell": "GPT-3.5", "beschreibungUndVorteile": "Standardmodell für allgemeine Anfragen. Hohe Verfügbarkeit und solide Leistung.", "groesse": "175 Milliarden", "veroeffentlichungsdatum": "November 2022", "kannFotosErzeugen": false }, { "modell": "GPT-4 Turbo", "beschreibungUndVorteile": "Verbesserte Version von GPT-4 mit schnellerer Verarbeitung und geringeren Kosten.", "groesse": "~1 Billion (geschätzt)", "veroeffentlichungsdatum": "November 2023", "kannFotosErzeugen": false }, { "modell": "GPT-4 Omni", "beschreibungUndVorteile": "Optimierte Version von GPT-4 mit präzisen Antworten und besserer Kontextverarbeitung.", "groesse": "~1 Billion (geschätzt)", "veroeffentlichungsdatum": "Mai 2024", "kannFotosErzeugen": false }, { "modell": "Claude 3 (Sonnet und Opus)", "beschreibungUndVorteile": "Hervorragend für tiefgehende Analysen und komplexe Problemlösungen.", "groesse": "Sonnet: 70 Milliarden, Opus: ~2 Billionen (geschätzt)", "veroeffentlichungsdatum": "März 2023", "kannFotosErzeugen": false }, { "modell": "Sonar Large 32K", "beschreibungUndVorteile": "Unterstützt große Kontexte mit bis zu 32k Token, ideal für umfangreiche Dokumentenanalyse.", "groesse": "70 Milliarden", "veroeffentlichungsdatum": "Juli 2024", "kannFotosErzeugen": false }, { "modell": "pplx-7b-online", "beschreibungUndVorteile": "Echtzeit-Websuche für aktuelle Informationen, leichtgewichtig und schnell.", "groesse": "7 Milliarden", "veroeffentlichungsdatum": "November 2024", "kannFotosErzeugen": true }, { "modell": "pplx-70b-online", "beschreibungUndVorteile": "Kombination aus Echtzeit-Websuche und hoher Präzision bei komplexen Anfragen.", "groesse": "70 Milliarden", "veroeffentlichungsdatum": "November 2024", "kannFotosErzeugen": true } ] |
Eine Java Klasse die die KI-Modelle einliesst und auf System-Out ausgibt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
package de.wenzlaff.ki.model; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; /** * KI-Model Demo. * * @author Thomas Wenzlaff */ public class KIModelle { public static final String JSON_MODEL_DATEI = "src/main/resources/de/wenzlaff/ki/model/ki_modelle.json"; // Klasse für KI-Modelldaten static class KIModel { public String modell; public String beschreibungUndVorteile; public String groesse; public String veroeffentlichungsdatum; public boolean kannFotosErzeugen; @Override public String toString() { return "Modell: " + modell + "\n" + "Beschreibung: " + beschreibungUndVorteile + "\n" + "Größe: " + groesse + "\n" + "Veröffentlichungsdatum: " + veroeffentlichungsdatum + "\n" + "Kann Fotos erzeugen: " + (kannFotosErzeugen ? "Ja" : "Nein") + "\n"; } } // Methode zum Laden von JSON-Daten aus einer Datei public List<KIModel> loadModelsFromJson(String filePath) throws IOException { var objectMapper = new ObjectMapper(); var jsonContent = Files.readString(Path.of(filePath)); return objectMapper.readValue(jsonContent, new TypeReference<List<KIModel>>() { }); } // Hauptmethode zum Testen des Imports public static void main(String[] args) { var kiModelle = new KIModelle(); // Verwendung von var try { var modelle = kiModelle.loadModelsFromJson(JSON_MODEL_DATEI); System.out.println("Liste von " + modelle.size() + " perplexity Modellen aus der JSON-Datei:\n"); modelle.forEach(modell -> { System.out.println(modell); System.out.println("-------------------------"); }); } catch (IOException e) { System.err.println("Fehler beim Laden der JSON-Datei: " + e.getMessage()); } } } |
Und noch eine JUnit-Testklasse:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
package de.wenzlaff.ki.model; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; /** * Test des KIModell. * * @author Thomas Wenzlaff * */ class KIModelleTest { private List<KIModelle.KIModel> modelle; @BeforeEach void setUp() throws IOException { var jsonContent = Files.readString(Path.of(KIModelle.JSON_MODEL_DATEI)); var objectMapper = new ObjectMapper(); modelle = objectMapper.readValue(jsonContent, new TypeReference<List<KIModelle.KIModel>>() { }); } @Test void testAnzahlDerModelle() { assertEquals(7, modelle.size(), "Es sollten genau 7 Modelle vorhanden sein."); } @Test void testErstesModell() { var erstesModell = modelle.get(0); assertEquals("GPT-3.5", erstesModell.modell); assertEquals("Standardmodell für allgemeine Anfragen. Hohe Verfügbarkeit und solide Leistung.", erstesModell.beschreibungUndVorteile); assertEquals("175 Milliarden", erstesModell.groesse); assertEquals("November 2022", erstesModell.veroeffentlichungsdatum); assertFalse(erstesModell.kannFotosErzeugen, "GPT-3.5 sollte keine Fotos erzeugen können."); } @Test void testFotoErzeugungBeiPplx7bOnline() { var fotoModell = modelle.stream().filter(m -> m.modell.equals("pplx-7b-online")).findFirst().orElse(null); assertNotNull(fotoModell, "Das Modell pplx-7b-online sollte existieren."); assertTrue(fotoModell.kannFotosErzeugen, "pplx-7b-online sollte Fotos erzeugen können."); } @Test void testFotoErzeugungBeiPplx70bOnline() { var fotoModell = modelle.stream().filter(m -> m.modell.equals("pplx-70b-online")).findFirst().orElse(null); assertNotNull(fotoModell, "Das Modell pplx-70b-online sollte existieren."); assertTrue(fotoModell.kannFotosErzeugen, "pplx-70b-online sollte Fotos erzeugen können."); } } |
Damit das Projekt auch JSon lesen kann, wird in der pom.xml noch ein eintrag benötigt:
1 2 3 4 5 |
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency> |
Den ganzen Code gibt es auch auf GitLab.