Skip to content

Commit 38fe102

Browse files
Type DecodedPayload.token_ids instead of an untyped extras bag
Replace the Dict[str, Any] `extras` field (only ever holding logprobs token_ids) with a typed `token_ids: Optional[List[int]]` field. Callers now get a real type (dp.token_ids) instead of Any from extras.get(...). Update adapter, tests, README. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 214fd2b commit 38fe102

5 files changed

Lines changed: 12 additions & 11 deletions

File tree

eval_protocol/adapters/fireworks_tracing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def convert_trace_dict_to_evaluation_row(
119119

120120
if (dp := decoded.get(PayloadType.LOGPROBS)) is not None:
121121
logprobs = dp.value
122-
token_ids = dp.extras.get("token_ids")
122+
token_ids = dp.token_ids
123123
execution_metadata.extra["completion_logprobs"] = logprobs
124124
if token_ids is not None:
125125
execution_metadata.extra["completion_token_ids"] = token_ids

eval_protocol/tracing/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ if PayloadType.PROMPT_TOKEN_IDS in decoded:
5151
if PayloadType.LOGPROBS in decoded:
5252
lp = decoded[PayloadType.LOGPROBS]
5353
logprobs = lp.value # List[float]
54-
token_ids = lp.extras.get("token_ids") # Optional[List[int]]
54+
token_ids = lp.token_ids # Optional[List[int]]
5555

5656
if PayloadType.ROUTER_REPLAY in decoded:
5757
matrices = decoded[PayloadType.ROUTER_REPLAY].value # List[Optional[str]]
@@ -90,14 +90,14 @@ decode_payloads(payloads, on_error=lambda pt, e: print(f"{pt} failed: {e}"))
9090
| `payload_type` | `PayloadType` enum member |
9191
| `value` | decoded value (type depends on `payload_type`, see below) |
9292
| `metadata` | decoded header/manifest metadata (token counts, scope, etc.) |
93-
| `extras` | type-specific extras (e.g. logprobs `token_ids`) |
93+
| `token_ids` | `Optional[List[int]]` — LOGPROBS per-token ids (else `None`) |
9494

9595
`value` by type:
9696

9797
| `PayloadType` | `value` | notes |
9898
|---------------------|--------------------------|----------------------------------------------|
9999
| `PROMPT_TOKEN_IDS` | `List[int]` | prompt token ids |
100-
| `LOGPROBS` | `List[float]` | per completion token; ids in `extras["token_ids"]` (or `None`) |
100+
| `LOGPROBS` | `List[float]` | per completion token; ids in `token_ids` (or `None`) |
101101
| `ROUTER_REPLAY` | `List[Optional[str]]` | per-token base64 routing matrices; `None` where absent |
102102

103103
## Adding a new payload type

eval_protocol/tracing/logprobs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,12 +115,12 @@ def decode_logprobs(data_b64: str) -> DecodedPayload:
115115
"""Decode a gateway ``payloads.logprobs.data`` blob into a ``DecodedPayload``.
116116
117117
``value`` is the per-completion-token logprob list; per-token ids (when all
118-
valid) are available under ``extras["token_ids"]``.
118+
valid) are available under ``token_ids``.
119119
"""
120120
logprobs, token_ids, metadata = decompress_and_parse_lp(data_b64)
121121
return DecodedPayload(
122122
payload_type=PayloadType.LOGPROBS,
123123
value=logprobs,
124124
metadata=metadata,
125-
extras={"token_ids": token_ids},
125+
token_ids=token_ids,
126126
)

eval_protocol/tracing/types.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
from __future__ import annotations
44

5-
from dataclasses import dataclass, field
5+
from dataclasses import dataclass
66
from enum import Enum
7-
from typing import Any, Dict
7+
from typing import Any, Dict, List, Optional
88

99

1010
class PayloadType(str, Enum):
@@ -29,12 +29,13 @@ class DecodedPayload:
2929
``value`` shape depends on ``payload_type``:
3030
- ``PROMPT_TOKEN_IDS`` -> ``List[int]``
3131
- ``LOGPROBS`` -> ``List[float]`` (per completion token); the
32-
optional per-token ids are in ``extras["token_ids"]``
32+
optional per-token ids are in ``token_ids``
3333
- ``ROUTER_REPLAY`` -> ``List[Optional[str]]`` (per-token base64 routing
3434
matrices, ``None`` where absent)
3535
"""
3636

3737
payload_type: PayloadType
3838
value: Any
3939
metadata: Dict[str, Any]
40-
extras: Dict[str, Any] = field(default_factory=dict)
40+
# LOGPROBS only: per-completion-token ids, or None if any were missing.
41+
token_ids: Optional[List[int]] = None

tests/tracing/test_registry.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def test_decode_payloads_all_types():
7878

7979
lp = decoded[PayloadType.LOGPROBS]
8080
assert lp.value == [-0.25, -0.5]
81-
assert lp.extras["token_ids"] == [7, 8]
81+
assert lp.token_ids == [7, 8]
8282

8383
r3 = decoded[PayloadType.ROUTER_REPLAY]
8484
assert len(r3.value) == 2

0 commit comments

Comments
 (0)