惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
博客园_首页
T
Threatpost
S
Secure Thoughts
月光博客
月光博客
S
Schneier on Security
爱范儿
爱范儿
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
Microsoft Azure Blog
Microsoft Azure Blog
L
LINUX DO - 热门话题
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
Cyberwarzone
Cyberwarzone
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
P
Proofpoint News Feed
B
Blog
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
G
GRAHAM CLULEY
S
Securelist
K
Kaspersky official blog
Spread Privacy
Spread Privacy
Stack Overflow Blog
Stack Overflow Blog
Security Latest
Security Latest
aimingoo的专栏
aimingoo的专栏
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
I
Intezer
NISL@THU
NISL@THU
The Register - Security
The Register - Security
P
Privacy International News Feed
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tenable Blog
AI
AI
V2EX - 技术
V2EX - 技术
量子位
Jina AI
Jina AI
博客园 - Franky
N
News | PayPal Newsroom
Cloudbric
Cloudbric
N
News and Events Feed by Topic
J
Java Code Geeks

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
What Happens When Every Prompt Slot Says Something Different
Raj Kundalia · 2026-06-28 · via DEV Community

A controlled experiment exploring how Claude and Qwen resolve conflicting instructions across system prompts, user messages, and tool descriptions.

In the first experiment of the series, Where You Put the Instruction Matters More Than What It Says, I asked a simple question:

Does it matter where you place an instruction?

The answer depended entirely on the model.

For Qwen 2.5-Coder 3B, the answer was yes. The same instruction produced dramatically different compliance rates depending on whether it lived in the system prompt, user message (or task prompt), or tool description.

For Claude Haiku 4.5 and Claude Sonnet 4.6, the answer appeared to be no. Both models followed the instruction perfectly regardless of where it was placed.

That experiment measured placement strength.

But it left an obvious follow-up question unanswered.

What happens when every prompt slot says something different?

That's what this experiment measures.

GitHub repository:
https://github.com/rajkundalia/prompt-placement-anatomy

Image1


The Experiment

The underlying task is unchanged from Part 1.

The agent counts TODO markers across five markdown files using two filesystem tools: list_files and read_file.

The models are the same.

The agent loop is the same.

The only thing that changes is the prompt.

In Part 1, the same instruction was placed into one slot at a time.

In Part 2, every slot contains a different instruction simultaneously.

Slot Instruction Marker
System prompt End your final answer with the marker [DONE] [DONE]
User message End your final answer with the marker [FINISHED] [FINISHED]
Tool description (read_file) End your final answer with the marker [COMPLETE] [COMPLETE]

Every instruction is active in every run.

The model cannot satisfy all three.

It has to choose one, ignore them entirely, or produce some mixture of them.

Unlike Part 1, this experiment isn't measuring compliance.

It's measuring which instruction wins.


Measuring the Winner

Each run falls into one of five possible outcomes.

Outcome Meaning
System Response ends with [DONE]
User Response ends with [FINISHED]
Tool Response ends with [COMPLETE]
None None of the expected markers appear
Conflict in output Multiple markers appear

The final 150 characters of every response are searched using case-insensitive regular expressions.


Results: Qwen 2.5-Coder 3B (Ollama)

Image2

The first thing I noticed was how familiar these numbers looked.

In Part 1, placing the instruction in the user message produced 64% compliance, while the system prompt managed 8% and the tool description 2%.

Now, under direct competition, the user message wins 60% of the time, the system prompt wins 2%, and the tool description never wins at all.

Although the experiments ask different questions, they tell a remarkably consistent story.

The slot that was strongest in isolation is also the slot that dominates when every instruction competes.

The conflict condition also exposed behavior that Part 1 could never reveal.

Nearly a third of the runs ended without any expected marker.

Another 6% produced multiple competing markers in the same response.

Instead of consistently selecting one instruction, the model sometimes failed to produce a single clear winner.

A note about tool execution

One implementation detail is important when interpreting these results.

Unlike the Claude models, Qwen never successfully executed the tool loop.

Rather than producing structured tool calls, it emitted tool-call JSON as plain text and completed every run in a single turn.

This means the tool description was never exercised as part of an actual tool invocation.

It existed only as text inside the context window.

That limitation is consistent with the results from Part 1, where the tool description also had almost no observable influence for Qwen.


Results: Claude Haiku 4.5 (Anthropic API)

