Add batch-llm module: 100,000 synthetic tickets classified by a ChatClient in a Spring Batch 6 chunk step with Resilience4j rate limiting and retry, skip-and-record for malformed JSON, restart after kill -9 in a second JVM, and a per-chunk cost ledger. The model is a deterministic simulated ChatModel; prices are configurable placeholders. No provider called.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b4VQVEJWetTT1dYzyJ
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
# One uninterrupted run, 100000 tickets (java -jar, fresh H2 file, fresh provider meter)
|
||||
|
||||
START run.id=clean tickets=100000 chunk=100
|
||||
JOB FINISHED: executionId=1 status=COMPLETED seconds=55.2
|
||||
---- REPORT ----
|
||||
tickets total=100000 classified=99691 skipped=309 unaccounted=0
|
||||
step executions:
|
||||
{ID=1, JOB=1, STATUS=COMPLETED, READS=100000, WRITES=99691, SKIPS=309, COMMITS=1000, ROLLBACKS=0}
|
||||
ledger (committed chunks only): {ROWS_=1000, WRITTEN=99691, SKIPPED=309, ATTEMPTS=103519, R429=1531, U503=458, RETRIES=1989, BILLED=101530, BAD=1839, PT=10809111, CT=1467192, COST=7.605343500}
|
||||
price table 'EXAMPLE-NOT-A-REAL-PRICE': input 0.50 / output 1.50 per million tokens (configurable placeholder)
|
||||
provider's own meter (survives kill -9):
|
||||
received 103,519
|
||||
rejected_429 1,531
|
||||
window_429 0
|
||||
unavailable_503 458
|
||||
billed 101,530
|
||||
prompt_tokens 10,809,111
|
||||
completion_tokens 1,467,192
|
||||
billed calls the ledger does not know about (work lost in a crash or rollback): 0
|
||||
results checksum (sha-256 over ordered rows): 98bdd29feb6d6f8d
|
||||
Reference in New Issue
Block a user