chore(llm): refresh defaults to match deployed Jetson backend #2
13
README.md
13
README.md
@@ -125,15 +125,16 @@ Provider-Wechsel = **nur Env**, kein Code-Change (`scripts/llm.py`). Anthropic-V
|
||||
|
||||
## Konfiguration (Env-Vars)
|
||||
|
||||
> Hinweis: Die **Code-Defaults in `llm.py` sind noch der alte Stand** (Anthropic, Jetson-IP
|
||||
> `.20`, `qwen-light`). Im Betrieb überschreiben Workflows + Bot diese per Env mit den
|
||||
> Jetson-Werten (`ollama` / `coder` / `.103`). Ein Refresh der Defaults ist vorgemerkt.
|
||||
> Hinweis: Die **Code-Defaults in `llm.py` entsprechen jetzt dem Jetson-Betrieb**
|
||||
> (`ollama` / `coder` / `.103`). Workflows + Bot setzen die Werte trotzdem explizit
|
||||
> per Env — ein Provider-Wechsel (z.B. zurück auf `anthropic`) bleibt damit ein
|
||||
> reiner Env-Change, keine Code-Änderung.
|
||||
|
||||
| Var | Default (`llm.py`) | Im Betrieb |
|
||||
|---|---|---|
|
||||
| `AI_PROVIDER` | `anthropic` | **`ollama`** |
|
||||
| `AI_MODEL` | `claude-3-5-haiku-latest` / `qwen-light` | **`coder`** |
|
||||
| `AI_BASE_URL` | `http://192.168.178.20:11434/v1` *(veraltet)* | **`…178.103…`** |
|
||||
| `AI_PROVIDER` | `ollama` | `ollama` |
|
||||
| `AI_MODEL` | `coder` (ollama) / `claude-3-5-haiku-latest` (anthropic) | `coder` |
|
||||
| `AI_BASE_URL` | `http://192.168.178.103:11434/v1` | `…178.103…` |
|
||||
| `JETSON_API_KEY` | — | Bearer für Ollama (optional) |
|
||||
| `ANTHROPIC_API_KEY` | — | nur bei provider=anthropic |
|
||||
| `GITEA_API` | `https://git.eulernest.eu/api/v1` | Bot: intern `http://gitea:3000/api/v1` |
|
||||
|
||||
@@ -4,18 +4,18 @@ Bewusst NUR stdlib (urllib) — so braucht der CI-Job kein `pip install` und
|
||||
läuft in jedem schlanken Python-Image sofort.
|
||||
|
||||
Umschalten zwischen Backends über Env-Vars:
|
||||
AI_PROVIDER=anthropic -> api.anthropic.com/v1/messages (Claude, jetzt)
|
||||
AI_PROVIDER=ollama -> <AI_BASE_URL>/chat/completions (Jetson, später)
|
||||
AI_PROVIDER=ollama -> <AI_BASE_URL>/chat/completions (Jetson, self-hosted, Default)
|
||||
AI_PROVIDER=anthropic -> api.anthropic.com/v1/messages (Claude, optional)
|
||||
|
||||
Weitere Env-Vars:
|
||||
AI_MODEL Modellname (Default je nach Provider)
|
||||
ANTHROPIC_API_KEY (für anthropic)
|
||||
AI_MODEL Modellname (Default je nach Provider; ollama: "coder" = qwen2.5-coder:7b)
|
||||
AI_BASE_URL OpenAI-kompatible Basis-URL (für ollama),
|
||||
Default http://192.168.178.20:11434/v1
|
||||
Default http://192.168.178.103:11434/v1
|
||||
JETSON_API_KEY Bearer-Token (für ollama, optional)
|
||||
ANTHROPIC_API_KEY (für anthropic)
|
||||
|
||||
Der Wechsel auf den Jetson ist damit ein reiner Env-Change in der Workflow-
|
||||
Datei — KEINE Code-Änderung.
|
||||
Provider-Wechsel ist damit ein reiner Env-Change in der Workflow-Datei
|
||||
— KEINE Code-Änderung.
|
||||
"""
|
||||
import json
|
||||
import os
|
||||
@@ -29,7 +29,7 @@ def configured():
|
||||
Erlaubt den Workflows, den KI-Schritt sauber zu ÜBERSPRINGEN (exit 0) statt
|
||||
zu failen, solange z.B. noch kein ANTHROPIC_API_KEY hinterlegt ist.
|
||||
"""
|
||||
provider = os.environ.get("AI_PROVIDER", "anthropic").lower()
|
||||
provider = os.environ.get("AI_PROVIDER", "ollama").lower()
|
||||
if provider == "anthropic":
|
||||
if not os.environ.get("ANTHROPIC_API_KEY"):
|
||||
return False, "ANTHROPIC_API_KEY ist nicht gesetzt"
|
||||
@@ -41,12 +41,12 @@ def configured():
|
||||
|
||||
def complete(system: str, user: str, *, max_tokens: int = 1500) -> str:
|
||||
"""Schickt (system, user) ans konfigurierte Backend, gibt reinen Text zurück."""
|
||||
provider = os.environ.get("AI_PROVIDER", "anthropic").lower()
|
||||
provider = os.environ.get("AI_PROVIDER", "ollama").lower()
|
||||
if provider == "anthropic":
|
||||
model = os.environ.get("AI_MODEL", "claude-3-5-haiku-latest")
|
||||
return _anthropic(system, user, model, max_tokens)
|
||||
if provider == "ollama":
|
||||
model = os.environ.get("AI_MODEL", "qwen-light")
|
||||
model = os.environ.get("AI_MODEL", "coder")
|
||||
return _ollama_openai(system, user, model, max_tokens)
|
||||
raise SystemExit(f"[llm] Unbekannter AI_PROVIDER: {provider!r}")
|
||||
|
||||
@@ -88,7 +88,7 @@ def _anthropic(system: str, user: str, model: str, max_tokens: int) -> str:
|
||||
|
||||
|
||||
def _ollama_openai(system: str, user: str, model: str, max_tokens: int) -> str:
|
||||
base = os.environ.get("AI_BASE_URL", "http://192.168.178.20:11434/v1").rstrip("/")
|
||||
base = os.environ.get("AI_BASE_URL", "http://192.168.178.103:11434/v1").rstrip("/")
|
||||
headers = {"content-type": "application/json"}
|
||||
key = os.environ.get("JETSON_API_KEY", "")
|
||||
if key:
|
||||
|
||||
Reference in New Issue
Block a user