Outcome Frequency
User [FINISHED] 100%
System [DONE] 0%
Tool [COMPLETE] 0%
None 0%
Conflict in output 0%

Every run produced exactly the same outcome.

The model completed the tool loop correctly, used three turns, and always finished with [FINISHED].

This is where the experiment becomes interesting.

Part 1 suggested that every prompt slot was equally effective because each placement achieved 100% compliance.

Part 2 reveals a more nuanced picture.

When every slot contains the same instruction, every slot can successfully deliver that instruction.

Once those instructions conflict, however, the model consistently resolves the disagreement in favor of the user message.

The placement experiment and the conflict experiment are measuring different properties of the model.


Results: Claude Sonnet 4.6 (Anthropic API)

Outcome Frequency
User [FINISHED] 100%
System [DONE] 0%
Tool [COMPLETE] 0%
None 0%
Conflict in output 0%

Claude Sonnet was tested across 12 runs, stopped early once the pattern was clearly established—that is, the user instruction determined the final formatting of the response.


Summary

Model Type System User Tool None Conflict
qwen2.5-coder:3b Small local (Ollama) 2% 60% 0% 32% 6%
claude-haiku-4.5 Small frontier (Anthropic) 0% 100% 0% 0% 0%
claude-sonnet-4.6 Large frontier (Anthropic) 0% 100% 0% 0% 0%

Three observations stand out:

  • The tool description never won: across all runs and all three models, [COMPLETE] never emerged as the surviving instruction.
  • The system prompt rarely won: it appeared once for Qwen and never for either Claude model.
  • Both Claude models behaved identically despite their difference in size. Haiku, Anthropic's smallest model, resolved the conflict exactly the same way as Sonnet.

Image3

Looking at Both Experiments Together

Although both experiments involve prompt placement, they answer different questions.

Part 1

Can this prompt slot successfully deliver an instruction?

Part 2

When multiple instructions compete, which one determines the final output?

For Qwen:

The user message was the strongest placement in isolation, and it remained the dominant placement under direct competition.

For the Claude models:

Part 1 showed that all three prompt slots could successfully deliver an instruction when no competing instruction existed.

Part 2 showed that once conflict was introduced, the user message consistently determined the final formatting in this experiment.

Together, the two experiments show that instruction visibility and instruction priority are different characteristics of an LLM.

A model may reliably process instructions from every prompt slot while still preferring one slot whenever those instructions disagree.


What This Means in Practice

If you're building agents with smaller open-weight models, prompt placement is more than a stylistic choice.

Across both experiments, the user message was consistently the most reliable place for formatting instructions.

System prompts and tool descriptions were substantially less effective, particularly when competing instructions existed.

For the Claude models tested here, the practical takeaway is different.

They successfully followed instructions regardless of placement when no conflict existed.

However, in this experiment, conflicting formatting instructions were consistently resolved in favor of the user message.

It's important to keep the scope of that finding in mind.

This experiment only examined formatting instructions within a controlled agent loop.

It does not imply that user prompts override safety policies or other system-level behaviors, which are governed by different mechanisms and would require a different experimental design.


Caveats

The markers [DONE], [FINISHED], and [COMPLETE] are different strings.

They differ in length and may differ in how frequently similar tokens appeared during model training.

Rotating the markers across prompt slots would control for that effect, but it would also triple the size of the experiment and was not done here.

The sample sizes also differ across models:

  • 50 runs for Qwen
  • 30 for Claude Haiku
  • 12 for Claude Sonnet

The Anthropic models exhibited highly consistent behavior, allowing the experiments to stop once the dominant pattern was established.

Finally, these results are model- and task-specific.

Different architectures, quantization levels, or tasks may produce different behaviors.

The goal of this experiment is not to establish a universal prompt hierarchy, but to measure how these particular models behave under controlled conditions.

Statistical confidence intervals were calculated during analysis but are omitted here because the dominant winner was unambiguous.


Final Thoughts

The most interesting result wasn't that the user message won.

It was that two experiments, built to measure different properties, kept arriving at the same answer.

For one model, the strongest placement in isolation was also the strongest placement under conflict.

For the others, perfect placement compliance concealed a deterministic preference that only became visible once the prompts disagreed.

Sometimes the most interesting model behavior doesn't appear when there's only one correct instruction.

It appears when every prompt slot asks for something different, and the model has to decide which one deserves the final word.


Follow me on LinkedIn: Raj Kundalia

Related