Lots of runs
This commit is contained in:
@@ -51,10 +51,22 @@ for zeile in io.open(pfad, encoding='utf-8'):
|
||||
inhalt = c.get('content')
|
||||
if isinstance(inhalt, list):
|
||||
inhalt = ' '.join(str(x.get('text', '')) for x in inhalt if isinstance(x, dict))
|
||||
ergebnisse[c.get('tool_use_id')] = len(str(inhalt or ''))
|
||||
ergebnisse[c.get('tool_use_id')] = str(inhalt or '')
|
||||
|
||||
# Ein Aufruf, der am Nebenlaeufigkeitslimit scheitert, erscheint im Transkript wie ein
|
||||
# regulaerer Subagenten-Start, ist aber keiner: Er liefert nur die Absage zurueck und
|
||||
# zaehlt nicht in `subagent_stats.spawned`. Ohne diese Trennung meldet der Abgleich eine
|
||||
# Abweichung, die es nicht gibt (Lauf Iteration 3/.../125032_v4.4.0-fb24: 21 gefundene
|
||||
# Aufrufe gegenueber 13 erwarteten - die Differenz waren 8 Absagen).
|
||||
ABSAGE = 'Concurrent subagent limit reached'
|
||||
|
||||
for a in aufrufe:
|
||||
a['ergebnis_zeichen'] = ergebnisse.get(a['id'])
|
||||
txt = ergebnisse.get(a['id']) or ''
|
||||
a['ergebnis_zeichen'] = len(txt)
|
||||
a['abgewiesen'] = ABSAGE in txt
|
||||
|
||||
abgewiesen = [a for a in aufrufe if a['abgewiesen']]
|
||||
echte = [a for a in aufrufe if not a['abgewiesen']]
|
||||
|
||||
meta = os.path.join(lauf, '_meta')
|
||||
os.makedirs(meta, exist_ok=True)
|
||||
@@ -65,15 +77,27 @@ md = ['# Subagenten-Aufrufe', '',
|
||||
'Session `%s`, Transkript `%s`.' % (sid, os.path.basename(pfad)),
|
||||
'',
|
||||
'`subagent_stats`: **%s** Subagenten gesamt, davon **%s** von Subagenten gestartet '
|
||||
'(max_depth %s). Direkt vom Hauptagenten erwartet: **%s**. Im Transkript gefunden: **%s**.'
|
||||
% (gesamt, verschachtelt, stats.get('max_depth'), erwartet, len(aufrufe)), '']
|
||||
'(max_depth %s). Direkt vom Hauptagenten erwartet: **%s**. Im Transkript gefunden: '
|
||||
'**%s** echte Starts%s.'
|
||||
% (gesamt, verschachtelt, stats.get('max_depth'), erwartet, len(echte),
|
||||
' und **%d** am Nebenlaeufigkeitslimit abgewiesene Aufrufe' % len(abgewiesen)
|
||||
if abgewiesen else ''), '']
|
||||
if verschachtelt:
|
||||
md += ['> Die %s von Subagenten gestarteten Aufrufe stehen in deren eigenen Transkripten und'
|
||||
' sind hier **nicht** enthalten.' % verschachtelt, '']
|
||||
if erwartet != len(aufrufe):
|
||||
md += ['> **Abweichung** zwischen erwarteter und gefundener Anzahl.',
|
||||
if abgewiesen:
|
||||
md += ['> **%d Aufrufe wurden am Nebenlaeufigkeitslimit abgewiesen** '
|
||||
'(`subagent_stats.refused.concurrency_limit` = %s) und sind unten **nicht** '
|
||||
'aufgefuehrt. Sie erscheinen im Transkript wie regulaere Starts, liefern aber nur '
|
||||
'die Absage zurueck und zaehlen nicht in `spawned`. Fuer die Auswertung der '
|
||||
'selbstgewaehlten Zerlegung sind sie dennoch aufschlussreich: Der Hauptagent wollte '
|
||||
'staerker parallelisieren, als das Werkzeug zuliess.'
|
||||
% (len(abgewiesen), stats.get('refused', {}).get('concurrency_limit', '?')), '']
|
||||
if erwartet != len(echte):
|
||||
md += ['> **Abweichung** zwischen erwarteter (%s) und gefundener Anzahl echter Starts (%s).'
|
||||
% (erwartet, len(echte)),
|
||||
'> Ursache pruefen, bevor die Prompts ausgewertet werden.', '']
|
||||
for i, a in enumerate(aufrufe, 1):
|
||||
for i, a in enumerate(echte, 1):
|
||||
md += ['## %d. %s' % (i, a['description'] or '(ohne Beschreibung)'),
|
||||
'',
|
||||
'- **Werkzeug:** `%s` **Typ:** `%s` **Hintergrund:** %s'
|
||||
@@ -83,8 +107,10 @@ for i, a in enumerate(aufrufe, 1):
|
||||
'', '### Prompt', '', '```', a['prompt'].rstrip(), '```', '']
|
||||
io.open(os.path.join(meta, 'subagenten.md'), 'w', encoding='utf-8').write('\n'.join(md))
|
||||
|
||||
print('Subagenten gefunden: %d (direkt erwartet: %s, gesamt: %s, davon verschachtelt: %s)' % (len(aufrufe), erwartet, gesamt, verschachtelt))
|
||||
for a in aufrufe:
|
||||
print('Subagenten gefunden: %d echte%s (direkt erwartet: %s, gesamt: %s, davon verschachtelt: %s)'
|
||||
% (len(echte), (', %d abgewiesen' % len(abgewiesen)) if abgewiesen else '',
|
||||
erwartet, gesamt, verschachtelt))
|
||||
for a in echte:
|
||||
print(' - %-42s %s Prompt %6d Z. Ergebnis %s Z.'
|
||||
% ((a['description'] or '')[:42], a['subagent_type'], len(a['prompt']), a['ergebnis_zeichen']))
|
||||
print('geschrieben:', os.path.join(meta, 'subagenten.md'))
|
||||
|
||||
Reference in New Issue
Block a user