Skip to content

Commit cdfa1a3

Browse files
committed
log per-call token usage via TOKENS channel
1 parent b3caa35 commit cdfa1a3

2 files changed

Lines changed: 18 additions & 5 deletions

File tree

zsmith/src/main/java/airhacks/zsmith/claude/control/Claude.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,24 @@ static HttpResponse<String> sendInstrumented(String message, String model, boole
147147
var event = new ClaudeAPICallEvent();
148148
event.begin();
149149
var response = send(message);
150+
event.model = model;
151+
event.fallback = fallback;
152+
event.statusCode = response.statusCode();
153+
populateUsage(event, response);
154+
logTokens(event);
150155
if (event.shouldCommit()) {
151-
event.model = model;
152-
event.fallback = fallback;
153-
event.statusCode = response.statusCode();
154-
populateUsage(event, response);
155156
event.commit();
156157
}
157158
return response;
158159
}
159160

161+
static void logTokens(ClaudeAPICallEvent event) {
162+
if (event.statusCode != 200) return;
163+
Log.tokens("in=%d out=%d cache_read=%d cache_create=%d".formatted(
164+
event.inputTokens, event.outputTokens,
165+
event.cacheReadTokens, event.cacheCreationTokens));
166+
}
167+
160168
static void populateUsage(ClaudeAPICallEvent event, HttpResponse<String> response) {
161169
if (response.statusCode() != 200) {
162170
return;

zsmith/src/main/java/airhacks/zsmith/logging/control/Log.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public enum Log {
2020
MEMORY("🧠", Color.YELLOW, System.out),
2121
REQUEST("📤", Color.GREEN, System.out, "log.request"),
2222
RESPONSE("📥", Color.VIOLET, System.out, "log.response"),
23-
LLM("🧩", Color.CYAN, System.out, "log.llm");
23+
LLM("🧩", Color.CYAN, System.out, "log.llm"),
24+
TOKENS("🪙", Color.YELLOW, System.out);
2425

2526
private PrintStream out;
2627

@@ -152,6 +153,10 @@ public static void llm(String message) {
152153
Log.LLM.out(message);
153154
}
154155

156+
public static void tokens(String message) {
157+
Log.TOKENS.out(message);
158+
}
159+
155160
public static void clearScreen() {
156161
System.out.println("\033c");
157162
}

0 commit comments

Comments
 (0)