[Bugfix][Tool Parser] PoolsideV1: fix logprobs AttributeError on Responses API (#47138)

Signed-off-by: Joe Rowell <joerowell4@gmail.com>
Co-authored-by: Robert Shaw <114415538+robertgshaw2-redhat@users.noreply.github.com>
This commit is contained in:
Joe Rowell
2026-06-30 19:14:09 +00:00
committed by GitHub
co-authored by Robert Shaw
parent 20434c472e
commit 11b26c5528
2 changed files with 37 additions and 2 deletions
@@ -77,7 +77,9 @@ def _build_chat_request(*, tool_choice: str | dict[str, Any]) -> ChatCompletionR
)
def _build_responses_request(*, tool_choice: str | dict[str, Any]) -> ResponsesRequest:
def _build_responses_request(
*, tool_choice: str | dict[str, Any], include: list[str] | None = None
) -> ResponsesRequest:
return ResponsesRequest(
model="poolside-test",
input=[{"role": "user", "content": "write the file"}],
@@ -85,6 +87,7 @@ def _build_responses_request(*, tool_choice: str | dict[str, Any]) -> ResponsesR
tool_choice=tool_choice,
stream=True,
max_output_tokens=200,
include=include,
)
@@ -215,3 +218,31 @@ def test_responses_extract_tool_calls_with_flat_tools() -> None:
assert result.tools_called
args = json.loads(result.tool_calls[0].function.arguments)
assert args["content"] == content
def _stream_partial_start_token(request: ResponsesRequest):
parser = _make_parser(request)
delta = parser.tool_call_start_token[0]
return parser.extract_tool_calls_streaming(
previous_text="",
current_text=delta,
delta_text=delta,
previous_token_ids=[],
current_token_ids=[],
delta_token_ids=[],
request=request,
)
def test_streaming_responses_request_without_logprobs() -> None:
request = _build_responses_request(tool_choice="auto")
assert _stream_partial_start_token(request) is None
def test_streaming_responses_request_with_logprobs_emits_empty_delta() -> None:
request = _build_responses_request(
tool_choice="auto", include=["message.output_text.logprobs"]
)
result = _stream_partial_start_token(request)
assert result is not None
assert result.content == ""
+5 -1
View File
@@ -443,7 +443,11 @@ class PoolsideV1ToolParser(ToolParser):
tool_calls = list(pending_deltas.values())
if content is None and len(tool_calls) == 0:
if request.logprobs:
wants_logprobs = getattr(request, "logprobs", None) or (
isinstance(request, ResponsesRequest)
and request.is_include_output_logprobs()
)
if wants_logprobs:
return DeltaMessage(content="")
return None
return DeltaMessage(content=content, tool_calls=tool_calls)