fix(gtm): Replace risky ternary operators in f-strings with explicit if/else blocks to fix SyntaxError

This commit is contained in:
2025-12-31 14:23:45 +00:00
parent a625e9e811
commit e2cfb4f2ae
2 changed files with 33 additions and 15 deletions

View File

@@ -51,15 +51,20 @@ Das Projekt nutzt ein geteiltes `helpers.py`, das auf der alten OpenAI Python Li
openai==0.28.1
# weitere deps...
### 1.5 Python Syntax & F-Strings
Multi-Line f-Strings mit JSON-Beispielen (`{...}`) sind extrem fehleranfällig (Escaping, Einrückung).
* **Best Practice:** Komplexe JSON-Daten oder Strings **vorher** in Variablen speichern und dann einfügen.
Multi-Line f-Strings sind in Docker-Umgebungen fehleranfällig.
* **Vermeide:** Ternary Operators (`... if x else ...`) innerhalb von Multi-Line f-Strings. Dies führt oft zu `SyntaxError: invalid decimal literal`.
* **Best Practice:** Nutze explizite `if/else` Blöcke zur Definition des Prompts.
* **Vermeide:** Verschachtelte JSON-Dumps (`{...}`) direkt im f-String. Nutze vorher definierte Variablen.
```python
# Schlecht:
prompt = f"""Daten: {json.dumps(data.get('nested'))}"""
prompt = f"""Daten: {json.dumps(data)}""" if lang=='de' else f"""Data: ..."""
# Gut:
nested_json = json.dumps(data.get('nested'))
prompt = f"""Daten: {nested_json}"""
json_data = json.dumps(data)
if lang == 'de':
prompt = f"""Daten: {json_data}"""
else:
prompt = f"""Data: {json_data}"""
```
* **Signaturen prüfen:** Shared Libraries (`helpers.py`) haben oft ältere Signaturen.
* Beispiel: `call_openai_chat` unterstützt oft kein `system_message` Argument. Stattdessen Prompt manuell zusammenbauen (`sys_instr + "\n\n" + prompt`).