Schnellstart
Quelldateien
Diese Seite wurde aus den folgenden Quelldateien erstellt:
JoyAgent-JDGenIE ist eine Multi-Service-Architektur, die aus einem Frontend (UI), einem Java-Backend, einem Python-basierten Tool-Service und einem MCP-Client besteht. Das System ermöglicht die Integration von LLM-Modellen für verschiedene KI-gestützte Aufgaben.
Voraussetzungen und Umgebungsprüfung
Systemanforderungen
Das Projekt benötigt folgende Abhängigkeiten mit spezifischen Mindestversionen:
| Komponente | Mindestversion | Hinweis |
|---|---|---|
| Java | 17+ | Erforderlich für Backend-Service |
| Node.js | 18+ | Für Frontend-Build |
| pnpm | 7+ | Paketmanager für UI |
| Python | 3.11+ | Für Tool- und MCP-Services |
| Maven | 3.8+ | Java-Build-Tool |
Die detaillierte Installationsanleitung für macOS umfasst die Installation von Java via Homebrew (brew install maven) mit dem Pfad /opt/homebrew/Cellar/openjdk/24.0.1/libexec/openjdk.jdk/Contents/Home sowie alternative manuelle Installation über Oracle-Downloads (Deploy.md:3-31).
Automatische Abhängigkeitsprüfung
Das Projekt enthält ein automatisiertes Prüfskript, das alle Systemanforderungen validiert:
bash1chmod +x check_dep_port.sh 2./check_dep_port.sh
Das Skript check_dep_port.sh prüft automatisch die installierten Versionen von Java, Maven und Node.js. Es extrahiert die Versionsnummern und vergleicht sie mit den Mindestanforderungen (Java >= 17, Node.js >= 18). Bei erfolgreicher Prüfung erscheint eine grüne Bestätigungsmeldung, bei Fehlern eine rote Warnung (check_dep_port.sh:13-61).
Installation von uv für Python
Für die Python-basierten Services wird der Paketmanager uv benötigt:
bash1pip install uv
Dieser Manager wird für die Verwaltung virtueller Umgebungen und Abhängigkeiten der Tool- und MCP-Services verwendet.
Schnellstart mit Ein-Skript-Installation
Übersicht des automatisierten Starts
Das Projekt bietet ein umfassendes Startskript Genie_start.sh, das alle Komponenten automatisch konfiguriert und startet. Dieses Skript führt folgende Schritte aus:
- Konfigurationsprüfung und -validierung
- Initialisierung aller Komponenten
- Sequenzieller Start aller Dienste
正在加载图表渲染器...
Automatische Konfigurationsprüfung
Das Startskript validiert automatisch die Konfigurationsdateien vor dem Start. Es prüft, ob die Datei genie-backend/src/main/resources/application.yml existiert und ob Platzhalter wie <input llm server here> oder <input llm key here> ersetzt wurden. Ebenso wird die .env-Datei im genie-tool-Verzeichnis auf Platzhalter wie <your api key> geprüft (Genie_start.sh:55-95).
Falls die .env-Datei nicht existiert, wird automatisch die Vorlage .env_template kopiert:
bash1# Automatische Kopie durch das Skript 2cp genie-tool/.env_template genie-tool/.env
Initialisierung aller Komponenten
Die Initialisierung umfasst drei Hauptphasen:
- Backend-Build: Wechselt in
genie-backendund führtbuild.shaus - Datenbank-Initialisierung: Führt
python -m genie_tool.db.db_engineim Tool-Verzeichnis aus - Virtuelle Umgebungen: Erstellt Python-virtual-environments für Tool- und MCP-Services
bash1# Start des vollständigen Systems 2chmod +x Genie_start.sh 3./Genie_start.sh
Manueller Start der einzelnen Dienste
Frontend-Service
Der Frontend-Service wird im Verzeichnis ui gestartet:
bash1cd joyagent-jdgenie/ui && sh start.sh
Bei erfolgreicher Start erscheint die Meldung Local: http://localhost:3000/. Das Frontend ist dann unter dieser URL erreichbar (Deploy.md:32-52).
Backend-Service
Der Backend-Service erfordert einen Build-Schritt vor dem Start:
bash1cd joyagent-jdgenie/genie-backend && sh build.sh
Nach erfolgreichem Build erscheint [INFO] BUILD SUCCESS. Anschließend wird der Service gestartet:
bash1sh start.sh
Die Logs können über tail -f genie-backend_startup.log überwacht werden (Deploy.md:32-52).
Tool-Service und MCP-Service
Die Python-basierten Services werden mit uv verwaltet:
bash1# Tool-Service 2cd joyagent-jdgenie/genie-tool 3pip install uv 4uv sync 5source .venv/bin/activate 6python -m genie_tool.db.db_engine # Nur beim ersten Start 7cp .env_template .env 8uv run python server.py
bash1# MCP-Client-Service 2cd joyagent-jdgenie/genie-client 3uv venv 4source .venv/bin/activate 5sh start.sh
Docker-Deployment
Multi-Stage Docker-Build
Das Projekt enthält ein umfassendes Dockerfile mit Multi-Stage-Build für alle Komponenten:
| Stage | Basis-Image | Zweck |
|---|---|---|
| frontend-builder | node:20-alpine | Frontend-Build mit pnpm |
| backend-builder | maven:3.8-openjdk-17 | Java-Backend-Kompilierung |
| python-base | python:3.11-slim | Python-Umgebung |
| final | python:3.11-slim | Laufzeitumgebung |
Der Build-Prozess installiert zunächst pnpm global, konfiguriert npm mit einem chinesischen Mirror und führt den Frontend-Build durch. Anschließend wird das Java-Backend mit Maven kompiliert (Dockerfile:1-19).
Container-Konfiguration
Das finale Image konfiguriert:
- Volumes:
/data/genie-toolfür persistente Daten - Ports: 3000 (Frontend), 8080 (Backend), 1601 (MCP)
- Healthcheck: Prüft alle 30 Sekunden
http://localhost:3000
bash1# Docker-Image bauen 2docker build -t joyagent-jdgenie . 3 4# Container starten 5docker run -d \ 6 -p 3000:3000 \ 7 -p 8080:8080 \ 8 -p 1601:1601 \ 9 -e OPENAI_API_KEY=your_key \ 10 -e OPENAI_BASE_URL=your_url \ 11 joyagent-jdgenie
Container-Startskript
Das Container-Startskript start_genie.sh orchestriert alle Services innerhalb des Containers. Es startet das Frontend mit pnpm preview --host 0.0.0.0 --port 3000, führt das Backend-Startskript aus und initialisiert die Python-Services (start_genie.sh:1-61).
Konfiguration der LLM-API
Backend-Konfiguration
Die LLM-Konfiguration erfolgt in genie-backend/src/main/resources/application.yml. Die Konfiguration unterstützt mehrere Modelle mit folgenden Parametern:
yaml1settings: '{"claude-3-7-sonnet-v1": { 2 "model": "claude-3-7-sonnet-v1", 3 "max_tokens": 8192, 4 "temperature": 0, 5 "base_url": "<input llm server here>", 6 "apikey": "<input llm key here>", 7 "max_input_tokens": 128000 8}}'
Die Platzhalter <input llm server here> und <input llm key here> müssen durch die tatsächliche LLM-Server-URL und den API-Schlüssel ersetzt werden (Deploy.md:53-67).
Umgebungsvariablen
Die Tool-Services verwenden eine .env-Datei im Verzeichnis genie-tool:
| Variable | Beschreibung | Beispiel |
|---|---|---|
| OPENAI_API_KEY | LLM API-Schlüssel | sk-xxx |
| OPENAI_BASE_URL | LLM Server-URL | https://api.openai.com/v1 |
| SERPER_SEARCH_API_KEY | Serper Search API | Zu beantragen unter serper.dev |
Nach Änderungen an der Konfiguration ist ein erneuter Build und Neustart erforderlich:
bash1cd genie-backend && sh build.sh && sh start.sh
Laufzeitüberprüfung und Validierung
Dienst-Status prüfen
Nach dem Start sollten folgende Endpunkte erreichbar sein:
| Service | URL | Erwartete Antwort |
|---|---|---|
| Frontend | http://localhost:3000 | UI lädt |
| Backend | http://localhost:8080 | API-Response |
| Tool-Service | Intern | Prozess läuft |
Log-Überwachung
Das Backend schreibt Logs in genie-backend_startup.log. Die Überwachung erfolgt mit:
bash1tail -f genie-backend_startup.log
Docker-Healthcheck
Im Docker-Deployment prüft der integrierte Healthcheck die Frontend-Verfügbarkeit:
bash1# Healthcheck-Status anzeigen 2docker inspect --format='{{.State.Health.Status}}' <container_id>
Häufige Probleme und Lösungen
Problem 1: Java-Version nicht kompatibel
Symptom: Build schlägt fehl mit Java-Versionsfehler
Lösung: Java-Version prüfen und ggf. aktualisieren:
bash1java -version 2# Sollte >= 17 anzeigen 3 4# macOS mit Homebrew 5brew install openjdk
Problem 2: pnpm nicht gefunden
Symptom: Fehlermeldung beim Frontend-Start
Lösung: pnpm global installieren:
bash1npm install -g pnpm 2# oder 3curl -fsSL https://get.pnpm.io/install.sh | sh -
Problem 3: Konfigurationsplatzhalter nicht ersetzt
Symptom: Startskript bricht mit Fehlermeldung zu Platzhaltern ab
Lösung: Konfigurationsdateien manuell prüfen:
bash1# Backend-Konfiguration 2grep -n "input llm" genie-backend/src/main/resources/application.yml 3 4# Tool-Umgebungsvariablen 5grep -n "your api key" genie-tool/.env
Beide Befehle sollten keine Ergebnisse liefern, wenn die Konfiguration korrekt ist (Genie_start.sh:34-50).
Problem 4: Port bereits belegt
Symptom: Dienst startet nicht, Port-Konflikt
Lösung: Belegte Ports prüfen:
bash1# Ports 3000, 8080, 1601 prüfen 2lsof -i :3000 3lsof -i :8080 4lsof -i :1601
Problem 5: Virtuelle Python-Umgebung fehlerhaft
Symptom: Python-Module nicht gefunden
Lösung: Virtuelle Umgebung neu erstellen:
bash1cd genie-tool 2rm -rf .venv 3uv sync 4source .venv/bin/activate
Nächste Schritte
Nach erfolgreichem Start des Systems empfiehlt sich die Konsultation folgender Themenbereiche:
- API-Dokumentation: Detaillierte Beschreibung der verfügbaren Endpunkte und deren Parameter
- Modell-Konfiguration: Erweiterte Einstellungen für verschiedene LLM-Provider
- Tool-Entwicklung: Erstellung eigener Tools für das System
- Produktions-Deployment: Sicherheitshinweise und Skalierungsoptionen für den produktiven Einsatz
Die Konfiguration zusätzlicher Modelle in der application.yml ermöglicht die Nutzung verschiedener LLM-Provider parallel. Dabei können unterschiedliche Modelle für verschiedene Betriebsmodi (z.B. React-Modus) spezifiziert werden (Deploy.md:56-64).
