DBeaver Proxy to Mistral
Ein kleiner FastAPI-Proxy, der DBeaver CE (und andere OpenAI-kompatible Clients) mit der Mistral-API funktionieren lässt.

Über DBeaver Proxy zu Mistral
DBeaver Proxy zu Mistral ist ein kleiner FastAPI-Proxy, der DBeaver CE (und andere OpenAI-kompatible Clients) mit der Mistral-API funktionieren lässt.
Der KI-Assistent von DBeaver spricht eine OpenAI-ähnliche API, erwartet jedoch einige sehr spezifische JSON-Felder und SSE-Ereignistypen. Dieser Proxy:
- Bietet OpenAI-kompatible Endpunkte (
/responses,/models, veraltete/chat/completions) - Übersetzt
POST /responses(OpenAI Responses API-Format, das von DBeaver verwendet wird) in MistralPOST /chat/completions - Übersetzt Mistral-Antworten zurück in ein Payload, das DBeaver ohne
NullPointerExceptionparsen kann - Unterstützt Streaming (Server-Sent Events) und Nicht-Streaming
- Ist über Umgebungsvariablen konfigurierbar und kann als systemd-Service ausgeführt werden

Unterstützte Endpunkte
Der Proxy bietet die folgenden Endpunkte (sowohl Root als auch /v1/*-Aliase, wo anwendbar):
Modell-Endpunkte
GET /modelsGET /v1/models
Gibt eine Liste der beworbenen Modelle zurück (konfiguriert über MISTRAL_MODELS).
Antwort-Endpunkte
POST /responsesPOST /v1/responses
Akzeptiert eine DBeaver/OpenAI Responses API-Anfrage und leitet sie an Mistral chat/completions weiter.
Veraltete Endpunkte
POST /chat/completionsPOST /v1/chat/completions
Veraltete Weiterleitung an Mistral chat/completions (ohne Formatkonvertierung).
Konfiguration
Die Konfiguration erfolgt über Umgebungsvariablen. Sie können eine lokale .env-Datei (geladen über python-dotenv) verwenden oder Variablen in Ihrer Shell/systemd-Umgebung setzen.
Umgebungsvariablen
Erforderlich
MISTRAL_API_KEY
Optional
MISTRAL_BASE_URL– Standard:https://api.mistral.ai/v1MISTRAL_MODEL– Standard:mistral-large-latest(wird verwendet, wenn die Anfrage kein Modell angibt)MISTRAL_MODELS– Kommagetrennte Liste der Modell-IDs, die der Proxy überGET /modelsbekannt gibtHOST– Standard:0.0.0.0PORT– Standard:60916REQUEST_TIMEOUT_SECONDS– Standard:60
Hinweise zur Konfiguration
GET /modelsfunktioniert auch, wennMISTRAL_API_KEYnicht gesetzt ist- Jede Route, die die Mistral-API aufruft (
/responses,/chat/completions), gibt 401 zurück, wennMISTRAL_API_KEYfehlt
Lokale Entwicklung
Anforderungen
- Python 3.12+
Einrichtung
Konfiguration
Ausführung
Der Server lauscht standardmäßig auf http://0.0.0.0:60916.
Linting & Testen
Verwendung mit DBeaver
In DBeaver CE:
- Setzen Sie den OpenAI-Endpunkt/die Basis-URL auf:
http://<your-server>:60916/v1/ - Setzen Sie einen beliebigen Token-Wert (DBeaver erfordert einen), aber der Proxy verwendet
MISTRAL_API_KEYaus der Serverumgebung
DBeaver verwendet:
GET /v1/modelsPOST /v1/responses
Systemd-Service
Dieses Repository enthält eine Beispiel-Unit-Datei und eine Vorlage für eine Umgebungsdatei:
deploy/systemd/dbeaver-mistral-proxy.servicedeploy/systemd/dbeaver-mistral-proxy.env.example
Installation
- Erstellen Sie eine virtuelle Umgebung und installieren Sie die Abhängigkeiten (siehe lokale Entwicklung)
- Erstellen Sie die vom Service verwendete Umgebungsdatei:
- Installieren Sie die Unit-Datei:
Logs
Docker
Dieses Projekt kann als leichtgewichtiger Container ausgeführt werden.
Build
Ausführung (Docker)
Docker Compose
Versionierung und Releases
Dieses Projekt verwendet Semantic Versioning (SemVer) und Conventional Commits. Releases werden über python-semantic-release in GitHub Actions automatisiert.
Funktionsweise- Ein Push zu main löst den Release-Workflow aus
python-semantic-releaseanalysiert Commit-Nachrichten und bestimmt die nächste Version- Wenn ein Release erstellt wird, werden folgende Aktionen ausgeführt:
- Erstellt ein Git-Tag im Format
vX.Y.Z - Aktualisiert
project.versioninpyproject.toml - Generiert
CHANGELOG.mdaus Vorlagen - Veröffentlicht Docker-Images mit den Tags
latestundvX.Y.Z
- Erstellt ein Git-Tag im Format
Beispiele für Conventional Commits
feat(proxy): add tool_choice forwarding→ Minor-Version-Erhöhungfix(api): handle gzip bodies→ Patch-Version-Erhöhungperf(proxy): reduce allocations→ Patch-Version-Erhöhungdocs: update readme→ Keine Versionserhöhung
Breaking Changes
Füge BREAKING CHANGE: im Commit-Body hinzu, um eine Major-Version-Erhöhung auszulösen.
GitHub Actions Secrets
GITHUB_TOKEN– Wird automatisch von GitHub bereitgestelltRELEASE_TOKEN(optional) – PAT mit Berechtigungen zum Pushen von Commits/TagsDOCKERHUB_USERNAME(optional)DOCKERHUB_TOKEN(optional)
Hinweise zur Veröffentlichung
- Die Veröffentlichung in GHCR verwendet
github.tokenund wird ausgeführt, wenn ein Release erstellt wird. - Die Veröffentlichung in Docker Hub wird nur ausgeführt, wenn
DOCKERHUB_USERNAMEundDOCKERHUB_TOKENgesetzt sind.
Fehlerbehebung
DBeaver-Fehler: "HTTP/1.1 header parser received no bytes" / "Connection reset"
Dies deutet in der Regel darauf hin, dass der Proxy fehlgeschlagen ist, bevor eine Antwort geschrieben wurde.
Implementierte Abhilfemaßnahmen:
- Robustes Parsen von Anfragen für
/responsesund/chat/completions - Behandelt leere Request-Bodies und
Content-Encoding: gzip - Uvicorn wird gezwungen, die
h11-HTTP-Implementierung für bessere Kompatibilität zu verwenden
Debugging:
"Unsupported upgrade request" in den Logs
Dies kann auftreten, wenn ein Client ein Upgrade versucht (z. B. h2c/WebSocket-ähnliche Upgrades). Dies ist für die normale Nutzung von DBeaver erwartet und harmlos.
Technologie-Stack
- Python 3.12+ mit FastAPI für den Proxy-Server
- Mistral-AI-API-Integration für KI-Completions
- DBeaver CE-Kompatibilitätsschicht
- Docker für containerisierte Bereitstellung
- Systemd für das Linux-Service-Management
- Semantic Versioning mit Conventional Commits für automatisierte Releases
DBeaver Proxy zu Mistral bietet eine nahtlose Brücke zwischen den OpenAI-kompatiblen API-Erwartungen von DBeaver und der Mistral-API. Dadurch können Entwickler die KI-Funktionen von Mistral direkt in DBeaver CE nutzen.