fix(livia): effort-Schalter nur an Modelle, die ihn kennen
Nach der Umstellung auf Haiku 4.5 scheiterte jeder Beurteilungsaufruf mit «This model does not support the effort parameter». Der Schalter war für Opus gesetzt und wurde bedingungslos mitgeschickt — bei einem Modell, das über eine Umgebungsvariable frei wählbar ist, darf das nicht sein. Eine Kostenoptimierung, die die Funktion zur Laufzeit kaputtmacht, ist keine. Der Schalter geht jetzt nur noch an Modelle, die ihn kennen. Bewusst als Erlaubnisliste: ein unbekanntes Modell läuft ohne ihn — das kostet etwas mehr, funktioniert aber. Die umgekehrte Voreinstellung würde raten und scheitern. Ergebnis des ersten vollständigen Haiku-Laufs auf Produktion: 49 Einträge, 38 verworfen, 2 Watchlist, 9 Leads, davon 5 mit hoher Relevanz — mehr als Opus 5 im Vergleichslauf am selben Bestand fand, bei einem Zehntel der Kosten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
f0ef9c57d4
commit
f2926d6bcb
1 file changed
+21
-2
@@ -113,6 +113,24 @@ export const MODEL = process.env.LIVIA_RESEARCH_MODEL ?? 'claude-opus-5'
|
|||||||
*/
|
*/
|
||||||
const TEXT_LIMIT = Number(process.env.LIVIA_RESEARCH_TEXT_LIMIT ?? 2000)
|
const TEXT_LIMIT = Number(process.env.LIVIA_RESEARCH_TEXT_LIMIT ?? 2000)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Welche Modelle den `effort`-Schalter kennen.
|
||||||
|
*
|
||||||
|
* Nicht alle tun das: Haiku 4.5 weist die Anfrage mit «This model does not
|
||||||
|
* support the effort parameter» ab. Da das Modell über eine Umgebungsvariable
|
||||||
|
* frei wählbar ist, darf der Schalter nicht bedingungslos mitgeschickt werden —
|
||||||
|
* sonst macht eine Kostenoptimierung die Funktion kaputt, und zwar erst zur
|
||||||
|
* Laufzeit.
|
||||||
|
*
|
||||||
|
* Bewusst als Erlaubnisliste: Ein unbekanntes Modell läuft dann ohne den
|
||||||
|
* Schalter. Das kostet etwas mehr, funktioniert aber — die umgekehrte
|
||||||
|
* Voreinstellung würde raten und scheitern.
|
||||||
|
*/
|
||||||
|
const EFFORT_MODELS = /^claude-(fable|mythos|opus|sonnet)-/
|
||||||
|
function supportsEffort(model: string): boolean {
|
||||||
|
return EFFORT_MODELS.test(model)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wie viele Teilstapel gleichzeitig beurteilt werden.
|
* Wie viele Teilstapel gleichzeitig beurteilt werden.
|
||||||
*
|
*
|
||||||
@@ -148,8 +166,9 @@ async function analyzeBatch(
|
|||||||
max_tokens: 8000,
|
max_tokens: 8000,
|
||||||
system: SYSTEM_PROMPT,
|
system: SYSTEM_PROMPT,
|
||||||
// Einordnen ist bei fünf Einträgen eine Routineaufgabe — die niedrige Stufe
|
// Einordnen ist bei fünf Einträgen eine Routineaufgabe — die niedrige Stufe
|
||||||
// spart Zeit und Kosten, ohne das Modell zu wechseln.
|
// spart Zeit und Kosten. Nur die grossen Modelle kennen den Schalter; bei
|
||||||
output_config: { effort: 'low' },
|
// den kleineren wird die Anfrage sonst abgewiesen (siehe SUPPORTS_EFFORT).
|
||||||
|
...(supportsEffort(MODEL) ? { output_config: { effort: 'low' as const } } : {}),
|
||||||
messages: [{ role: 'user', content: eingabe }],
|
messages: [{ role: 'user', content: eingabe }],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user