David ist Spezialist für Schallplatten. Sie können ihn um eine Empfehlung oder zusätzliche Informationen zu den Platten in Ihrer Discogs-Sammlung bitten. David hilft Ihnen gerne weiter.
Diese LLM-Anwendung ist ein einfaches Beispiel für einen Konversationsagenten, der die Discogs-API verwendet, um Informationen über Schallplatten bereitzustellen. Es besteht aus 4 Hauptbausteinen:
Derzeit wird LangChain4j als Framework mit GPT-4o als KI-Assistenten-Engine verwendet, es kann jedoch problemlos an die Verwendung anderer Engines angepasst werden.
Die Anwendungsarchitektur aus dem folgenden Diagramm wird vom ArchUnit-Framework durch Tests in der ArchitectureTest-Klasse erzwungen.
Die Benutzeroberfläche für dieses Projekt wurde mit der folgenden Eingabeaufforderung entwickelt:
I need the code for an HTML 5 page that contains an input field for a Discogs username
and a text area for inserting prompts for the application to send to AI agents.
Above the text area there should be the space in which the AI responses are displayed, in the ChatGPT style
Der generierte HTML5-Code von GitHub Copilot lieferte die ersten visuellen Elemente für die Benutzeroberfläche, die ich dann modifizierte, um die Websocket-Verbindung und die Logik zum Senden und Empfangen von Nachrichten vom KI-Assistenten hinzuzufügen. Ich fand, dass dies ein sehr schneller Ansatz für die Prototypenerstellung ist. Dann bin ich auf robustere Komponenten von Ant-Design umgestiegen, einschließlich Pro-Chat.
Ursprünglich wollte ich Lama3 verwenden. Das llama3-Modell bietet derzeit keine Unterstützung für Tools (Juni 2024). Das bedeutet, dass der KI-Assistent den Discogs-Benutzernamen nicht erfassen und die Plattensammlung nicht selbstständig abrufen kann. Wir sind auf GPT-4o umgestiegen, damit David nach Discogs-Informationen fragen kann und keine Formulare mehr erforderlich sind.
Einige LLMs sind nicht so intelligent wie andere. Obwohl das Mistral 7b-Modell Tools unterstützt, konnte ich keine guten Antworten daraus erhalten. Es würde nicht einmal meine Integrationstests bestehen. Damit war es mir nicht möglich, ein LLM mit kostenlosen Tools durchzuführen.
Halluzinationen sind schmerzhaft. Ich beginne meine Reise in RAG, um es zu minimieren. Da David im Bereich Musik tätig ist, ist Wikipedia die erste Wissensdatenbank, die RAG in den Sinn kommt. Vielleicht kann ich die MediaWiki-API nutzen, um Musikseiten zu durchsuchen, die für die Konversation relevant sind. Im Moment verwende ich nur die Google-Suche und sie hilft manchmal, reicht aber angesichts der mit Token verbundenen Kosten definitiv nicht aus.
Das Testen der LLM-Anwendung war eine Herausforderung. Ich habe mehr Integrationstests als üblich durchgeführt. Dies führte zu einem langsameren Entwicklungszyklus. Außerdem erschwert die probabilistische Natur des KI-Assistenten das deterministische Testen der Anwendung.
In der LLM-Welt geht es bei Unit-Tests darum, ein KI-Modell aufzurufen, anstatt nur eine Codeeinheit aufzurufen. Bei Verwendung eines cloudbasierten Modells ist die Durchführung von Unit-Tests mit Kosten verbunden. Ich habe auch mit der Verwendung eines zweiten KI-Agenten experimentiert, um die Ergebnisse der Haupt-KI zu ermitteln. Dies ist ein vielversprechender Ansatz, da wir semantische Aussagen machen können und nicht nur die Verarbeitung von Zeichenfolgen. Der Nachteil dabei ist, dass es auch Kosten verursacht und das Risiko von Wahrscheinlichkeitsfehlern erhöht, die durch LLMs entstehen.
Sie benötigen einen gültigen OpenAI-API-Schlüssel, um diese Anwendung auszuführen.
./gradlew bootRun
aus, um die Anwendung zu starten.http://localhost:8080
in Ihrem Browser, um mit dem KI-Assistenten zu interagieren.