Skip to content

FIX: Infer the objective from the user request when tool calls precede the answer - #3517

Open
Lanre Shittu (Shizoqua) wants to merge 1 commit into
microsoft:mainfrom
Shizoqua:fix/objective-after-tool-call
Open

Lanre Shittu (Shizoqua) wants to merge 1 commit into
microsoft:mainfrom
Shizoqua:fix/objective-after-tool-call

Conversation

@Shizoqua

Copy link
Copy Markdown
Contributor

Description

Fixes #3515.

extract_objective_from_previous_turn and its async version only read the turn at sequence - 1. When a target runs a tool loop, that turn is the function_call_output, so a scorer inferring its objective from the request got an empty string.

Both functions now go through _objective_from_request_turn, which picks the latest earlier turn that is user-authored or marked as an outbound request, the same rule #3410 added to MemoryInterface.get_request_from_response_async. Tool calls and outputs between the request and the answer are skipped, turns after the scored response are still never read, and only user text pieces from that turn are joined, as before.

Tests and Documentation

Added test_skips_tool_call_turns_between_request_and_answer_async to tests/unit/score/test_message_scorer.py, covering the sync and async functions with a user request, a function_call, a function_call_output and the final answer. The existing objective extraction tests are unchanged.

No docs or notebooks changed, so JupyText was not needed.

This branch has not been deployed

No deployments
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.

BUG: Inferred objective is empty when tool calls come between the request and the answer

1 participant