renderers 0.1.13.dev16__tar.gz → 0.1.13.dev19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/PKG-INFO +1 -1
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/_version.py +2 -2
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/client.py +9 -6
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/glm45.py +4 -2
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/parity.py +27 -2
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/replay.py +1 -1
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_client.py +11 -5
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/.github/workflows/publish-dev.yml +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/.github/workflows/publish.yml +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/.github/workflows/style.yml +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/.github/workflows/test.yml +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/.gitignore +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/.pre-commit-config.yaml +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/LICENSE +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/README.md +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/docs/renderer-config.md +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/README.md +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/sglang/multiturn_generate_sglang.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/sglang/online_multiturn_sglang.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/tinker/multiturn_generate_tinker.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/transformers/multiturn_generate_transformers.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/vllm/multiturn_generate_vllm.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/pyproject.toml +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/__init__.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/base.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/configs.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/custom.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/deepseek_r1.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/deepseek_v3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/deepseek_v4.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/default.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/gemma4.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/glm5.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/gpt_oss.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/hy3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/inkling.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/kimi_k2.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/kimi_k25.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/laguna_s21.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/laguna_xs2.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/llama_3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/minimax_m2.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/muse_glimmer.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/nemotron3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/parsers.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/parsing.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/prime_qwen3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/qwen3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/qwen35.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/qwen36.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/qwen38.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/qwen3_vl.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/reasoning.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/renderers/tagged.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/audit_prefix_stability.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/conftest.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/fixtures/prefix_stability.json +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/reference_continuations.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/reference_rendering.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_bridge.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_build_helpers.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_custom.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_deepseek_r1.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_deepseek_v4.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_disabled_thinking_stability.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_gemma4.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_glm53_flash.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_glm_tool_name_validation.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_hy3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_incremental.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_inkling.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_is_content.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_kimi_k25_tool_schema.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_laguna_m1.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_laguna_xs21.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_llama_3.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_load_tokenizer.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_message_indices.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_message_tool_names.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_multimodal.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_muse_glimmer.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_nemotron35_vlm.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_nemotron3_ultra.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_offsetless_tokenizers.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_parity.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_parse_response.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_parse_response_robustness.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_parsers.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_preserve_thinking.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_qwen35_size_coverage.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_qwen38.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_reasoning_boundaries.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_renderer_config.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_roundtrip.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_sampled_mask.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_tagged_rollout.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_tokens_per_message.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/tests/test_tool_arg_type_preservation.py +0 -0
- {renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/uv.lock +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.1.13.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, 13, '
|
|
21
|
+
__version__ = version = '0.1.13.dev19'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 13, 'dev19')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -157,7 +157,7 @@ def parse_generate_response(raw: bytes) -> dict[str, Any]:
|
|
|
157
157
|
|
|
158
158
|
def _parse_packed_completion_logprobs(
|
|
159
159
|
packed: Mapping[str, Any], completion_ids: list[int]
|
|
160
|
-
) ->
|
|
160
|
+
) -> np.ndarray:
|
|
161
161
|
"""prime-rl's packed form: base64 float32 ``{data, shape, dtype}``, one per token."""
|
|
162
162
|
values = np.frombuffer(base64.b64decode(packed["data"]), dtype=packed["dtype"])
|
|
163
163
|
valid = np.isfinite(values) & (values > VLLM_LOGPROB_SENTINEL)
|
|
@@ -166,12 +166,12 @@ def _parse_packed_completion_logprobs(
|
|
|
166
166
|
f"Engine response choice.completion_logprobs: {len(values)} values for "
|
|
167
167
|
f"{len(completion_ids)} completion tokens, or a non-finite or missing (-9999) logprob."
|
|
168
168
|
)
|
|
169
|
-
return values.astype(np.
|
|
169
|
+
return values.astype(np.float32, copy=False)
|
|
170
170
|
|
|
171
171
|
|
|
172
172
|
def _parse_compact_logprobs(
|
|
173
173
|
choice: Mapping[str, Any], completion_ids: list[int], k: int | None
|
|
174
|
-
) -> tuple[
|
|
174
|
+
) -> tuple[np.ndarray, list[list[int]] | None, list[list[float]] | None]:
|
|
175
175
|
packed = choice.get("compact_logprobs")
|
|
176
176
|
if not isinstance(packed, Mapping) or packed.get("format") != "u32-f32-le-v1":
|
|
177
177
|
raise MalformedGenerateResponseError("Unsupported compact logprob format")
|
|
@@ -227,7 +227,7 @@ def _parse_compact_logprobs(
|
|
|
227
227
|
top_ids.append(selected_ids)
|
|
228
228
|
top_logprobs.append(selected_logprobs)
|
|
229
229
|
return (
|
|
230
|
-
sampled,
|
|
230
|
+
np.asarray(sampled, dtype=np.float32),
|
|
231
231
|
top_ids if k is not None else None,
|
|
232
232
|
top_logprobs if k is not None else None,
|
|
233
233
|
)
|
|
@@ -245,7 +245,7 @@ def _logprob_token_id(entry: Mapping[str, Any]) -> int | None:
|
|
|
245
245
|
|
|
246
246
|
def _parse_completion_logprobs(
|
|
247
247
|
choice: Mapping[str, Any], completion_ids: list[int]
|
|
248
|
-
) ->
|
|
248
|
+
) -> np.ndarray:
|
|
249
249
|
packed = choice.get("completion_logprobs")
|
|
250
250
|
if packed is not None:
|
|
251
251
|
return _parse_packed_completion_logprobs(packed, completion_ids)
|
|
@@ -297,7 +297,7 @@ def _parse_completion_logprobs(
|
|
|
297
297
|
f"Engine response choice.logprobs.content[{index}].logprob does not contain sampling evidence."
|
|
298
298
|
)
|
|
299
299
|
completion_logprobs.append(logprob)
|
|
300
|
-
return completion_logprobs
|
|
300
|
+
return np.asarray(completion_logprobs, dtype=np.float32)
|
|
301
301
|
|
|
302
302
|
|
|
303
303
|
def _parse_sampling_mask(
|
|
@@ -501,6 +501,9 @@ async def generate(
|
|
|
501
501
|
mm_placeholders, completion_ids, completion_logprobs, content,
|
|
502
502
|
reasoning_content, tool_calls, finish_reason, routed_experts,
|
|
503
503
|
weight_versions, multi_modal_data, prompt_attribution.
|
|
504
|
+
``completion_logprobs`` is a float32 numpy array, one value per completion
|
|
505
|
+
token: vLLM samples in float32, so the packed form decodes without a copy
|
|
506
|
+
and the JSON forms narrow losslessly.
|
|
504
507
|
``renderer_prompt_ids`` is the unexpanded logical prompt when
|
|
505
508
|
``process_multimodal=False`` and ``None`` otherwise. ``weight_versions``
|
|
506
509
|
is vLLM's (>= 0.32) list of ``{version, start, end}`` spans over
|
|
@@ -517,12 +517,14 @@ class GLM45Renderer:
|
|
|
517
517
|
elif content.strip():
|
|
518
518
|
emit_text("\n" + content.strip(), msg_idx, is_sampled=True, is_content=True)
|
|
519
519
|
|
|
520
|
-
for tc in tool_calls:
|
|
520
|
+
for tc_idx, tc in enumerate(tool_calls):
|
|
521
521
|
func = tc.get("function") or tc
|
|
522
522
|
name = func.get("name", "")
|
|
523
523
|
arguments = func.get("arguments", {})
|
|
524
524
|
|
|
525
|
-
|
|
525
|
+
# The template opens every call with "\n<tool_call>"; only the
|
|
526
|
+
# first call's "\n" is already carried by the content text above.
|
|
527
|
+
if tc_idx > 0 or not content.strip():
|
|
526
528
|
emit_text("\n", msg_idx, is_sampled=True, is_content=True)
|
|
527
529
|
emit_special(self._tool_call_tok, msg_idx, is_sampled=True, is_content=True)
|
|
528
530
|
emit_text(name + "\n", msg_idx, is_sampled=True, is_content=True)
|
|
@@ -202,6 +202,7 @@ MODEL_CATALOG = (
|
|
|
202
202
|
"tool-call-content",
|
|
203
203
|
"tool-call-none",
|
|
204
204
|
"multiple-tool-calls",
|
|
205
|
+
"multiple-tool-calls-content",
|
|
205
206
|
"tool-response",
|
|
206
207
|
"named-tool-response",
|
|
207
208
|
"consecutive-tool-responses",
|
|
@@ -217,6 +218,7 @@ MODEL_CATALOG = (
|
|
|
217
218
|
"tool-call-content",
|
|
218
219
|
"tool-call-none",
|
|
219
220
|
"multiple-tool-calls",
|
|
221
|
+
"multiple-tool-calls-content",
|
|
220
222
|
"tool-response",
|
|
221
223
|
"named-tool-response",
|
|
222
224
|
"consecutive-tool-responses",
|
|
@@ -246,7 +248,11 @@ MODEL_CATALOG = (
|
|
|
246
248
|
_model(
|
|
247
249
|
"meta-llama/Llama-3.2-1B-Instruct",
|
|
248
250
|
bridge=True,
|
|
249
|
-
excluded={
|
|
251
|
+
excluded={
|
|
252
|
+
"multiple-tool-calls",
|
|
253
|
+
"multiple-tool-calls-content",
|
|
254
|
+
"consecutive-tool-responses",
|
|
255
|
+
},
|
|
250
256
|
oracle_defaults={"date_string": "26 Jul 2024"},
|
|
251
257
|
extra_suites={"llama-checkpoints"},
|
|
252
258
|
),
|
|
@@ -254,7 +260,11 @@ MODEL_CATALOG = (
|
|
|
254
260
|
"meta-llama/Llama-3.2-3B-Instruct",
|
|
255
261
|
shared=False,
|
|
256
262
|
roundtrip=False,
|
|
257
|
-
excluded={
|
|
263
|
+
excluded={
|
|
264
|
+
"multiple-tool-calls",
|
|
265
|
+
"multiple-tool-calls-content",
|
|
266
|
+
"consecutive-tool-responses",
|
|
267
|
+
},
|
|
258
268
|
oracle_defaults={"date_string": "26 Jul 2024"},
|
|
259
269
|
extra_suites={"llama-checkpoints"},
|
|
260
270
|
),
|
|
@@ -486,6 +496,21 @@ SCENARIOS = (
|
|
|
486
496
|
],
|
|
487
497
|
tools=TOOLS,
|
|
488
498
|
),
|
|
499
|
+
_scenario(
|
|
500
|
+
"multiple-tool-calls-content",
|
|
501
|
+
[
|
|
502
|
+
{"role": "user", "content": "Weather in Paris and London?"},
|
|
503
|
+
{
|
|
504
|
+
"role": "assistant",
|
|
505
|
+
"content": "Let me check both.",
|
|
506
|
+
"tool_calls": [
|
|
507
|
+
_call("Paris", id="call_1"),
|
|
508
|
+
_call("London", id="call_2"),
|
|
509
|
+
],
|
|
510
|
+
},
|
|
511
|
+
],
|
|
512
|
+
tools=TOOLS,
|
|
513
|
+
),
|
|
489
514
|
_scenario(
|
|
490
515
|
"tool-response",
|
|
491
516
|
[
|
|
@@ -44,5 +44,5 @@ def replay_client(completions, requests):
|
|
|
44
44
|
|
|
45
45
|
def assert_evidence(result, ids):
|
|
46
46
|
assert result["completion_ids"] == ids
|
|
47
|
-
assert result["completion_logprobs"] == [-0.25] * len(ids)
|
|
47
|
+
assert result["completion_logprobs"].tolist() == [-0.25] * len(ids)
|
|
48
48
|
assert result["sampling_mask"] == [[tid] for tid in ids]
|
|
@@ -122,9 +122,14 @@ def test_parse_generate_response_preserves_multiple_compact_choices(separators):
|
|
|
122
122
|
json.dumps({"choices": choices}, separators=separators).encode(),
|
|
123
123
|
)
|
|
124
124
|
for i, choice in zip((7, 8), payload["choices"]):
|
|
125
|
-
|
|
125
|
+
sampled, top_ids, top_logprobs = _parse_compact_logprobs(choice, [i], None)
|
|
126
|
+
assert sampled.dtype == np.float32 and sampled.tolist() == [-0.5]
|
|
127
|
+
assert top_ids is None and top_logprobs is None
|
|
126
128
|
assert base64.b64decode(choice["routed_experts"]["data"]) == bytes([i])
|
|
127
|
-
|
|
129
|
+
sampled, top_ids, top_logprobs = _parse_compact_logprobs(
|
|
130
|
+
payload["choices"][2], [], 2
|
|
131
|
+
)
|
|
132
|
+
assert sampled.tolist() == [] and top_ids == [] and top_logprobs == []
|
|
128
133
|
|
|
129
134
|
|
|
130
135
|
@pytest.mark.parametrize("sampled", [1, 3, 5])
|
|
@@ -594,7 +599,7 @@ def test_generate_preserves_zero_completion_logprob():
|
|
|
594
599
|
|
|
595
600
|
result = _run_generate(client)
|
|
596
601
|
|
|
597
|
-
assert result["completion_logprobs"] == [0.0, -0.2]
|
|
602
|
+
assert result["completion_logprobs"] == pytest.approx([0.0, -0.2])
|
|
598
603
|
|
|
599
604
|
|
|
600
605
|
def test_generate_reads_packed_completion_logprobs():
|
|
@@ -609,7 +614,8 @@ def test_generate_reads_packed_completion_logprobs():
|
|
|
609
614
|
|
|
610
615
|
result = _run_generate(client)
|
|
611
616
|
|
|
612
|
-
assert result["completion_logprobs"] ==
|
|
617
|
+
assert result["completion_logprobs"].dtype == np.float32
|
|
618
|
+
assert result["completion_logprobs"].tolist() == values.tolist()
|
|
613
619
|
|
|
614
620
|
client.choice["completion_logprobs"]["data"] = base64.b64encode(
|
|
615
621
|
np.array([-0.1, -9999.0], dtype=np.float32).tobytes()
|
|
@@ -1141,5 +1147,5 @@ def test_generate_forwards_reasoning_state_without_classifying_acceptance(
|
|
|
1141
1147
|
assert result["reasoning_complete"] is reasoning_complete
|
|
1142
1148
|
assert result["finish_reason"] == finish
|
|
1143
1149
|
assert result["completion_ids"] == [7, 8]
|
|
1144
|
-
assert result["completion_logprobs"] == [-0.1, -0.2]
|
|
1150
|
+
assert result["completion_logprobs"] == pytest.approx([-0.1, -0.2])
|
|
1145
1151
|
assert result["content"] == ""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/sglang/multiturn_generate_sglang.py
RENAMED
|
File without changes
|
{renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/sglang/online_multiturn_sglang.py
RENAMED
|
File without changes
|
{renderers-0.1.13.dev16 → renderers-0.1.13.dev19}/examples/tinker/multiturn_generate_tinker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|