Repository navigation
Stop the system prompt anchoring the model's choices - #17
Merged
Merged
Conversation
Models copied the prompt's example call: Mistral called steer(sycophancy, 5.0) nearly every turn, the example word for word, and the median strength chosen was 5 for three of four models. - The steer, drop, report and create examples use placeholders (<name>, <number>, <true or false>, <new name>), and the strength and decay explanations no longer use a strength a model could copy. - A call naming one of Modulo's tools that isn't valid JSON (a copied placeholder, a missing brace) is reported to the model instead of being silently ignored. Valid JSON that isn't a call, such as an echoed tool result, is left alone. - The vector menu is shuffled once per session (menu_seed; the demo uses --rng-seed, and logs menu_seed and menu_order), since sycophancy was always listed first. Vectors made with create join the end. Checked on a GPU before the shuffle (12 sessions): Llama's strengths spread from -5 to +10 and no model favoured sycophancy, but Mistral copies placeholders verbatim and the feedback doesn't change that. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The models were copying the system prompt's example call instead of choosing for themselves. Mistral called
steer(sycophancy, 5.0)nearly every turn, which is the example word for word, and three of the four models had a median strength of 5. It also explains much of the "models turn up sycophancy" pattern in earlier runs, becausesycophancywas both the example and the first vector listed.Changes
"<name>",<number>,<true or false>and"<new name>". The strength explanation ("1 adds one about 7% as large") and the decay explanation ("about 23% … left after 10 turns") no longer use a strength a model could copy.<number>or a missing brace, is reported in the tool results instead of being silently ignored. Valid JSON that isn't a call, such as an echoed tool result, is left alone.menu_seed; the demo passes--rng-seed, and session logs recordmenu_seedandmenu_order. Vectors made withcreatejoin the end.Testing
test_agent_logic,test_cli,test_chat).sycophancy.sycophancyat 5, the first vector listed, which is why the menu is now shuffled.create, the report gate and the debrief all worked together, with no crashes.tests/test_steering_gpu.py).test_controlsnow gives its comparison agent the fixture agent'smenu_seed, so their prompts match. Please run it on the next GPU.🤖 Generated with Claude Code