<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://ibm.github.io/VIBE/blog</id>
    <title>IBM VIBE Blog</title>
    <updated>2026-10-20T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://ibm.github.io/VIBE/blog"/>
    <subtitle>IBM VIBE Blog</subtitle>
    <icon>https://ibm.github.io/VIBE/img/favicon.svg</icon>
    <entry>
        <title type="html"><![CDATA[Why test AI agents with conversations, not prompts]]></title>
        <id>https://ibm.github.io/VIBE/blog/testing-agents-with-conversations</id>
        <link href="https://ibm.github.io/VIBE/blog/testing-agents-with-conversations"/>
        <updated>2026-10-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A single prompt and a single answer rarely reflect how people use an AI agent. Real usage is a conversation: context builds up, users change their mind, and mistakes compound over turns.]]></summary>
        <content type="html"><![CDATA[<p>A single prompt and a single answer rarely reflect how people use an AI agent. Real usage is a conversation: context builds up, users change their mind, and mistakes compound over turns.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-problem-with-prompt-only-testing">The problem with prompt-only testing<a href="https://ibm.github.io/VIBE/blog/testing-agents-with-conversations#the-problem-with-prompt-only-testing" class="hash-link" aria-label="Direct link to The problem with prompt-only testing" title="Direct link to The problem with prompt-only testing" translate="no">​</a></h2>
<p>Prompt-level checks tell you whether one reply looks right. They miss failures that only show up across turns, such as forgotten context, contradictory answers, or a tool call that goes wrong on the third message.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-vibe-model">The VIBE model<a href="https://ibm.github.io/VIBE/blog/testing-agents-with-conversations#the-vibe-model" class="hash-link" aria-label="Direct link to The VIBE model" title="Direct link to The VIBE model" translate="no">​</a></h2>
<p>VIBE organizes evaluation around a few concepts:</p>
<ul>
<li class=""><strong>Conversation</strong>: an ordered script of user messages.</li>
<li class=""><strong>Turn target</strong>: the reply you expect for a user turn, scored for similarity against the agent's actual answer.</li>
<li class=""><strong>Session</strong>: the transcript produced by a run, with timing, token usage and scores per turn.</li>
<li class=""><strong>Suite</strong>: a named collection of conversations that you run together.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="a-minimal-loop">A minimal loop<a href="https://ibm.github.io/VIBE/blog/testing-agents-with-conversations#a-minimal-loop" class="hash-link" aria-label="Direct link to A minimal loop" title="Direct link to A minimal loop" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">vibe conversation create </span><span class="token parameter variable" style="color:#36acaa">--name</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Refund flow"</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--json</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">vibe conversation add-message </span><span class="token parameter variable" style="color:#36acaa">--conversation</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">id</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--role</span><span class="token plain"> user </span><span class="token parameter variable" style="color:#36acaa">--content</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"I want a refund"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">vibe conversation set-target </span><span class="token parameter variable" style="color:#36acaa">--conversation</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">id</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--target</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"I can help with that"</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--threshold</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">65</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">vibe run conversation </span><span class="token parameter variable" style="color:#36acaa">--conversation</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">id</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--agent</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">agent_id</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token parameter variable" style="color:#36acaa">--json</span><br></div></code></pre></div></div>
<p>The command exits with <code>0</code> when the conversation passes and <code>1</code> when a turn falls below its threshold, so it drops straight into CI.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="next-steps">Next steps<a href="https://ibm.github.io/VIBE/blog/testing-agents-with-conversations#next-steps" class="hash-link" aria-label="Direct link to Next steps" title="Direct link to Next steps" translate="no">​</a></h2>
<p>Try the <a class="" href="https://ibm.github.io/VIBE/docs/quickstart">quickstart</a>, then read the <a class="" href="https://ibm.github.io/VIBE/docs/product-tour">product tour</a> to see how sessions and suites fit together.</p>]]></content>
        <author>
            <name>IBM VIBE team</name>
            <uri>https://github.com/IBM/VIBE</uri>
        </author>
        <category label="Learning" term="Learning"/>
    </entry>
</feed>