Files
2026-10-17 23:19:32 +02:00

89 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Together-Sync
Serverlose Chat-Modelle von Together.ai direkt in die OpenCode-Konfiguration übernehmen.
Das Skript `together-sync` lädt die aktuellen Modelle von `https://api.together.xyz/v1/models?serverless=true` (nur Typ `chat`), bietet sie zur Auswahl an und schreibt die getroffene Auswahl als vollständigen Sync in `~/.config/opencode/opencode.jsonc` unter `providers.togetherai.models`.
## Hintergrund
OpenCode bezieht seinen Modelkatalog aus der Community-Datenbank [models.dev](https://models.dev/providers/togetherai). Dort sind etwa 30 Modelle für `togetherai` gelistet, gegenüber über 200 Serverless-Modellen bei [Together.ai](https://www.together.ai/models). Wie in den OpenCode-Dokumenten beschrieben, wird der Katalog aus Models.dev generiert – nur dort vorhandene Modelle erscheinen im `/models`-Picker.
Das ist bewusst so gestaltet: Nur wenige Modelle eignen sich gleichermaßen für Codegenerierung und Tool-Calling. OpenCode stellt daher gezielt getestete, für das Programmieren geeignete Modelle bereit. Neue Together-Releases benötigen erst einen PR auf `models.dev` und ein OpenCode-Release, bevor sie nativ verfügbar sind, während Together sein Serverless-Angebot kontinuierlich aktualisiert.
Dieses Skript überbrückt die Lücke, indem es die Live-API direkt abfragt und die ausgewählten Modelle mit passenden `limit`- und `cost`-Angaben in die `opencode.jsonc` einträgt – ohne manuelle Pflege.
## Voraussetzungen
- Python 3 (nur Standardbibliothek)
- Together.ai-API-Schlüssel
- OpenCode (optional, nur für die Vorauswahl beim Erstlauf)
- Optional: `zenity` für grafischen Dialog, sonst Terminal
## Authentifizierung
Reihenfolge der Schlüsselsuche:
1. Umgebungsvariable `TOGETHER_API_KEY`
2. `~/.local/share/opencode/auth.json` unter `togetherai.key`
```bash
export TOGETHER_API_KEY="tgp_..."
```
## Installation
```bash
git clone git@git.tim-peters.org:Tim/Opencode-TogetherAI.git
cd Opencode-TogetherAI
chmod +x together-sync
# Optional ins PATH legen
ln -s "$PWD/together-sync" ~/.local/bin/together-sync
```
## Anwendung
```bash
./together-sync
```
Ablauf:
1. Lädt alle verfügbaren Serverless-Chat-Modelle.
2. Vorauswahl: bereits konfigurierte Modelle; beim Erstlauf (leere Config) die von OpenCode angebotenen Together-Modelle über `opencode api`.
3. Auswahl-Dialog:
- **Mit `zenity`**: Checkliste mit Modell, Kontextlänge und Preis ($/Mio. Input→Output)
- **Ohne `zenity`**: nummerierte Terminal-Liste mit Eingabe wie `1,3,7`, `a` für alle, leer zum Abbrechen
4. Abbruch oder leere Auswahl ändert nichts.
5. Die bestätigte Auswahl ersetzt `providers.togetherai.models` vollständig. Vorher wird automatisch ein Backup als `opencode.jsonc.bak-YYYYMMDD-HHMMSS` erstellt.
### Konfigurationsausgabe
Für jedes Modell wird ein Eintrag erzeugt:
```json
{
"providers": {
"togetherai": {
"models": {
"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo": {
"name": "Meta-Llama-3.1-405B-Instruct-Turbo",
"limit": { "context": 131072 },
"cost": { "input": 3.5, "output": 3.5, "cache_read": 0.5 }
}
}
}
}
}
```
Andere Top-Level-Schlüssel in `opencode.jsonc` bleiben unverändert. Eine unveränderte Auswahl wird erkannt und nicht erneut geschrieben.
## Pfade
| Pfad | Zweck |
|------|-------|
| `~/.config/opencode/opencode.jsonc` | OpenCode-Konfiguration |
| `~/.local/share/opencode/auth.json` | Fallback für den API-Schlüssel |
Die Pfade sind im Skript als `CONFIG` und `AUTH` definiert.