{"id":13845,"date":"2025-12-20T15:31:19","date_gmt":"2025-12-20T20:31:19","guid":{"rendered":"https:\/\/spinor.info\/weblog\/?p=13845"},"modified":"2025-12-20T15:31:19","modified_gmt":"2025-12-20T20:31:19","slug":"agentic-ai","status":"publish","type":"post","link":"https:\/\/spinor.info\/weblog\/?p=13845","title":{"rendered":"Agentic AI"},"content":{"rendered":"<p>So I had a surprisingly smooth experience with a chat agent, most likely an AI agent though probably with some human-in-the-loop supervision. This had to do with canceling\/downgrading my Sirius XM subscription, now that we no longer have a vehicle with satellite radio.<\/p>\n<p>And it got me thinking. Beyond the hype, what does it take to build a reliable AI customer experience (CX) agent?<\/p>\n<p>And that&#8217;s when it hit me: I already did it. Granted, not an agent per se, just the way I set up <a href=\"https:\/\/wispl.com\/chess.php\">GPT-5 to play chess<\/a>.<\/p>\n<p>The secret? State machines.<\/p>\n<p>I did not ask GPT to keep track of the board. I did not ask GPT to update the board either. I told GPT the state of the board and asked GPT to make a move.<\/p>\n<p>The board state was tracked not by GPT but by conventional, deterministic code. The board is a state machine. Its state transitions are governed by the rules of chess. There is no ambiguity. The board&#8217;s state (including castling and en passant) is encoded in a FEN string unambiguously. When GPT offers a move, its validity is determined by a simple question: does it represent a valid state transition for the chessboard?<\/p>\n<p>And this is how a good AI CX agent works. It does not unilaterally determine the state of the customer&#8217;s account. It offers state <em>changes<\/em>, which are then evaluated by the rigid logic of a state machine.<\/p>\n<div id=\"attachment_13856\" style=\"width: 730px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-13856\" class=\"size-full wp-image-13856\" src=\"https:\/\/spinor.info\/weblog\/wp-content\/uploads\/2025\/12\/state-machine.png\" alt=\"\" width=\"720\" height=\"480\" srcset=\"https:\/\/spinor.info\/weblog\/wp-content\/uploads\/2025\/12\/state-machine.png 720w, https:\/\/spinor.info\/weblog\/wp-content\/uploads\/2025\/12\/state-machine-300x200.png 300w, https:\/\/spinor.info\/weblog\/wp-content\/uploads\/2025\/12\/state-machine-150x100.png 150w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><p id=\"caption-attachment-13856\" class=\"wp-caption-text\"><em>Diagram created by ChatGPT to illustrate a CX state machine<\/em><\/p><\/div>\n<p>Take my case with Sirius XM. Current state: Customer with a radio and Internet subscription. Customer indicates intent to cancel radio. Permissible state changes: Customer cancels; customer downgrades to Internet-only subscription. This is where the LLM comes in: with proper scaffolding and a system prompt, it interrogates the customer. Do you have any favorite Sirius XM stations? Awesome. Are you planning on purchasing another XM radio (or a vehicle equipped with one)? No, fair enough. Would you like a trial subscription to keep listening via the Internet-only service? Great. State change initiated&#8230; And that&#8217;s when, for instance, a human supervisor comes in, to approve the request after glancing at the chat transcript.<\/p>\n<p>The important thing is, the language mode does not decide what the next state is. It has no direct authority over the state of the customer&#8217;s account. What it can do, the only thing it can do at this point, is initiating a valid state transition.<\/p>\n<p>The hard part when it comes to designing such a CX solution is mapping the states adequately, and making sure that the AI has the right instructions.\u00a0Here is what is NOT needed:<\/p>\n<ul>\n<li>There is no need for a &#8220;reasoning&#8221; model;<\/li>\n<li>There is no need for &#8220;agentic&#8221; behavior;<\/li>\n<li>There is no need for &#8220;council-of-experts&#8221;, &#8220;chain-of-thought&#8221; reasoning, &#8220;self-critique&#8221;, or any of the other hyped inventions.<\/li>\n<\/ul>\n<p>In fact, a modest locally run model like Gemma-12B would be quite capable of performing the chat function. So there&#8217;s no need even to worry about leaking confidential customer information to the cloud.<\/p>\n<p>Bottom line: use language models for what they do best, associative reasoning. Do not try to use a system with no internal state and no modeling capability as a reasoning engine. That&#8217;s like, if I may offer a crude but (I hope) not stupid analogy, it&#8217;s like building a world-class submarine and then, realizing that it is not capable of flying, nailing some makeshift wooden wings onto its body.<\/p>\n<p>I almost feel tempted to create a mock CX Web site to demonstrate all this in practice. Then again, I realize that my <a href=\"https:\/\/wispl.com\/chess.php\">chess implementation<\/a> already does much of the same: the AI agent supplies a narrative and a proposed state transition, but the state (the chessboard) is maintained, its consistence is ensured, by conventional software scaffolding.<\/p>\n<fb:like href='https:\/\/spinor.info\/weblog\/?p=13845' send='true' layout='standard' show_faces='true' width='450' height='65' action='like' colorscheme='light' font='lucida grande'><\/fb:like>","protected":false},"excerpt":{"rendered":"<p>So I had a surprisingly smooth experience with a chat agent, most likely an AI agent though probably with some human-in-the-loop supervision. This had to do with canceling\/downgrading my Sirius XM subscription, now that we no longer have a vehicle with satellite radio. And it got me thinking. Beyond the hype, what does it take <a href='https:\/\/spinor.info\/weblog\/?p=13845' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,58,35],"tags":[],"class_list":["post-13845","post","type-post","status-publish","format-standard","hentry","category-commerce","category-cybernetics","category-personal","category-46-id","category-58-id","category-35-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"_links":{"self":[{"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=\/wp\/v2\/posts\/13845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13845"}],"version-history":[{"count":10,"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=\/wp\/v2\/posts\/13845\/revisions"}],"predecessor-version":[{"id":13857,"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=\/wp\/v2\/posts\/13845\/revisions\/13857"}],"wp:attachment":[{"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spinor.info\/weblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}