feat: Prompt-Cache nutzbar und messbar; Grundsatzfrage Einzelaufruf gegen Stufenkette
OpenRouter-Aufrufe eines Laufs tragen eine gemeinsame session_id (Sticky Routing, damit der Anbieter-Cache greifen kann); Cache-Treffer werden je Aufruf und Stufe erfasst und im Log als Anteil ausgewiesen. docs/Konzeptionelle_Fragen_und_Antworten.md hält Pipeline-Stufen und die Abwägung ein Aufruf vs. Kette mit Messdaten und Quellen fest. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
6af1d34842
commit
eadf0608ce
1 changed files with 221 additions and 6 deletions
|
|
@ -202,11 +202,14 @@ def _log_usage(session, result: PipelineResult) -> None:
|
|||
result.usage = session.usage
|
||||
cost = f", Kosten ${session.usage.cost_usd:.4f}" if session.usage.cost_usd is not None else ""
|
||||
providers = f", Anbieter: {session.usage.providers}" if session.usage.providers else ""
|
||||
log(f"LLM-Nutzung: {session.usage.calls} Aufrufe, {session.usage.prompt_tokens} Input-/"
|
||||
f"{session.usage.completion_tokens} Output-Tokens (davon {session.usage.reasoning_tokens} Reasoning){cost}{providers}")
|
||||
usage = session.usage
|
||||
cache = (f" (davon {usage.cached_tokens} aus dem Cache, {100 * usage.cached_tokens / usage.prompt_tokens:.0f} %)"
|
||||
if usage.prompt_tokens else "")
|
||||
log(f"LLM-Nutzung: {usage.calls} Aufrufe, {usage.prompt_tokens} Input-{cache}/"
|
||||
f"{usage.completion_tokens} Output-Tokens (davon {usage.reasoning_tokens} Reasoning){cost}{providers}")
|
||||
for step, data in session.usage.by_step().items():
|
||||
log(f" {step:18} {data['calls']}x {data['seconds']:6.1f} s {data['completion_tokens']:6} Output-Tokens "
|
||||
f"(davon {data['reasoning_tokens']} Reasoning)")
|
||||
f"(davon {data['reasoning_tokens']} Reasoning) {data['prompt_tokens']:6} Input (Cache {data['cached_tokens']})")
|
||||
|
||||
|
||||
def run_pipeline(
|
||||
|
|
|
|||
Loading…
Reference in a new issue