Skip to content

Record the terminal assistant reply in response_messages - #55

Merged
iskakaushik merged 1 commit into
mainfrom
fix-response-messages
Aug 19, 2026
Merged

Record the terminal assistant reply in response_messages#55
iskakaushik merged 1 commit into
mainfrom
fix-response-messages

Conversation

@iskakaushik

@iskakaushik iskakaushik commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

GenerateResult::response_messages documents that it includes the
assistant's response so callers can continue the conversation, but
the multi-step coordinator only appended assistant turns on the
tool-call feedback path. A run whose last step finished with stop
(or any non-tool_calls reason) returned the step-1 assistant/tool
exchange without the final answer. This regressed in the multi-step
history fix (f9d8b40) and survived the coordinator refactor
(09c423c); flagged by review on ClickHouse/ClickHouse#113959.

Append the terminal step's assistant text to the accumulator on the
non-tool_calls exits, and cover the contract with unit tests for the
multi-step coordinator (which previously had none).

GenerateResult::response_messages documents that it includes the
assistant's response so callers can continue the conversation, but
the multi-step coordinator only appended assistant turns on the
tool-call feedback path. A run whose last step finished with stop
(or any non-tool_calls reason) returned the step-1 assistant/tool
exchange without the final answer. This regressed in the multi-step
history fix (f9d8b40) and survived the coordinator refactor
(09c423c); flagged by review on ClickHouse/ClickHouse#113959.

Append the terminal step's assistant text to the accumulator on the
non-tool_calls exits, and cover the contract with unit tests for the
multi-step coordinator (which previously had none).
@iskakaushik
iskakaushik merged commit b7b0003 into main Aug 19, 2026
2 checks passed
iskakaushik added a commit to iskakaushik/ClickHouse that referenced this pull request Aug 19, 2026
The SDK is now directly consumable from its main branch: upstream
replaced its nested submodules with pinned CMake FetchContent
(ClickHouse/ai-sdk-cpp#57), retiring the
separately maintained flattened integration branch. The new pin also
carries the response_messages terminal-reply fix requested in review
(ClickHouse/ai-sdk-cpp#55) and GPT-5-family
request normalization: the family rejects temperature/top_p and
defaults to reasoning, which returned a hard 400 for any configured
ai.temperature and burned small ai.max_tokens budgets on hidden
reasoning with no visible SQL
(ClickHouse/ai-sdk-cpp#58).

Add the SDK's new http_sse_stream.cpp to the explicit source list;
without it every target linking the SDK fails.

Throw NETWORK_ERROR instead of LOGICAL_ERROR when a generation
fails: a provider/API error is external, and LOGICAL_ERROR aborts
debug builds on any API failure (observed as SIGABRT in
unit_tests_dbms during live runs).

Teach the generation prompt to treat SQL fragments embedded in the
request as untrusted. Without instruction, current models faithfully
reproduce statement stacking and UNION SELECT ... FROM passwords
when the request embeds them (deterministic on claude-haiku-4-5 at
temperature 0), so SQLInjectionProtection asserted behavior nothing
had asked of the model.

Update live-test model IDs that referenced retired models
(gpt-4o-mini, gpt-4, claude-3-haiku, claude-3-opus all 404 today)
and scope the injection test's comment assertion to quote-terminated
statement stacking: models may legitimately echo the user's own
comment text, and the result is prepopulated for review, not
executed.

Validated locally with unit_tests_dbms: offline AI suites pass, and
the live AITestFixture suite passes 8/8 against both OpenAI
(gpt-5-mini, gpt-5.6) and Anthropic (claude-haiku-4-5,
claude-sonnet-5), including the multi-step SchemaExploration case
the underlying fix exists for.
iskakaushik added a commit to iskakaushik/ClickHouse that referenced this pull request Aug 19, 2026
The SDK is now directly consumable from its main branch: upstream
replaced its nested submodules with pinned CMake FetchContent
(ClickHouse/ai-sdk-cpp#57), retiring the
separately maintained flattened integration branch. The new pin also
carries the response_messages terminal-reply fix requested in review
(ClickHouse/ai-sdk-cpp#55) and GPT-5-family
request normalization: the family rejects temperature/top_p and
defaults to reasoning, which returned a hard 400 for any configured
ai.temperature and burned small ai.max_tokens budgets on hidden
reasoning with no visible SQL
(ClickHouse/ai-sdk-cpp#58).

Add the SDK's new http_sse_stream.cpp to the explicit source list;
without it every target linking the SDK fails.

Throw NETWORK_ERROR instead of LOGICAL_ERROR when a generation
fails: a provider/API error is external, and LOGICAL_ERROR aborts
debug builds on any API failure (observed as SIGABRT in
unit_tests_dbms during live runs).

Teach the generation prompt to treat SQL fragments embedded in the
request as untrusted. Without instruction, current models faithfully
reproduce statement stacking and UNION SELECT ... FROM passwords
when the request embeds them (deterministic on claude-haiku-4-5 at
temperature 0), so SQLInjectionProtection asserted behavior nothing
had asked of the model.

Update live-test model IDs that referenced retired models
(gpt-4o-mini, gpt-4, claude-3-haiku, claude-3-opus all 404 today)
and scope the injection test's comment assertion to quote-terminated
statement stacking: models may legitimately echo the user's own
comment text, and the result is prepopulated for review, not
executed.

Validated locally with unit_tests_dbms: offline AI suites pass, and
the live AITestFixture suite passes 8/8 against both OpenAI
(gpt-5-mini, gpt-5.6) and Anthropic (claude-haiku-4-5,
claude-sonnet-5), including the multi-step SchemaExploration case
the underlying fix exists for.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant