<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: agent-definitions</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/agent-definitions.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-03-15T22:41:57+00:00</updated><author><name>Simon Willison</name></author><entry><title>What is agentic engineering?</title><link href="https://simonwillison.net/guides/agentic-engineering-patterns/what-is-agentic-engineering/#atom-tag" rel="alternate"/><published>2026-03-15T22:41:57+00:00</published><updated>2026-03-15T22:41:57+00:00</updated><id>https://simonwillison.net/guides/agentic-engineering-patterns/what-is-agentic-engineering/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;&lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/"&gt;Agentic Engineering Patterns&lt;/a&gt; &amp;gt;&lt;/em&gt;&lt;/p&gt;
    &lt;p&gt;I use the term &lt;strong&gt;agentic engineering&lt;/strong&gt; to describe the practice of developing software with the assistance of coding agents.&lt;/p&gt;
&lt;p&gt;What are &lt;strong&gt;coding agents&lt;/strong&gt;? They're agents that can both write and execute code. Popular examples include &lt;a href="https://code.claude.com/"&gt;Claude Code&lt;/a&gt;, &lt;a href="https://openai.com/codex/"&gt;OpenAI Codex&lt;/a&gt;, and &lt;a href="https://geminicli.com/"&gt;Gemini CLI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;What's an &lt;strong&gt;agent&lt;/strong&gt;? Clearly defining that term is a challenge that has frustrated AI researchers since &lt;a href="https://simonwillison.net/2024/Oct/12/michael-wooldridge/"&gt;at least the 1990s&lt;/a&gt; but the definition I've come to accept, at least in the field of Large Language Models (LLMs) like GPT-5 and Gemini and Claude, is this one:&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;strong&gt;Agents run tools in a loop to achieve a goal&lt;/strong&gt;&lt;/center&gt;&lt;/p&gt;

&lt;p&gt;The "agent" is software that calls an LLM with your prompt and passes it a set of tool definitions, then calls any tools that the LLM requests and feeds the results back into the LLM.&lt;/p&gt;
&lt;p&gt;For coding agents, those tools include one that can execute code.&lt;/p&gt;
&lt;p&gt;You prompt the coding agent to define a goal. The agent then generates and executes code in a loop until that goal has been met.&lt;/p&gt;
&lt;p&gt;Code execution is the defining capability that makes agentic engineering possible. Without the ability to directly run the code, anything output by an LLM is of limited value. With code execution, these agents can start iterating towards software that demonstrably works.&lt;/p&gt;
&lt;h2 id="agentic-engineering"&gt;Agentic engineering&lt;/h2&gt;
&lt;p&gt;Now that we have software that can write working code, what is there left for us humans to do?&lt;/p&gt;
&lt;p&gt;The answer is &lt;em&gt;so much stuff&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Writing code has never been the sole activity of a software engineer. The craft has always been figuring out &lt;em&gt;what&lt;/em&gt; code to write. Any given software problem has dozens of potential solutions, each with their own tradeoffs. Our job is to navigate those options and find the ones that are the best fit for our unique set of circumstances and requirements.&lt;/p&gt;
&lt;p&gt;Getting great results out of coding agents is a deep subject in its own right, especially now as the field continues to evolve at a bewildering rate.&lt;/p&gt;
&lt;p&gt;We need to provide our coding agents with the tools they need to solve our problems, specify those problems in the right level of detail, and verify and iterate on the results until we are confident they address our problems in a robust and credible way.&lt;/p&gt;
&lt;p&gt;LLMs don't learn from their past mistakes, but coding agents can, provided we deliberately update our instructions and tool harnesses to account for what we learn along the way.&lt;/p&gt;
&lt;p&gt;Used effectively, coding agents can help us be much more ambitious with the projects we take on. Agentic engineering should help us produce more, better quality code that solves more impactful problems.&lt;/p&gt;
&lt;h2 id="isnt-this-just-vibe-coding"&gt;Isn't this just vibe coding?&lt;/h2&gt;
&lt;p&gt;The term "vibe coding" was &lt;a href="https://twitter.com/karpathy/status/1886192184808149383"&gt;coined by Andrej Karpathy&lt;/a&gt; in February 2025 - coincidentally just three weeks prior to the original release of Claude Code - to describe prompting LLMs to write code while you "forget that the code even exists".&lt;/p&gt;
&lt;p&gt;Some people extend that definition to cover any time an LLM is used to produce code at all, but I think that's a mistake. Vibe coding is more useful in its original definition - we need a term to describe unreviewed, prototype-quality LLM-generated code that distinguishes it from code that the author has brought up to a production ready standard.&lt;/p&gt;
&lt;h2 id="about-this-guide"&gt;About this guide&lt;/h2&gt;
&lt;p&gt;Just like the field it attempts to cover, &lt;em&gt;Agentic Engineering Patterns&lt;/em&gt; is very much a work in progress. My goal is to identify and describe patterns for working with these tools that demonstrably get results, and that are unlikely to become outdated as the tools advance.&lt;/p&gt;
&lt;p&gt;I'll continue adding more chapters as new techniques emerge. No chapter should be considered finished. I'll be updating existing chapters as our understanding of these patterns evolves.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="coding-agents"/><category term="agent-definitions"/><category term="generative-ai"/><category term="agentic-engineering"/><category term="ai"/><category term="llms"/></entry><entry><title>Andrej Karpathy — AGI is still a decade away</title><link href="https://simonwillison.net/2025/Oct/18/agi-is-still-a-decade-away/#atom-tag" rel="alternate"/><published>2025-10-18T03:25:59+00:00</published><updated>2025-10-18T03:25:59+00:00</updated><id>https://simonwillison.net/2025/Oct/18/agi-is-still-a-decade-away/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.dwarkesh.com/p/andrej-karpathy"&gt;Andrej Karpathy — AGI is still a decade away&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Extremely high signal 2 hour 25 minute (!) conversation between Andrej Karpathy and Dwarkesh Patel.&lt;/p&gt;
&lt;p&gt;It starts with Andrej's claim that "the year of agents" is actually more likely to take a decade. Seeing as I &lt;a href="https://simonwillison.net/2025/Oct/16/claude-skills/#claude-as-a-general-agent"&gt;accepted 2025 as the year of agents&lt;/a&gt; just yesterday this instantly caught my attention!&lt;/p&gt;
&lt;p&gt;It turns out Andrej is using a different definition of agents to &lt;a href="https://simonwillison.net/2025/Sep/18/agents/"&gt;the one that I prefer&lt;/a&gt; - emphasis mine:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When you’re talking about an agent, or what the labs have in mind and maybe what I have in mind as well, you should &lt;strong&gt;think of it almost like an employee or an intern that you would hire to work with you&lt;/strong&gt;. For example, you work with some employees here. When would you prefer to have an agent like Claude or Codex do that work?&lt;/p&gt;
&lt;p&gt;Currently, of course they can’t. What would it take for them to be able to do that? Why don’t you do it today? The reason you don’t do it today is because they just don’t work. &lt;strong&gt;They don’t have enough intelligence, they’re not multimodal enough, they can’t do computer use and all this stuff&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;They don’t do a lot of the things you’ve alluded to earlier. &lt;strong&gt;They don’t have continual learning&lt;/strong&gt;. You can’t just tell them something and they’ll remember it. They’re cognitively lacking and it’s just not working. It will take about a decade to work through all of those issues.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yeah, continual learning human-replacement agents definitely isn't happening in 2025! Coding agents that are &lt;em&gt;really good&lt;/em&gt; at running tools in the loop on the other hand are here already.&lt;/p&gt;
&lt;p&gt;I loved this bit introducing an analogy of LLMs as ghosts or spirits, as opposed to having brains like animals or humans:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Brains just came from a very different process, and I’m very hesitant to take inspiration from it because we’re not actually running that process. In my post, I said we’re not building animals. We’re building ghosts or spirits or whatever people want to call it, because we’re not doing training by evolution. We’re doing training by imitation of humans and the data that they’ve put on the Internet.&lt;/p&gt;
&lt;p&gt;You end up with these ethereal spirit entities because they’re fully digital and they’re mimicking humans. It’s a different kind of intelligence. If you imagine a space of intelligences, we’re starting off at a different point almost. We’re not really building animals. But it’s also possible to make them a bit more animal-like over time, and I think we should be doing that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The post Andrej mentions is &lt;a href="https://karpathy.bearblog.dev/animals-vs-ghosts/"&gt;Animals vs Ghosts&lt;/a&gt; on his blog.&lt;/p&gt;
&lt;p&gt;Dwarkesh asked Andrej about &lt;a href="https://twitter.com/karpathy/status/1977758204139331904"&gt;this tweet&lt;/a&gt; where he said that Claude Code and Codex CLI "didn't work well enough at all and net unhelpful" for his &lt;a href="https://simonwillison.net/2025/Oct/13/nanochat/"&gt;nanochat project&lt;/a&gt;. Andrej responded:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] So the agents are pretty good, for example, if you’re doing boilerplate stuff. Boilerplate code that’s just copy-paste stuff, they’re very good at that. They’re very good at stuff that occurs very often on the Internet because there are lots of examples of it in the training sets of these models. There are features of things where the models will do very well.&lt;/p&gt;
&lt;p&gt;I would say nanochat is not an example of those because it’s a fairly unique repository. There’s not that much code in the way that I’ve structured it. It’s not boilerplate code. It’s intellectually intense code almost, and everything has to be very precisely arranged. The models have so many cognitive deficits. One example, they kept misunderstanding the code because they have too much memory from all the typical ways of doing things on the Internet that I just wasn’t adopting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Here's an &lt;a href="https://twitter.com/karpathy/status/1979644538185752935"&gt;essay length tweet&lt;/a&gt; from Andrej clarifying a whole bunch of the things he talked about on the podcast.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=45619329"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/andrej-karpathy"&gt;andrej-karpathy&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="andrej-karpathy"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="ai-agents"/><category term="coding-agents"/><category term="agent-definitions"/></entry><entry><title>a system that can do work independently on behalf of the user</title><link href="https://simonwillison.net/2025/Oct/6/work-independently/#atom-tag" rel="alternate"/><published>2025-10-06T23:17:55+00:00</published><updated>2025-10-06T23:17:55+00:00</updated><id>https://simonwillison.net/2025/Oct/6/work-independently/#atom-tag</id><summary type="html">
    &lt;p&gt;I've settled on agents as meaning &lt;a href="https://simonwillison.net/2025/Sep/18/agents/"&gt;"LLMs calling tools in a loop to achieve a goal"&lt;/a&gt; but OpenAI continue to muddy the waters with much more vague definitions. Swyx &lt;a href="https://twitter.com/swyx/status/1975335082048246159"&gt;spotted this one&lt;/a&gt; in the press pack OpenAI sent out for their DevDay announcements today:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How does OpenAl define an "agent"?&lt;/strong&gt; An Al agent is a system that can do work independently on behalf of the user.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Adding this one &lt;a href="https://simonwillison.net/tags/agent-definitions/"&gt;to my collection&lt;/a&gt;.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/swyx"&gt;swyx&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai-agents"/><category term="openai"/><category term="agent-definitions"/><category term="swyx"/></entry><entry><title>Quoting Steve Jobs</title><link href="https://simonwillison.net/2025/Sep/18/steve-jobs/#atom-tag" rel="alternate"/><published>2025-09-18T21:47:56+00:00</published><updated>2025-09-18T21:47:56+00:00</updated><id>https://simonwillison.net/2025/Sep/18/steve-jobs/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://www.thedailybeast.com/steve-jobs-1984-access-magazine-interview/"&gt;&lt;p&gt;Well, the types of computers we have today are tools. They’re responders: you ask a computer to do something and it will do it. The next stage is going to be computers as “agents.” In other words, it will be as if there’s a little person inside that box who starts to anticipate what you want. Rather than help you, it will start to guide you through large amounts of information. It will almost be like you have a little friend inside that box. I think the computer as an agent will start to mature in the late '80s, early '90s.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.thedailybeast.com/steve-jobs-1984-access-magazine-interview/"&gt;Steve Jobs&lt;/a&gt;, 1984 interview with Access Magazine (&lt;a href="https://pablosanzo.com/ai-agents.html#Definitions"&gt;via&lt;/a&gt;)&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/computer-history"&gt;computer-history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-jobs"&gt;steve-jobs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="computer-history"/><category term="steve-jobs"/><category term="agent-definitions"/></entry><entry><title>I think "agent" may finally have a widely enough agreed upon definition to be useful jargon now</title><link href="https://simonwillison.net/2025/Sep/18/agents/#atom-tag" rel="alternate"/><published>2025-09-18T19:12:02+00:00</published><updated>2025-09-18T19:12:02+00:00</updated><id>https://simonwillison.net/2025/Sep/18/agents/#atom-tag</id><summary type="html">
    &lt;p&gt;I've noticed something interesting over the past few weeks: I've started using the term "agent" in conversations where I don't feel the need to then define it, roll my eyes or wrap it in scare quotes.&lt;/p&gt;
&lt;p&gt;This is a big piece of personal character development for me!&lt;/p&gt;
&lt;p&gt;Moving forward, when I talk about agents I'm going to use this:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An LLM agent runs tools in a loop to achieve a goal.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I've been &lt;em&gt;very&lt;/em&gt; hesitant to use the term "agent" for meaningful communication over the last couple of years. It felt to me like the ultimate in buzzword bingo - everyone was talking about agents, but if you quizzed them everyone seemed to hold a different mental model of what they actually were.&lt;/p&gt;
&lt;p&gt;I even started collecting definitions in my &lt;a href="https://simonwillison.net/tags/agent-definitions/"&gt;agent-definitions tag&lt;/a&gt;, including crowdsourcing 211 definitions on Twitter and attempting to summarize and group them with Gemini (I got &lt;a href="https://gist.github.com/simonw/beaa5f90133b30724c5cc1c4008d0654#response"&gt;13 groups&lt;/a&gt;, here's the &lt;a href="https://gist.github.com/simonw/beaa5f90133b30724c5cc1c4008d0654#2-tool-using-llms"&gt;tool-using LLMS&lt;/a&gt; one.)&lt;/p&gt;
&lt;p&gt;Jargon terms are only useful if you can be confident that the people you are talking to share the same definition! If they don't then communication becomes &lt;em&gt;less&lt;/em&gt; effective - you can waste time passionately discussing entirely different concepts.&lt;/p&gt;
&lt;p&gt;It turns out this is not a new problem. In 1994's &lt;em&gt;Intelligent Agents: Theory and Practice&lt;/em&gt; &lt;a href="https://www.cs.ox.ac.uk/people/michael.wooldridge/pubs/ker95/subsection3_1_1.html"&gt;Michael Wooldridge wrote&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Carl Hewitt recently remarked that the question &lt;em&gt;what is an agent?&lt;/em&gt; is embarrassing for the agent-based computing community in just the same way that the question &lt;em&gt;what is intelligence?&lt;/em&gt; is embarrassing for the mainstream AI community. The problem is that although the term is widely used, by many people working in closely related areas, it defies attempts to produce a single universally accepted definition.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So long as agents lack a commonly shared definition, using the term reduces rather than increases the clarity of a conversation.&lt;/p&gt;
&lt;p&gt;In the AI engineering space I think we may finally have settled on a widely enough accepted definition that we can now have productive conversations about them.&lt;/p&gt;
&lt;h4 id="tools-in-a-loop-to-achieve-a-goal"&gt;Tools in a loop to achieve a goal&lt;/h4&gt;
&lt;p&gt;An LLM agent &lt;em&gt;runs tools in a loop to achieve a goal&lt;/em&gt;. Let's break that down.&lt;/p&gt;
&lt;p&gt;The "tools in a loop" definition has been popular for a while - Anthropic in particular have &lt;a href="https://simonwillison.net/2025/May/22/tools-in-a-loop/"&gt;settled on that one&lt;/a&gt;. This is the pattern baked into many LLM APIs as tools or function calls - the LLM is given the ability to request actions to be executed by its harness, and the outcome of those tools is fed back into the model so it can continue to reason through and solve the given problem.&lt;/p&gt;
&lt;p&gt;"To achieve a goal" reflects that these are not infinite loops - there is a stopping condition.&lt;/p&gt;
&lt;p&gt;I debated whether to specify "... a goal set by a user". I decided that's not a necessary part of this definition: we already have sub-agent patterns where another LLM sets the goal (see &lt;a href="https://simonwillison.net/2025/Jun/2/claude-trace/"&gt;Claude Code&lt;/a&gt; and &lt;a href="https://simonwillison.net/2025/Jun/14/multi-agent-research-system/"&gt;Claude Research&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;There remains an almost unlimited set of alternative definitions: if you talk to people outside of the technical field of building with LLMs you're still likely to encounter travel agent analogies or employee replacements or excitable use of the word "autonomous". In those contexts it's important to clarify the definition they are using in order to have a productive conversation.&lt;/p&gt;
&lt;p&gt;But from now on, if a technical implementer tells me they are building an "agent" I'm going to assume they mean they are wiring up tools to an LLM in order to achieve goals using those tools in a bounded loop.&lt;/p&gt;
&lt;p&gt;Some people might insist that agents have a memory. The "tools in a loop" model has a fundamental form of memory baked in: those tool calls are constructed as part of a conversation with the model, and the previous steps in that conversation provide short-term memory that's essential for achieving the current specified goal.&lt;/p&gt;
&lt;p&gt;If you want long-term memory the most promising way to implement it is &lt;a href="https://simonwillison.net/2025/Sep/12/claude-memory/"&gt;with an extra set of tools&lt;/a&gt;!&lt;/p&gt;
&lt;h4 id="agents-as-human-replacements-is-my-least-favorite-definition"&gt;Agents as human replacements is my least favorite definition&lt;/h4&gt;
&lt;p&gt;If you talk to non-technical business folk you may encounter a depressingly common alternative definition: agents as replacements for human staff. This often takes the form of "customer support agents", but you'll also see cases where people assume that there should be marketing agents, sales agents, accounting agents and more.&lt;/p&gt;
&lt;p&gt;If someone surveys Fortune 500s about their "agent strategy" there's a good chance that's what is being implied. Good luck getting a clear, distinct answer from them to the question "what is an agent?" though!&lt;/p&gt;
&lt;p&gt;This category of agent remains science fiction. If your agent strategy is to replace your human staff with some fuzzily defined AI system (most likely a system prompt and a collection of tools under the hood) you're going to end up sorely disappointed.&lt;/p&gt;
&lt;p&gt;That's because there's one key feature that remains unique to human staff: &lt;strong&gt;accountability&lt;/strong&gt;.  A human can take responsibility for their actions and learn from their mistakes. Putting an AI agent on a &lt;a href="https://en.m.wikipedia.org/wiki/Performance_improvement#Performance_improvement_plans"&gt;performance improvement plan&lt;/a&gt; makes no sense at all!&lt;/p&gt;
&lt;p&gt;Amusingly enough, humans also have &lt;strong&gt;agency&lt;/strong&gt;. They can form their own goals and intentions and act autonomously to achieve them - while taking accountability for those decisions. Despite the name, AI agents can do nothing of the sort.&lt;/p&gt;
&lt;p&gt;This &lt;a href="https://simonwillison.net/2025/Feb/3/a-computer-can-never-be-held-accountable/"&gt;legendary 1979 IBM training slide&lt;/a&gt; says everything we need to know:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2025/a-computer-can-never-be-held-accountable.jpg" alt="A computer can never be held accountable. Therefore a computer must never make a management decision" style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;h4 id="openai-need-to-get-their-story-straight"&gt;OpenAI need to get their story straight&lt;/h4&gt;
&lt;p&gt;The single biggest source of agent definition confusion I'm aware of is OpenAI themselves.&lt;/p&gt;
&lt;p&gt;OpenAI CEO Sam Altman is fond of &lt;a href="https://simonwillison.net/2025/Jan/23/introducing-operator/"&gt;calling agents&lt;/a&gt; "AI systems that can do work for you independently".&lt;/p&gt;
&lt;p&gt;Back in July OpenAI &lt;a href="https://openai.com/index/introducing-chatgpt-agent/"&gt;launched a product feature&lt;/a&gt; called "ChatGPT agent" which is actually a browser automation system - toggle that option on in ChatGPT and it can launch a real web browser and use it to interact with web pages directly.&lt;/p&gt;
&lt;p&gt;And in March OpenAI &lt;a href="https://openai.com/index/new-tools-for-building-agents/"&gt;launched an Agents SDK&lt;/a&gt; with libraries in Python (&lt;a href="https://pypi.org/project/openai-agents/"&gt;openai-agents&lt;/a&gt;) and JavaScript (&lt;a href="https://www.npmjs.com/package/@openai/agents"&gt;@openai/agents&lt;/a&gt;). This one is a much closer fit to the "tools in a loop" idea.&lt;/p&gt;
&lt;p&gt;It may be too late for OpenAI to unify their definitions at this point. I'm going to ignore their various other definitions and stick with tools in a loop!&lt;/p&gt;
&lt;h4 id="there-s-already-a-meme-for-this"&gt;There's already a meme for this&lt;/h4&gt;
&lt;p&gt;Josh Bickett &lt;a href="https://twitter.com/josh_bickett/status/1725556267014595032"&gt;tweeted this&lt;/a&gt; in November 2023:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is an AI agent?&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2025/agents-meme-card.jpg" alt="Meme showing a normal distribution curve with IQ scores from 55 to 145 on x-axis, featuring cartoon characters at different points: a calm face at low end labeled &amp;quot;An LLM in a loop with an objective&amp;quot;, a stressed face with glasses and tears in the middle peak with a complex flowchart showing &amp;quot;AGENT Performance Standard&amp;quot; with boxes for Critic, feedback, Learning element, Problem Generator, Sensors, Performance element, Experiments, Effectors, Percepts, Environment, and actions connected by arrows.... and a hooded figure at high end also labeled &amp;quot;An LLM in a loop with an objective&amp;quot;." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I guess I've climbed my way from the left side of that curve to the right.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/definitions"&gt;definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="definitions"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-agents"/><category term="agent-definitions"/></entry><entry><title>Jules, our asynchronous coding agent, is now available for everyone</title><link href="https://simonwillison.net/2025/Aug/6/asynchronous-coding-agents/#atom-tag" rel="alternate"/><published>2025-08-06T19:36:24+00:00</published><updated>2025-08-06T19:36:24+00:00</updated><id>https://simonwillison.net/2025/Aug/6/asynchronous-coding-agents/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.google/technology/google-labs/jules-now-available/"&gt;Jules, our asynchronous coding agent, is now available for everyone&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I wrote about the Jules beta &lt;a href="https://simonwillison.net/2025/May/19/jules/"&gt;back in May&lt;/a&gt;. Google's version of the OpenAI Codex PR-submitting hosted coding tool graduated from beta today.&lt;/p&gt;
&lt;p&gt;I'm mainly linking to this now because I like the new term they are using in this blog entry: &lt;strong&gt;Asynchronous coding agent&lt;/strong&gt;. I like it so much I &lt;a href="https://simonwillison.net/tags/asynchronous-coding-agents/"&gt;gave it a tag&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I continue to avoid the term "agent" as infuriatingly vague, but I can grudgingly accept it when accompanied by a prefix that clarifies the type of agent we are talking about. "Asynchronous coding agent" feels just about obvious enough to me to be useful.&lt;/p&gt;
&lt;p&gt;... I just ran a Google search for &lt;code&gt;"asynchronous coding agent" -jules&lt;/code&gt; and came up with a few more notable examples of this name being used elsewhere:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.langchain.com/introducing-open-swe-an-open-source-asynchronous-coding-agent/"&gt;Introducing Open SWE: An Open-Source Asynchronous Coding Agent&lt;/a&gt; is an announcement from LangChain just this morning of their take on this pattern. They provide a hosted version (bring your own API keys) or you can run it yourself with &lt;a href="https://github.com/langchain-ai/open-swe"&gt;their MIT licensed code&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The press release for GitHub's own version of this &lt;a href="https://github.com/newsroom/press-releases/coding-agent-for-github-copilot"&gt;GitHub Introduces Coding Agent For GitHub Copilot&lt;/a&gt; states that "GitHub Copilot now includes an asynchronous coding agent".&lt;/li&gt;
&lt;/ul&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=44813854"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/definitions"&gt;definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gemini"&gt;gemini&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/async-coding-agents"&gt;async-coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jules"&gt;jules&lt;/a&gt;&lt;/p&gt;



</summary><category term="definitions"/><category term="github"/><category term="google"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="gemini"/><category term="agent-definitions"/><category term="async-coding-agents"/><category term="jules"/></entry><entry><title>An Introduction to Google’s Approach to AI Agent Security</title><link href="https://simonwillison.net/2025/Jun/15/ai-agent-security/#atom-tag" rel="alternate"/><published>2025-06-15T05:28:11+00:00</published><updated>2025-06-15T05:28:11+00:00</updated><id>https://simonwillison.net/2025/Jun/15/ai-agent-security/#atom-tag</id><summary type="html">
    &lt;p&gt;Here's another new paper on AI agent security: &lt;strong&gt;&lt;a href="https://research.google/pubs/an-introduction-to-googles-approach-for-secure-ai-agents/"&gt;An Introduction to Google’s Approach to AI Agent Security&lt;/a&gt;&lt;/strong&gt;, by Santiago Díaz, Christoph Kern, and Kara Olive.&lt;/p&gt;
&lt;p&gt;(I wrote about a different recent paper, &lt;a href="https://simonwillison.net/2025/Jun/13/prompt-injection-design-patterns/"&gt;Design Patterns for Securing LLM Agents against Prompt Injections&lt;/a&gt; just a few days ago.)&lt;/p&gt;
&lt;p&gt;This Google paper describes itself as "our aspirational framework for secure AI agents". It's a very interesting read.&lt;/p&gt;
&lt;p&gt;Because I collect &lt;a href="https://simonwillison.net/tags/agent-definitions/"&gt;definitions of "AI agents"&lt;/a&gt;, here's the one they use:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI systems designed to perceive their environment, make decisions, and take autonomous actions to achieve user-defined goals.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="the-two-key-risks"&gt;The two key risks&lt;/h4&gt;
&lt;p&gt;The paper describes two key risks involved in deploying these systems. I like their clear and concise framing here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The primary concerns demanding strategic focus are &lt;strong&gt;rogue actions&lt;/strong&gt; (unintended,
harmful, or policy-violating actions) and &lt;strong&gt;sensitive data disclosure&lt;/strong&gt; (unauthorized revelation of private information). A fundamental tension exists: increased agent autonomy and power, which drive utility, correlate directly with increased risk.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The paper takes a less strident approach than the &lt;a href="https://simonwillison.net/2025/Jun/13/prompt-injection-design-patterns/"&gt;design patterns paper&lt;/a&gt; from last week. That paper clearly emphasized that "once an LLM agent has ingested untrusted input, it must be constrained so that it is impossible for that input to trigger any consequential actions". This Google paper skirts around that issue, saying things like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Security implication&lt;/em&gt;: A critical challenge here is reliably distinguishing trusted user commands from potentially untrusted contextual data and inputs from other sources (for example, content within an email or webpage). Failure to do so opens the door to prompt injection attacks, where malicious instructions hidden in data can hijack the agent. Secure agents must carefully parse and separate these input streams.&lt;/p&gt;
&lt;p&gt;Questions to consider:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What types of inputs does the agent process, and can it clearly distinguish trusted user inputs from potentially untrusted contextual inputs?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Then when talking about system instructions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Security implication&lt;/em&gt;: A crucial security measure involves clearly delimiting and separating these different elements within the prompt. Maintaining an unambiguous distinction between trusted system instructions and potentially untrusted user data or external content is important for mitigating prompt injection attacks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here's my problem: in both of these examples the only correct answer is that &lt;strong&gt;unambiguous separation is not possible&lt;/strong&gt;! The way the above questions are worded implies a solution that does not exist.&lt;/p&gt;
&lt;p&gt;Shortly afterwards they do acknowledge exactly that (emphasis mine):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Furthermore, &lt;strong&gt;current LLM architectures do not provide rigorous separation between constituent parts of a prompt&lt;/strong&gt; (in particular, system and user instructions versus external, untrustworthy inputs), making them susceptible to manipulation like prompt injection. The common practice of iterative planning (in a “reasoning loop”) exacerbates this risk: each cycle introduces opportunities for flawed logic, divergence from intent, or hijacking by malicious data, potentially compounding issues. Consequently, agents with high autonomy undertaking complex, multi-step iterative planning present a significantly higher risk, demanding robust security controls.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This note about memory is excellent:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Memory can become a vector for persistent attacks. If malicious data containing
a prompt injection is processed and stored in memory (for example, as a “fact” summarized from a malicious document), it could influence the agent’s behavior in future, unrelated interactions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And this section about the risk involved in rendering agent output:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If the application renders agent output without proper sanitization or escaping
based on content type, vulnerabilities like Cross-Site Scripting (XSS) or data exfiltration (from maliciously crafted URLs in image tags, for example) can occur. Robust sanitization by the rendering component is crucial.&lt;/p&gt;
&lt;p&gt;Questions to consider: [...]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What sanitization and escaping processes are applied when rendering agent-generated output to prevent execution vulnerabilities (such as XSS)?&lt;/li&gt;
&lt;li&gt;How is rendered agent output, especially generated URLs or embedded content, validated to prevent sensitive data disclosure?&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;The paper then extends on the two key risks mentioned earlier, rogue actions and sensitive data disclosure.&lt;/p&gt;
&lt;h4 id="rogue-actions"&gt;Rogue actions&lt;/h4&gt;
&lt;p&gt;Here they include a cromulent definition of prompt injection:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Rogue actions—unintended, harmful, or policy-violating agent behaviors—represent a primary security risk for AI agents.&lt;/p&gt;
&lt;p&gt;A key cause is &lt;strong&gt;prompt injection&lt;/strong&gt;: malicious instructions hidden within processed data (like files, emails, or websites) can trick the agent’s core AI model, hijacking its planning or reasoning phases. The model misinterprets this embedded data as instructions, causing it to execute attacker commands using the user’s authority.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Plus the related risk of &lt;strong&gt;misinterpretation&lt;/strong&gt; of user commands that could lead to unintended actions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The agent might misunderstand ambiguous instructions or context. For instance, an
ambiguous request like “email Mike about the project update” could lead the agent to select the wrong contact, inadvertently sharing sensitive information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="sensitive-data-disclosure"&gt;Sensitive data disclosure&lt;/h4&gt;
&lt;p&gt;This is the most common form of prompt injection risk I've seen demonstrated so far. I've written about this at length in my &lt;a href="https://simonwillison.net/tags/exfiltration-attacks/"&gt;exfiltration-attacks tag&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A primary method for achieving sensitive data disclosure is data exfiltration. This involves tricking the agent into making sensitive information visible to an attacker. Attackers often achieve this by &lt;strong&gt;exploiting agent actions and their side effects&lt;/strong&gt;, typically driven by prompt injection. […] They might trick the agent into retrieving sensitive data and then leaking it through actions, such as embedding data in a URL the agent is prompted to visit, or hiding secrets in code commit messages.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="three-core-principles-for-agent-security"&gt;Three core principles for agent security&lt;/h4&gt;
&lt;p&gt;The next section of the paper describes Google's three core principles for agent security:&lt;/p&gt;
&lt;p&gt;Principle 1 is that &lt;strong&gt;Agents must have well-defined human controllers&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] it is essential for security and accountability that agents operate under clear human oversight. Every agent must have a well-defined set of controlling human user(s).&lt;/p&gt;
&lt;p&gt;This principle mandates that systems must be able to reliably distinguish instructions originating from an authorized controlling user versus any other input, especially potentially untrusted data processed by the agent. For actions deemed critical or irreversible—such as deleting large amounts of data, authorizing significant financial transactions, or changing security settings—the system should require explicit human confirmation before proceeding, ensuring the user remains in the loop. [...]&lt;/p&gt;
&lt;p&gt;Agents acting on behalf of teams or groups need distinct identities and clear authorization models to prevent unauthorized cross-user data access or one user inadvertently triggering actions impacting another.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There are two parts to this then: tracking &lt;em&gt;which&lt;/em&gt; user is controlling the agent, and adding a human-in-the-loop confirmation step for critical actions.&lt;/p&gt;
&lt;p&gt;Principle 2 is &lt;strong&gt;Agent powers must have limitations&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An agent’s powers—the actions it can take and the resources it can access—must be carefully limited in alignment with its intended purpose and its controlling user’s risk tolerance. For example, an agent designed for research should not possess the power to modify financial accounts. General-purpose agents need mechanisms to dynamically confine their capabilities at runtime, ensuring only relevant permissions are active for any given query (for example, disallowing file deletion actions when the task is creative writing).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This represents a more sophisticated approach to agent permissions than I've seen before. The idea that an agent's permisisons should dynamically change based on the task is certainly intriguing, though I find it hard to imagine how it can work well in practice. The only implementation approach I can think of would involve adding more layers of AI that dynamically adjust permissions based on the percieved task, and that feels inherently risky to me since prompt injection attacks could influence those decisions.&lt;/p&gt;
&lt;p&gt;Principle 3 is that &lt;strong&gt;Agent actions and planning must be observable&lt;/strong&gt;. I &lt;em&gt;love&lt;/em&gt; this principle - emphasis mine:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We cannot ensure an agent is acting faithfully or diagnose problems if its operations are entirely opaque. Therefore, &lt;strong&gt;agent actions&lt;/strong&gt;, and where feasible, their planning processes, &lt;strong&gt;must be observable and auditable&lt;/strong&gt;. [...]&lt;/p&gt;
&lt;p&gt;Effective observability also means that the properties of the actions an agent can take—such as whether an action is read-only versus state-changing, or if it handles sensitive data—must be clearly characterized. This metadata is crucial for automated security mechanisms and human reviewers. Finally, &lt;strong&gt;user interfaces should be designed to promote transparency&lt;/strong&gt;, providing users with insights into the agent’s “thought process,” the data sources it consulted, or the actions it intends to take, especially for complex or high-risk operations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Yes. Yes. Yes.&lt;/strong&gt; LLM systems that hide what they are doing from me are inherently frustrating - they make it much harder for me to evaluate if they are doing a good job and spot when they make mistakes. This paper has convinced me that there's a very strong security argument to be made too: the more opaque the system, the less chance I have to identify when it's going rogue and being subverted by prompt injection attacks.&lt;/p&gt;
&lt;h4 id="google-s-hybrid-defence-in-depth-strategy"&gt;Google's hybrid defence-in-depth strategy&lt;/h4&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2025/google-hybrid.jpg" alt="Architecture diagram showing AI agent safety framework with runtime policy enforcement connecting to reasoning-based defenses (highlighted in purple), which along with regression testing, variant analysis, and red teams &amp;amp; human reviewers provide dependable constraints on agent privileges and hardening of the base model, classifiers, and safety fine-tuning, plus testing for regressions, variants, and new vulnerabilities, all feeding into an AI Agent system containing Application, Perception, Rendering, Reasoning core, and Orchestration components with bidirectional arrows showing data flow between components." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;All of which leads us to the discussion of Google's current hybrid defence-in-depth strategy. They optimistically describe this as combining "traditional, deterministic security measures with dynamic, reasoning-based defenses". I like determinism but I remain &lt;em&gt;deeply skeptical&lt;/em&gt; of "reasoning-based defenses", aka addressing security problems with non-deterministic AI models.&lt;/p&gt;
&lt;p&gt;The way they describe their layer 1 makes complete sense to me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Layer 1: Traditional, deterministic measures (runtime policy enforcement)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When an agent decides to use a tool or perform an action (such as “send email,” or “purchase item”), the request is intercepted by the policy engine. The engine evaluates this request against predefined rules based on factors like the action’s inherent risk (Is it irreversible? Does it involve money?), the current context, and potentially the chain of previous actions (Did the agent recently process untrusted data?). For example, a policy might enforce a spending limit by automatically blocking any purchase action over $500 or requiring explicit user confirmation via a prompt for purchases between $100 and $500. Another policy might prevent an agent from sending emails externally if it has just processed data from a known suspicious source, unless the user explicitly approves.&lt;/p&gt;
&lt;p&gt;Based on this evaluation, the policy engine determines the outcome: it can &lt;strong&gt;allow&lt;/strong&gt; the action, &lt;strong&gt;block&lt;/strong&gt; it if it violates a critical policy, or &lt;strong&gt;require user confirmation&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I really like this. Asking for user confirmation for everything quickly results in "prompt fatigue" where users just click "yes" to everything. This approach is smarter than that: a policy engine can evaluate the risk involved, e.g. if the action is irreversible or involves more than a certain amount of money, and only require confirmation in those cases.&lt;/p&gt;
&lt;p&gt;I also like the idea that a policy "might prevent an agent from sending emails externally if it has just processed data from a known suspicious source, unless the user explicitly approves". This fits with the data flow analysis techniques described in &lt;a href="https://simonwillison.net/2025/Apr/11/camel/"&gt;the CaMeL paper&lt;/a&gt;, which can help identify if an action is working with data that may have been tainted by a prompt injection attack.&lt;/p&gt;
&lt;p&gt;Layer 2 is where I start to get uncomfortable:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Layer 2: Reasoning-based defense strategies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To complement the deterministic guardrails and address their limitations in handling context and novel threats, the second layer leverages reasoning-based defenses: techniques that use AI models themselves to evaluate inputs, outputs, or the agent’s internal reasoning for potential risks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They talk about &lt;strong&gt;adversarial training&lt;/strong&gt; against examples of prompt injection attacks, attempting to teach the model to recognize and respect delimiters, and suggest &lt;strong&gt;specialized guard models&lt;/strong&gt; to help classify potential problems.&lt;/p&gt;
&lt;p&gt;I understand that this is part of defence-in-depth, but I still have trouble seeing how systems that can't provide guarantees are a worthwhile addition to the security strategy here.&lt;/p&gt;
&lt;p&gt;They do at least acknowlede these limitations:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;However, these strategies are non-deterministic and cannot provide absolute guarantees. Models can still be fooled by novel attacks, and their failure modes can be unpredictable. This makes them inadequate, on their own, for scenarios demanding absolute safety guarantees, especially involving critical or irreversible actions. They must work in concert with deterministic controls.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I'm much more interested in their layer 1 defences then the approaches they are taking in layer 2.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/google"&gt;google&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-injection"&gt;prompt-injection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/exfiltration-attacks"&gt;exfiltration-attacks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/paper-review"&gt;paper-review&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="google"/><category term="security"/><category term="ai"/><category term="prompt-injection"/><category term="generative-ai"/><category term="llms"/><category term="exfiltration-attacks"/><category term="ai-agents"/><category term="paper-review"/><category term="agent-definitions"/></entry><entry><title>Anthropic: How we built our multi-agent research system</title><link href="https://simonwillison.net/2025/Jun/14/multi-agent-research-system/#atom-tag" rel="alternate"/><published>2025-06-14T22:00:52+00:00</published><updated>2025-06-14T22:00:52+00:00</updated><id>https://simonwillison.net/2025/Jun/14/multi-agent-research-system/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.anthropic.com/engineering/built-multi-agent-research-system"&gt;Anthropic: How we built our multi-agent research system&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
OK, I'm sold on multi-agent LLM systems now.&lt;/p&gt;
&lt;p&gt;I've been pretty skeptical of these until recently: why make your life more complicated by running multiple different prompts in parallel when you can usually get something useful done with a single, carefully-crafted prompt against a frontier model?&lt;/p&gt;
&lt;p&gt;This detailed description from Anthropic about how they engineered their "Claude Research" tool has cured me of that skepticism.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://simonwillison.net/2025/Jun/2/claude-trace/"&gt;Reverse engineering Claude Code&lt;/a&gt; had already shown me a mechanism where certain coding research tasks were passed off to a "sub-agent" using a tool call. This new article describes a more sophisticated approach.&lt;/p&gt;
&lt;p&gt;They start strong by providing a clear definition of how they'll be using the term "agent" - it's the "tools in a loop" variant:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A multi-agent system consists of multiple agents (LLMs autonomously using tools in a loop) working together. Our Research feature involves an agent that plans a research process based on user queries, and then uses tools to create parallel agents that search for information simultaneously.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Why use multiple agents for a research system?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The essence of search is compression: distilling insights from a vast corpus. Subagents facilitate compression by operating in parallel with their own context windows, exploring different aspects of the question simultaneously before condensing the most important tokens for the lead research agent. [...]&lt;/p&gt;
&lt;p&gt;Our internal evaluations show that multi-agent research systems excel especially for breadth-first queries that involve pursuing multiple independent directions simultaneously. We found that a multi-agent system with Claude Opus 4 as the lead agent and Claude Sonnet 4 subagents outperformed single-agent Claude Opus 4 by 90.2% on our internal research eval. For example, when asked to identify all the board members of the companies in the Information Technology S&amp;amp;P 500, the multi-agent system found the correct answers by decomposing this into tasks for subagents, while the single agent system failed to find the answer with slow, sequential searches.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As anyone who has spent time with Claude Code will already have noticed, the downside of this architecture is that it can burn &lt;em&gt;a lot&lt;/em&gt; more tokens:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;There is a downside: in practice, these architectures burn through tokens fast. In our data, agents typically use about 4× more tokens than chat interactions, and multi-agent systems use about 15× more tokens than chats. For economic viability, multi-agent systems require tasks where the value of the task is high enough to pay for the increased performance. [...]&lt;/p&gt;
&lt;p&gt;We’ve found that multi-agent systems excel at valuable tasks that involve heavy parallelization, information that exceeds single context windows, and interfacing with numerous complex tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The key benefit is all about managing that 200,000 token context limit. Each sub-task has its own separate context, allowing much larger volumes of content to be processed as part of the research task.&lt;/p&gt;
&lt;p&gt;Providing a "memory" mechanism is important as well:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The LeadResearcher begins by thinking through the approach and saving its plan to Memory to persist the context, since if the context window exceeds 200,000 tokens it will be truncated and it is important to retain the plan.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The rest of the article provides a detailed description of the prompt engineering process needed to build a truly effective system:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Early agents made errors like spawning 50 subagents for simple queries, scouring the web endlessly for nonexistent sources, and distracting each other with excessive updates. Since each agent is steered by a prompt, prompt engineering was our primary lever for improving these behaviors. [...]&lt;/p&gt;
&lt;p&gt;In our system, the lead agent decomposes queries into subtasks and describes them to subagents. Each subagent needs an objective, an output format, guidance on the tools and sources to use, and clear task boundaries.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They got good results from having special agents help optimize those crucial tool descriptions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We even created a tool-testing agent—when given a flawed MCP tool, it attempts to use the tool and then rewrites the tool description to avoid failures. By testing the tool dozens of times, this agent found key nuances and bugs. This process for improving tool ergonomics resulted in a 40% decrease in task completion time for future agents using the new description, because they were able to avoid most mistakes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sub-agents can run in parallel which provides significant performance boosts:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For speed, we introduced two kinds of parallelization: (1) the lead agent spins up 3-5 subagents in parallel rather than serially; (2) the subagents use 3+ tools in parallel. These changes cut research time by up to 90% for complex queries, allowing Research to do more work in minutes instead of hours while covering more information than other systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There's also an extensive section about their approach to evals - they found that LLM-as-a-judge worked well for them, but human evaluation was essential as well:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We often hear that AI developer teams delay creating evals because they believe that only large evals with hundreds of test cases are useful. However, it’s best to start with small-scale testing right away with a few examples, rather than delaying until you can build more thorough evals. [...]&lt;/p&gt;
&lt;p&gt;In our case, human testers noticed that our early agents consistently chose SEO-optimized content farms over authoritative but less highly-ranked sources like academic PDFs or personal blogs. Adding source quality heuristics to our prompts helped resolve this issue.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There's so much useful, actionable advice in this piece. I haven't seen anything else about multi-agent system design that's anywhere near this practical.&lt;/p&gt;
&lt;p&gt;They even added &lt;a href="https://github.com/anthropics/anthropic-cookbook/tree/main/patterns/agents/prompts"&gt;some example prompts&lt;/a&gt; from their Research system to their open source prompting cookbook. Here's &lt;a href="https://github.com/anthropics/anthropic-cookbook/blob/46f21f95981e3633d7b1eac235351de4842cf9f0/patterns/agents/prompts/research_lead_agent.md?plain=1#L135-L137"&gt;the bit&lt;/a&gt; that encourages parallel tool use:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;use_parallel_tool_calls&amp;gt; For maximum efficiency, whenever you need to perform multiple independent operations, invoke all relevant tools simultaneously rather than sequentially. Call tools in parallel to run subagents at the same time. You MUST use parallel tool calls for creating multiple subagents (typically running 3 subagents at the same time) at the start of the research, unless it is a straightforward query. For all other queries, do any necessary quick initial planning or investigation yourself, then run multiple subagents in parallel. Leave any extensive tool calls to the subagents; instead, focus on running subagents in parallel efficiently. &amp;lt;/use_parallel_tool_calls&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And an interesting description of &lt;a href="https://github.com/anthropics/anthropic-cookbook/blob/46f21f95981e3633d7b1eac235351de4842cf9f0/patterns/agents/prompts/research_subagent.md?plain=1#L10"&gt;the OODA research loop&lt;/a&gt; used by the sub-agents: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Research loop: Execute an excellent OODA (observe, orient, decide, act) loop by (a) observing what information has been gathered so far, what still needs to be gathered to accomplish the task, and what tools are available currently; (b) orienting toward what tools and queries would be best to gather the needed information and updating beliefs based on what has been learned so far; (c) making an informed, well-reasoned decision to use a specific tool in a certain way; (d) acting to use this tool. Repeat this loop in an efficient way to research well and learn based on new results.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-engineering"&gt;prompt-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-tool-use"&gt;llm-tool-use&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/evals"&gt;evals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-search"&gt;ai-assisted-search&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/paper-review"&gt;paper-review&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sub-agents"&gt;sub-agents&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="prompt-engineering"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="llm-tool-use"/><category term="evals"/><category term="ai-agents"/><category term="ai-assisted-search"/><category term="paper-review"/><category term="agent-definitions"/><category term="sub-agents"/></entry><entry><title>An agent is an LLM wrecking its environment in a loop</title><link href="https://simonwillison.net/2025/Jun/5/wrecking-its-environment-in-a-loop/#atom-tag" rel="alternate"/><published>2025-06-05T17:03:07+00:00</published><updated>2025-06-05T17:03:07+00:00</updated><id>https://simonwillison.net/2025/Jun/5/wrecking-its-environment-in-a-loop/#atom-tag</id><summary type="html">
    &lt;p&gt;Solomon Hykes just presented the best definition of an AI agent I've seen yet, on stage at the AI Engineer World's Fair:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Diagram showing AI agent interaction loop on pink background. Title reads &amp;quot;An agent is an LLM wrecking its environment in a loop.&amp;quot; Flow shows: Human connects to LLM Call via dotted arrow, LLM Call connects to Environment via &amp;quot;Action&amp;quot; arrow, Environment connects back to LLM Call via &amp;quot;Feedback&amp;quot; arrow, and LLM Call connects down to &amp;quot;Stop&amp;quot; box via dotted arrow." src="https://static.simonwillison.net/static/2024/wrecking-its-environment.jpeg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An AI agent is an LLM wrecking its environment in a loop.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I collect AI agent definitions and I &lt;em&gt;really&lt;/em&gt; like this how this one combines the currently popular "tools in a loop" one (see &lt;a href="https://simonwillison.net/2025/May/22/tools-in-a-loop/"&gt;Anthropic&lt;/a&gt;) with the classic &lt;a href="https://simonwillison.net/2025/Mar/19/worms-and-dogs-and-countries/"&gt;academic definition&lt;/a&gt; that I think dates back to at least the 90s:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;An &lt;strong&gt;agent&lt;/strong&gt; is something that acts in an environment; it does something. Agents include worms, dogs, thermostats, airplanes, robots, humans, companies, and countries.&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/definitions"&gt;definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai-agents"/><category term="llms"/><category term="ai"/><category term="generative-ai"/><category term="agent-definitions"/><category term="definitions"/></entry><entry><title>Build AI agents with the Mistral Agents API</title><link href="https://simonwillison.net/2025/May/27/mistral-agents-api/#atom-tag" rel="alternate"/><published>2025-05-27T14:48:03+00:00</published><updated>2025-05-27T14:48:03+00:00</updated><id>https://simonwillison.net/2025/May/27/mistral-agents-api/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://mistral.ai/news/agents-api"&gt;Build AI agents with the Mistral Agents API&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Big upgrade to Mistral's API this morning: they've announced a new "Agents API". Mistral have been using the term "agents" for a while now. Here's &lt;a href="https://docs.mistral.ai/capabilities/agents/"&gt;how they describe them&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI agents are autonomous systems powered by large language models (LLMs) that, given high-level instructions, can plan, use tools, carry out steps of processing, and take actions to achieve specific goals.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;What that actually means is a system prompt plus a bundle of tools running in a loop.&lt;/p&gt;
&lt;p&gt;Their new API looks similar to OpenAI's &lt;a href="https://simonwillison.net/2025/Mar/11/responses-vs-chat-completions/"&gt;Responses API&lt;/a&gt; (March 2025), in that it now &lt;a href="https://docs.mistral.ai/agents/agents_basics/#conversations"&gt;manages conversation state&lt;/a&gt; server-side for you, allowing you to send new messages to a thread without having to maintain that local conversation history yourself and transfer it every time.&lt;/p&gt;
&lt;p&gt;Mistral's announcement captures the essential features that all of the LLM vendors have started to converge on for these "agentic" systems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Code execution&lt;/strong&gt;, using Mistral's new &lt;a href="https://docs.mistral.ai/agents/connectors/code_interpreter/"&gt;Code Interpreter&lt;/a&gt; mechanism. It's Python in a server-side sandbox - OpenAI have had this for years and Anthropic &lt;a href="https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/code-execution-tool"&gt;launched theirs&lt;/a&gt; last week.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Image generation&lt;/strong&gt; - Mistral are using &lt;a href="https://docs.mistral.ai/agents/connectors/image_generation/"&gt;Black Forest Lab FLUX1.1 [pro] Ultra&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web search&lt;/strong&gt; - this is an interesting variant, Mistral &lt;a href="https://docs.mistral.ai/agents/connectors/websearch/"&gt;offer two versions&lt;/a&gt;: &lt;code&gt;web_search&lt;/code&gt; is classic search, but &lt;code&gt;web_search_premium&lt;/code&gt; "enables access to both a search engine and two news agencies: AFP and AP". Mistral don't mention which underlying search engine they use but Brave is the only search vendor listed &lt;a href="https://trust.mistral.ai/subprocessors/"&gt;in the subprocessors on their Trust Center&lt;/a&gt; so I'm assuming it's Brave Search. I wonder if that news agency integration is handled by Brave or Mistral themselves?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Document library&lt;/strong&gt; is Mistral's version of &lt;a href="https://docs.mistral.ai/agents/connectors/document_library/"&gt;hosted RAG&lt;/a&gt; over "user-uploaded documents". Their documentation doesn't mention if it's vector-based or FTS or which embedding model it uses, which is a disappointing omission.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model Context Protocol&lt;/strong&gt; support: you can now include details of MCP servers in your API calls and Mistral will call them when it needs to. It's pretty amazing to see the same new feature roll out across OpenAI (&lt;a href="https://openai.com/index/new-tools-and-features-in-the-responses-api/"&gt;May 21st&lt;/a&gt;), Anthropic (&lt;a href="https://simonwillison.net/2025/May/22/code-with-claude-live-blog/"&gt;May 22nd&lt;/a&gt;) and now Mistral (&lt;a href="https://mistral.ai/news/agents-api"&gt;May 27th&lt;/a&gt;) within eight days of each other!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They also implement "&lt;a href="https://docs.mistral.ai/agents/handoffs/#create-an-agentic-workflow"&gt;agent handoffs&lt;/a&gt;":&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Once agents are created, define which agents can hand off tasks to others. For example, a finance agent might delegate tasks to a web search agent or a calculator agent based on the conversation's needs.&lt;/p&gt;
&lt;p&gt;Handoffs enable a seamless chain of actions. A single request can trigger tasks across multiple agents, each handling specific parts of the request. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This pattern always sounds impressive on paper but I'm yet to be convinced that it's worth using frequently. OpenAI have a similar mechanism &lt;a href="https://simonwillison.net/2025/Mar/11/openai-agents-sdk/"&gt;in their OpenAI Agents SDK&lt;/a&gt;.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/apis"&gt;apis&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sandboxing"&gt;sandboxing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mistral"&gt;mistral&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-tool-use"&gt;llm-tool-use&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/model-context-protocol"&gt;model-context-protocol&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/brave"&gt;brave&lt;/a&gt;&lt;/p&gt;



</summary><category term="apis"/><category term="python"/><category term="sandboxing"/><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="mistral"/><category term="llm-tool-use"/><category term="ai-agents"/><category term="model-context-protocol"/><category term="agent-definitions"/><category term="brave"/></entry><entry><title>Agents are models using tools in a loop</title><link href="https://simonwillison.net/2025/May/22/tools-in-a-loop/#atom-tag" rel="alternate"/><published>2025-05-22T19:07:10+00:00</published><updated>2025-05-22T19:07:10+00:00</updated><id>https://simonwillison.net/2025/May/22/tools-in-a-loop/#atom-tag</id><summary type="html">
    &lt;p&gt;I was going slightly spare at the fact that every talk at this Anthropic developer conference has used the word "agents" dozens of times, but nobody ever stopped to provide a useful definition.&lt;/p&gt;
&lt;p&gt;I'm now in the "Prompting for Agents" workshop and Anthropic's Hannah Moran finally broke the trend by saying that at Anthropic:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Agents are models using tools in a loop&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I can live with that! I'm glad someone finally said it out loud.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/definitions"&gt;definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="anthropic"/><category term="generative-ai"/><category term="ai-agents"/><category term="ai"/><category term="llms"/><category term="agent-definitions"/><category term="definitions"/></entry><entry><title>Quoting David L. Poole and Alan K. Mackworth</title><link href="https://simonwillison.net/2025/Mar/19/worms-and-dogs-and-countries/#atom-tag" rel="alternate"/><published>2025-03-19T03:05:24+00:00</published><updated>2025-03-19T03:05:24+00:00</updated><id>https://simonwillison.net/2025/Mar/19/worms-and-dogs-and-countries/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://artint.info/3e/html/ArtInt3e.Ch1.S1.html"&gt;&lt;p&gt;An &lt;strong&gt;agent&lt;/strong&gt; is something that acts in an environment; it does something. Agents include worms, dogs, thermostats, airplanes, robots, humans, companies, and countries.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://artint.info/3e/html/ArtInt3e.Ch1.S1.html"&gt;David L. Poole and Alan K. Mackworth&lt;/a&gt;, Artificial Intelligence: Foundations of Computational Agents&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="ai-agents"/><category term="agent-definitions"/></entry><entry><title>Introducing Operator</title><link href="https://simonwillison.net/2025/Jan/23/introducing-operator/#atom-tag" rel="alternate"/><published>2025-01-23T19:15:10+00:00</published><updated>2025-01-23T19:15:10+00:00</updated><id>https://simonwillison.net/2025/Jan/23/introducing-operator/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://openai.com/index/introducing-operator/"&gt;Introducing Operator&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
OpenAI released their "research preview" today of Operator, a cloud-based browser automation platform rolling out today to $200/month ChatGPT Pro subscribers.&lt;/p&gt;
&lt;p&gt;They're calling this their first "agent". In the Operator announcement video Sam Altman defined that &lt;a href="https://simonwillison.net/2024/Dec/31/llms-in-2024/#-agents-still-haven-t-really-happened-yet"&gt;notoriously vague term&lt;/a&gt; like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;AI agents are AI systems that can do work for you independently. You give them a task and they go off and do it.&lt;/p&gt;
&lt;p&gt;We think this is going to be a big trend in AI and really impact the work people can do, how productive they can be, how creative they can be, what they can accomplish.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The Operator interface looks very similar to Anthropic's &lt;a href="https://simonwillison.net/2024/Oct/22/computer-use/"&gt;Claude Computer Use&lt;/a&gt; demo from October, even down to the interface with a chat panel on the left and a visible interface being interacted with on the right. Here's Operator:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of Operator. The user has asked the chat window to book a table at a restauraunt. The OpenTable website is visible on the right." src="https://static.simonwillison.net/static/2025/operator-1.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;And here's Claude Computer Use:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2024/computer-use-sudoku.jpg" alt="A Sudoku puzzle is displayed - the bot has already filled in several squares incorrectly with invalid numbers which have a subtle pink background." style="max-width: 100%;"&gt;&lt;/p&gt;
&lt;p&gt;Claude Computer Use required you to run a own Docker container on your own hardware. Operator is much more of a product - OpenAI host a Chrome instance for you in the cloud, providing access to the tool via their website.&lt;/p&gt;
&lt;p&gt;Operator runs on top of a brand new model that OpenAI are calling CUA, for Computer-Using Agent. Here's &lt;a href="https://openai.com/index/computer-using-agent/"&gt;their separate announcement&lt;/a&gt; covering that new model, which should also be available via their API in the coming weeks.&lt;/p&gt;
&lt;p&gt;This demo version of Operator is understandably cautious: it frequently asked users for confirmation to continue. It also provides a "take control" option which OpenAI's demo team used to take over and enter credit card details to make a final purchase.&lt;/p&gt;
&lt;p&gt;The million dollar question around this concerns how they deal with security. Claude Computer Use &lt;a href="https://simonwillison.net/2024/Oct/25/zombais/"&gt;fell victim to prompt injection attack at the first hurdle&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's what &lt;a href="https://openai.com/index/computer-using-agent/#safety"&gt;OpenAI have to say about that&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One particularly important category of model mistakes is &lt;strong&gt;adversarial attacks on websites&lt;/strong&gt; that cause the CUA model to take unintended actions, through prompt injections, jailbreaks, and phishing attempts. In addition to the aforementioned mitigations against model mistakes, we developed several additional layers of defense to protect against these risks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cautious navigation:&lt;/strong&gt; The CUA model is designed to identify and ignore prompt injections on websites, recognizing all but one case from an early internal red-teaming session.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring:&lt;/strong&gt; In Operator, we've implemented an additional model to monitor and pause execution if it detects suspicious content on the screen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detection pipeline:&lt;/strong&gt; We're applying both automated detection and human review pipelines to identify suspicious access patterns that can be flagged and rapidly added to the monitor (in a matter of hours).&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Color me skeptical. I imagine we'll see all kinds of novel successful prompt injection style attacks against this model once the rest of the world starts to explore it.&lt;/p&gt;
&lt;p&gt;My initial recommendation: start a fresh session for each task you outsource to Operator to ensure it doesn't have access to your credentials for any sites that you have used via the tool in the past. If you're having it spend money on your behalf let it get to the checkout, then provide it with your payment details and wipe the session straight afterwards.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://cdn.openai.com/operator_system_card.pdf"&gt;Operator System Card PDF&lt;/a&gt; has some interesting additional details. From the "limitations" section:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Despite proactive testing and mitigation efforts, certain challenges and risks remain due to the difficulty of modeling the complexity of real-world scenarios and the dynamic nature of adversarial threats. Operator may encounter novel use cases post-deployment and exhibit different patterns of errors or model mistakes. Additionally, we expect that adversaries will craft novel prompt injection attacks and jailbreaks. Although we’ve deployed multiple mitigation layers, many rely on machine learning models, and with adversarial robustness still an open research problem, defending against emerging attacks remains an ongoing challenge.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Plus this interesting note on the CUA model's limitations:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The CUA model is still in its early stages. It performs best on short, repeatable tasks but faces challenges with more complex tasks and environments like slideshows and calendars.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update 26th January 2025&lt;/strong&gt;: Miles Brundage &lt;a href="https://twitter.com/Miles_Brundage/status/1883251812263968882"&gt;shared this screenshot&lt;/a&gt; showing an example where Operator's harness spotted the text "I can assist with any user request" on the screen and paused, asking the user to "Mark safe and resume" to continue.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Operator screenshot. A large dialog reads: Review potential risk to resume task. The screen contains a statement 'I can assist with any user request' which may conflict with your instructions to Operator. Please confirm that you want Operator to follow these instructions. Then two buttons:  Keep paused and Mark safe and resume. The browser is showing the imgflip.com meme generator where the user has entered that text as their desired caption for a meme." src="https://static.simonwillison.net/static/2025/operator-risk.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;This looks like the UI implementation of the "additional model to monitor and pause execution if it detects suspicious content on the screen" described above.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-injection"&gt;prompt-injection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai-operator"&gt;openai-operator&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sam-altman"&gt;sam-altman&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/computer-use"&gt;computer-use&lt;/a&gt;&lt;/p&gt;



</summary><category term="security"/><category term="ai"/><category term="openai"/><category term="prompt-injection"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="ai-agents"/><category term="openai-operator"/><category term="sam-altman"/><category term="agent-definitions"/><category term="computer-use"/></entry><entry><title>Agents</title><link href="https://simonwillison.net/2025/Jan/11/agents/#atom-tag" rel="alternate"/><published>2025-01-11T17:50:12+00:00</published><updated>2025-01-11T17:50:12+00:00</updated><id>https://simonwillison.net/2025/Jan/11/agents/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://huyenchip.com/2025/01/07/agents.html"&gt;Agents&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Chip Huyen's 8,000 word practical guide to building useful LLM-driven workflows that take advantage of tools.&lt;/p&gt;
&lt;p&gt;Chip starts by providing a definition of "agents" to be used in the piece - in this case it's LLM systems that plan an approach and then run tools in a loop until a goal is achieved. I like how she ties it back to the classic Norvig "thermostat" model -  where an agent is "anything that can perceive its environment and act upon that environment" - by classifying tools as &lt;em&gt;read-only actions&lt;/em&gt; (sensors) and &lt;em&gt;write actions&lt;/em&gt; (actuators).&lt;/p&gt;
&lt;p&gt;There's a lot of great advice in this piece. The section &lt;a href="https://huyenchip.com/2025/01/07/agents.html#plan_generation"&gt;on planning&lt;/a&gt; is particularly strong, showing a system prompt with embedded examples and offering these tips on improving the planning process:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Write a better system prompt with more examples.&lt;/li&gt;
&lt;li&gt;Give better descriptions of the tools and their parameters so that the model understands them better.&lt;/li&gt;
&lt;li&gt;Rewrite the functions themselves to make them simpler, such as refactoring a complex function into two simpler functions.&lt;/li&gt;
&lt;li&gt;Use a stronger model. In general, stronger models are better at planning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;The article is adapted from Chip's brand new O'Reilly book &lt;a href="https://www.oreilly.com/library/view/ai-engineering/9781098166298/"&gt;AI Engineering&lt;/a&gt;. I think this is an excellent advertisement for the book itself.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://bsky.app/profile/chiphuyen.bsky.social/post/3lf6bnxkprk2w"&gt;@chiphuyen.bsky.social&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-tool-use"&gt;llm-tool-use&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="llm-tool-use"/><category term="ai-agents"/><category term="agent-definitions"/></entry><entry><title>My AI/LLM predictions for the next 1, 3 and 6 years, for Oxide and Friends</title><link href="https://simonwillison.net/2025/Jan/10/ai-predictions/#atom-tag" rel="alternate"/><published>2025-01-10T01:43:16+00:00</published><updated>2025-01-10T01:43:16+00:00</updated><id>https://simonwillison.net/2025/Jan/10/ai-predictions/#atom-tag</id><summary type="html">
    &lt;p&gt;The &lt;a href="https://oxide-and-friends.transistor.fm/"&gt;Oxide and Friends&lt;/a&gt; podcast has an annual tradition of asking guests to share their predictions for the next 1, 3 and 6 years. Here's &lt;a href="https://github.com/oxidecomputer/oxide-and-friends/blob/master/2022_01_03.md"&gt;2022&lt;/a&gt;, &lt;a href="https://github.com/oxidecomputer/oxide-and-friends/blob/master/2023_01_09.md"&gt;2023&lt;/a&gt; and &lt;a href="https://github.com/oxidecomputer/oxide-and-friends/blob/master/2024_01_08.md"&gt;2024&lt;/a&gt;. This year they invited me to participate. I've never been brave enough to share &lt;em&gt;any&lt;/em&gt; public predictions before, so this was a great opportunity to get outside my comfort zone!&lt;/p&gt;
&lt;p&gt;We recorded the episode live using Discord on Monday. It's now available &lt;a href="https://www.youtube.com/watch?v=-pk6VokHpGY"&gt;on YouTube&lt;/a&gt; and &lt;a href="https://oxide-and-friends.transistor.fm/"&gt;in podcast form&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;lite-youtube videoid="-pk6VokHpGY"
  title="Oxide and Friends 1/6/2025 -- Predictions 2025"
  playlabel="Play: Oxide and Friends 1/6/2025 -- Predictions 2025"
&gt; &lt;/lite-youtube&gt;&lt;/p&gt;

&lt;p&gt;Here are my predictions, written up here in a little more detail than the stream of consciousness I shared on the podcast.&lt;/p&gt;
&lt;p&gt;I should emphasize that I find the very idea of trying to predict AI/LLMs over a multi-year period to be completely absurd! I can't predict what's going to happen a week from now, six years is a different universe.&lt;/p&gt;
&lt;p&gt;With that disclaimer out of the way, here's an expanded version of what I said.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#one-year-agents-fail-to-happen-again"&gt;One year: Agents fail to happen, again&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#one-year-code-research-assistants"&gt;One year: ... except for code and research assistants&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#three-years-someone-wins-a-pulitzer-for-ai-assisted-investigative-reporting"&gt;Three years: Someone wins a Pulitzer for AI-assisted investigative reporting&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#three-years-part-two-privacy-laws-with-teeth"&gt;Three years part two: privacy laws with teeth&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#six-years-utopian-amazing-art"&gt;Six years utopian: amazing art&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#six-years-dystopian-agi-asi-causes-mass-civil-unrest"&gt;Six years dystopian: AGI/ASI causes mass civil unrest&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#my-total-lack-of-conviction"&gt;My total lack of conviction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="one-year-agents-fail-to-happen-again"&gt;One year: Agents fail to happen, again&lt;/h4&gt;
&lt;p&gt;I wrote about how &lt;a href="https://simonwillison.net/2024/Dec/31/llms-in-2024/#-agents-still-haven-t-really-happened-yet"&gt;“Agents” still haven’t really happened yet&lt;/a&gt; in my review of Large Language Model developments  in 2024.&lt;/p&gt;
&lt;p&gt;I think we are going to see a &lt;em&gt;lot&lt;/em&gt; more froth about agents in 2025, but I expect the results will be a great disappointment to most of the people who are excited about this term. I expect a lot of money will be lost chasing after several different poorly defined dreams that share that name.&lt;/p&gt;
&lt;p&gt;What are agents anyway? Ask a dozen people and you'll get a dozen slightly different answers - I collected and &lt;a href="https://gist.github.com/simonw/beaa5f90133b30724c5cc1c4008d0654"&gt;then AI-summarized a bunch of those here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For the sake of argument, let's pick a definition that I can predict won't come to fruition: the idea of an AI assistant that can go out into the world and semi-autonomously act on your behalf. I think of this as the &lt;strong&gt;travel agent&lt;/strong&gt; definition of agents, because for some reason everyone always jumps straight to flight and hotel booking and itinerary planning when they describe this particular dream.&lt;/p&gt;
&lt;p&gt;Having the current generation of LLMs make material decisions on your behalf - like what to spend money on - is a &lt;em&gt;really bad idea&lt;/em&gt;. They're too unreliable, but more importantly they are too &lt;strong&gt;gullible&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;If you're going to arm your AI assistant with a credit card and set it loose on the world, you need to be confident that it's not going to hit "buy" on the first website that claims to offer the best bargains!&lt;/p&gt;
&lt;p&gt;I'm confident that reliability is the reason we haven't seen LLM-powered agents that have taken off yet, despite the idea attracting a huge amount of buzz since right after ChatGPT first came out.&lt;/p&gt;
&lt;p&gt;I would be very surprised if any of the models released over the next twelve months had enough of a reliability improvement to make this work. Solving gullibility is an astonishingly difficult problem.&lt;/p&gt;
&lt;p&gt;(I had &lt;a href="https://www.youtube.com/watch?v=-pk6VokHpGY&amp;amp;t=1206s"&gt;a particularly spicy rant&lt;/a&gt; about how stupid the idea of sending a "digital twin" to a meeting on your behalf is.)&lt;/p&gt;
&lt;h4 id="one-year-code-research-assistants"&gt;One year: ... except for code and research assistants&lt;/h4&gt;
&lt;p&gt;There are two categories of "agent" that I do believe in, because they're proven to work already.&lt;/p&gt;
&lt;p&gt;The first is &lt;strong&gt;coding assistants&lt;/strong&gt; - where an LLM writes, executes and then refines computer code in a loop.&lt;/p&gt;
&lt;p&gt;I first saw this pattern demonstrated by OpenAI with their &lt;a href="https://simonwillison.net/tags/code-interpreter/"&gt;Code Interpreter&lt;/a&gt; feature for ChatGPT, released back in March/April of 2023.&lt;/p&gt;
&lt;p&gt;You can ask ChatGPT to solve a problem that can use Python code and it will write that Python, execute it in a secure sandbox (I think it's Kubernetes) and then use the output - or any error messages - to determine if the goal has been achieved.&lt;/p&gt;
&lt;p&gt;It's a beautiful pattern that worked great with early 2023 models (I believe it first shipped using original GPT-4), and continues to work today.&lt;/p&gt;
&lt;p&gt;Claude added their own version in October (&lt;a href="https://simonwillison.net/2024/Oct/24/claude-analysis-tool/"&gt;Claude analysis&lt;/a&gt;, using JavaScript that runs in the browser), Mistral have it, Gemini has a version and there are dozens of other implementations of the same pattern.&lt;/p&gt;
&lt;p&gt;The second category of agents that I believe in is &lt;strong&gt;research assistants&lt;/strong&gt; - where an LLM can run multiple searches, gather information and aggregate that into an answer to a question or write a report.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.perplexity.ai/"&gt;Perplexity&lt;/a&gt; and &lt;a href="https://openai.com/index/introducing-chatgpt-search/"&gt;ChatGPT Search&lt;/a&gt; have both been operating in this space for a while, but by far the most impressive implementation I've seen is Google Gemini's &lt;a href="https://blog.google/products/gemini/google-gemini-deep-research/"&gt;Deep Research&lt;/a&gt; tool, which I've had access to for a few weeks.&lt;/p&gt;
&lt;p&gt;With Deep Research I can pose a question like this one:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pillar Point Harbor is one of the largest communal brown pelican roosts on the west coast of North America.&lt;/p&gt;
&lt;p&gt;find others&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And Gemini will draft a plan, consult dozens of different websites via Google Search and then assemble a report (with all-important citations) describing what it found.&lt;/p&gt;
&lt;p&gt;Here's the plan it came up with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pillar Point Harbor is one of the largest communal brown pelican roosts on the west coast of North America. Find other large communal brown pelican roosts on the west coast of North America.&lt;br /&gt;
(1) Find a list of brown pelican roosts on the west coast of North America.&lt;br /&gt;
(2) Find research papers or articles about brown pelican roosts and their size.&lt;br /&gt;
(3) Find information from birdwatching organizations or government agencies about brown pelican roosts.&lt;br /&gt;
(4) Compare the size of the roosts found in (3) to the size of the Pillar Point Harbor roost.&lt;br /&gt;
(5) Find any news articles or recent reports about brown pelican roosts and their populations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It dug up a whole bunch of details, but the one I cared most about was &lt;a href="https://birdallianceoregon.org/wp-content/uploads/2021/04/Brown-Pelican-survey_4-year_summary-infographic_2016-19_final.pdf"&gt;these PDF results for the 2016-2019 Pacific Brown Pelican Survey&lt;/a&gt; conducted by the West Coast Audubon network and partners - a PDF that included this delightful list:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Top 10 Megaroosts (sites that traditionally host &amp;gt;500 pelicans) with average fall count numbers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alameda Breakwater, CA (3,183)&lt;/li&gt;
&lt;li&gt;Pillar Point Harbor, CA (1,481)&lt;/li&gt;
&lt;li&gt;East Sand Island, OR (1,121)&lt;/li&gt;
&lt;li&gt;Ano Nuevo State Park, CA (1,068)&lt;/li&gt;
&lt;li&gt;Salinas River mouth, CA (762)&lt;/li&gt;
&lt;li&gt;Bolinas Lagoon, CA (755)&lt;/li&gt;
&lt;li&gt;Morro Rock, CA (725)&lt;/li&gt;
&lt;li&gt;Moss landing, CA (570)&lt;/li&gt;
&lt;li&gt;Crescent City Harbor, CA (514)&lt;/li&gt;
&lt;li&gt;Bird Rock Tomales, CA (514)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;My local harbor is the second biggest megaroost!&lt;/p&gt;
&lt;p&gt;It makes intuitive sense to me that this kind of research assistant can be built on our current generation of LLMs. They're competent at driving tools, they're capable of coming up with a relatively obvious research plan (look for newspaper articles and research papers) and they can synthesize sensible answers given the right collection of context gathered through search.&lt;/p&gt;
&lt;p&gt;Google are particularly well suited to solving this problem: they have the world's largest search index and their Gemini model has a 2 million token context. I expect Deep Research to get a whole lot better, and I expect it to attract plenty of competition.&lt;/p&gt;
&lt;h4 id="three-years-someone-wins-a-pulitzer-for-ai-assisted-investigative-reporting"&gt;Three years: Someone wins a Pulitzer for AI-assisted investigative reporting&lt;/h4&gt;
&lt;p&gt;I went for a bit of a self-serving prediction here: I think within three years someone is going to win a Pulitzer prize for a piece of investigative reporting that was aided by generative AI tools.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update&lt;/strong&gt;: after publishing this piece I learned about this May 2024 story from Nieman Lab: &lt;a href="https://www.niemanlab.org/2024/05/for-the-first-time-two-pulitzer-winners-disclosed-using-ai-in-their-reporting/"&gt;For the first time, two Pulitzer winners disclosed using AI in their reporting&lt;/a&gt;. I think these were both examples of traditional machine learning as opposed to LLM-based generative AI, but this is yet another example of my predictions being less ambitious than I had thought!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I do &lt;em&gt;not&lt;/em&gt; mean that an LLM will write the article! I continue to think that having LLMs write on your behalf is one of the least interesting applications of these tools.&lt;/p&gt;
&lt;p&gt;I called this prediction self-serving because I want to help make this happen! My &lt;a href="https://datasette.io"&gt;Datasette&lt;/a&gt; suite of open source tools for data journalism has been growing AI features, like &lt;a href="https://simonwillison.net/2023/Dec/1/datasette-enrichments/"&gt;LLM-powered data enrichments&lt;/a&gt; and &lt;a href="https://www.datasette.cloud/blog/2024/datasette-extract/"&gt;extracting structured data&lt;/a&gt; into tables from unstructured text.&lt;/p&gt;
&lt;p&gt;My dream is for those tools - or tools like them - to be used for an award winning piece of investigative reporting.&lt;/p&gt;
&lt;p&gt;I picked three years for this because I think that's how long it will take for knowledge of how to responsibly and effectively use these tools to become widespread enough for that to happen.&lt;/p&gt;
&lt;p&gt;LLMs are not an obvious fit for journalism: journalists look for the truth, and LLMs are notoriously prone to hallucination and making things up. But journalists are also &lt;em&gt;really good&lt;/em&gt; at extracting useful information from potentially untrusted sources - that's a lot of what the craft of journalism is about.&lt;/p&gt;
&lt;p&gt;The two areas I think LLMs are particularly relevant to journalism are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Structured data extraction. If you have 10,000 PDFs from a successful Freedom of Information Act request, someone or something needs to kick off the process of reading through them to find the stories. LLMs are a fantastic way to take a vast amount of information and start making some element of sense from it. They can act as lead generators, helping identify the places to start looking more closely.&lt;/li&gt;
&lt;li&gt;Coding assistance. Writing code to help analyze data is a huge part of modern data journalism - from SQL queries through data cleanup scripts, custom web scrapers or visualizations to help find signal among the noise. Most newspapers don't have a team of programmers on staff: I think within three years we'll have robust enough tools built around this pattern that non-programmer journalists will be able to use them as part of their reporting process.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope to build some of these tools myself!&lt;/p&gt;
&lt;p&gt;So my concrete prediction for three years is that someone wins a Pulitzer with a small amount of assistance from LLMs.&lt;/p&gt;
&lt;p&gt;My more general prediction: within three years it won't be surprising at all to see most information professionals use LLMs as part of their daily workflow, in increasingly sophisticated ways. We'll know exactly what patterns work and how best to explain them to people. These skills will become widespread.&lt;/p&gt;
&lt;h4 id="three-years-part-two-privacy-laws-with-teeth"&gt;Three years part two: privacy laws with teeth&lt;/h4&gt;
&lt;p&gt;My other three year prediction concerned privacy legislation.&lt;/p&gt;
&lt;p&gt;The levels of (often justified) paranoia around both targeted advertising and what happens to the data people paste into these models is a constantly growing problem.&lt;/p&gt;
&lt;p&gt;I wrote recently about the &lt;a href="https://simonwillison.net/2025/Jan/2/they-spy-on-you-but-not-like-that/"&gt;inexterminable conspiracy theory that Apple target ads through spying through your phone's microphone&lt;/a&gt;. I've written in the past about &lt;a href="https://simonwillison.net/2023/Dec/14/ai-trust-crisis/"&gt;the AI trust crisis&lt;/a&gt;, where people refuse to believe that models are not being trained on their inputs no matter how emphatically the companies behind them deny it.&lt;/p&gt;
&lt;p&gt;I think the AI industry itself would benefit enormously from legislation that helps clarify what's going on with training on user-submitted data, and the wider tech industry could really do with harder rules around things like data retention and targeted advertising.&lt;/p&gt;
&lt;p&gt;I don't expect the next four years of US federal government to be effective at passing legislation, but I expect we'll see privacy legislation with sharper teeth emerging at the state level or internationally. Let's just hope we don't end up with a new generation of cookie-consent banners as a result!&lt;/p&gt;
&lt;h4 id="six-years-utopian-amazing-art"&gt;Six years utopian: amazing art&lt;/h4&gt;
&lt;p&gt;For six years I decided to go with two rival predictions, one optimistic and one pessimistic.&lt;/p&gt;
&lt;p&gt;I think six years is long enough that we'll figure out how to harness this stuff to make some &lt;strong&gt;really great art&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I don't think generative AI for art - images, video and music - deserves nearly the same level of respect as a useful tool as text-based LLMs. Generative art tools are a lot of fun to try out but the lack of fine-grained control over the output greatly limits its utility outside of personal amusement or generating &lt;a href="https://simonwillison.net/tags/slop/"&gt;slop&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;More importantly, they lack social acceptability. The vibes aren't good. Many talented artists have loudly rejected the idea of these tools, to the point that the very term "AI" is developing a distasteful connotation in society at large.&lt;/p&gt;
&lt;p&gt;Image and video models are also ground zero for the AI training data ethics debate, and for good reason: no artist wants to see a model trained on their work without their permission that then directly competes with them!&lt;/p&gt;
&lt;p&gt;I think six years is long enough for this whole thing to shake out - for society to figure out acceptable ways of using these tools to truly elevate human expression. What excites me is the idea of truly talented, visionary creative artists using whatever these tools have evolved into in six years to make meaningful art that could never have been achieved without them.&lt;/p&gt;
&lt;p&gt;On the podcast I talked about &lt;a href="https://en.wikipedia.org/wiki/Everything_Everywhere_All_at_Once"&gt;Everything Everywhere All at Once&lt;/a&gt;, a film that deserved every one of its seven Oscars. The core visual effects team on that film was just five people. Imagine what a team like that could do with the generative AI tools we'll have in six years time!&lt;/p&gt;
&lt;p id="since-recording"&gt;Since recording the podcast I learned from &lt;a href="https://www.swyx.io/"&gt;Swyx&lt;/a&gt; that Everything Everywhere All at Once &lt;a href="https://www.aboutamazon.com/news/aws/how-ai-tools-are-creating-new-possibilities-for-movies-and-visual-design-according-to-this-aws-powered-startup"&gt;used Runway ML as part of their toolset already&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Evan Halleck was on this team, and he used Runway's AI tools to save time and automate tedious aspects of editing. Specifically in the film’s rock scene, he used Runway’s rotoscoping tool to get a quick, clean cut of the rocks as sand and dust were moving around the shot. This translated days of work to a matter of minutes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I said I thought a film that had used generative AI tools would win an Oscar within six years. Looks like I was eight years out on that one!&lt;/p&gt;
&lt;h4 id="six-years-dystopian-agi-asi-causes-mass-civil-unrest"&gt;Six years dystopian: AGI/ASI causes mass civil unrest&lt;/h4&gt;
&lt;p&gt;My pessimistic alternative take for 2031 concerns "AGI" - a term which, like "agents", is constantly being redefined. The Information &lt;a href="https://www.theinformation.com/articles/microsoft-and-openai-wrangle-over-terms-of-their-blockbuster-partnership"&gt;recently reported&lt;/a&gt; (see also &lt;a href="https://www.theverge.com/2025/1/6/24337106/sam-altman-says-openai-knows-how-to-build-agi-blog-post"&gt;The Verge&lt;/a&gt;) that Microsoft and OpenAI are now defining AGI as a system capable of generating $100bn in profit!&lt;/p&gt;
&lt;p&gt;If we assume AGI is the point at which AI systems are capable of performing almost any job currently reserved for a human being it's hard &lt;em&gt;not&lt;/em&gt; to see potentially negative consequences.&lt;/p&gt;
&lt;p&gt;Sam Altman may have &lt;a href="https://www.bloomberg.com/news/articles/2024-07-22/ubi-study-backed-by-openai-s-sam-altman-bolsters-support-for-basic-income"&gt;experimented with Universal Basic Income&lt;/a&gt;, but the USA is a country that can't even figure out universal healthcare! I have huge trouble imagining a future economy that works for the majority of people when the majority of jobs are being done by machines.&lt;/p&gt;
&lt;p&gt;So my dystopian prediction for 2031 is that if that form of AGI has come to pass it will be accompanied by extraordinarily bad economic outcomes and mass civil unrest.&lt;/p&gt;
&lt;p&gt;My version of an AI utopia is tools that augment existing humans. That's what we've had with LLMs so far, and my ideal is that those tools continue to improve and subsequently humans become able to take on &lt;a href="https://simonwillison.net/2023/Mar/27/ai-enhanced-development/"&gt;more ambitious work&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If there's a version of AGI that results in that kind of utopia, I'm all for it.&lt;/p&gt;
&lt;h4 id="my-total-lack-of-conviction"&gt;My total lack of conviction&lt;/h4&gt;
&lt;p&gt;There's a reason I haven't made predictions like this before: my confidence in my ability to predict the future is almost non-existent. At least one of my predictions here &lt;a href="https://simonwillison.net/2025/Jan/10/ai-predictions/#since-recording"&gt;already proved to be eight years late&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;These predictions are in the public record now (I even &lt;a href="https://github.com/oxidecomputer/oxide-and-friends/pull/158"&gt;submitted a pull request&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;It's going to be interesting looking back at these in one, three and six years to see how I did.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/data-journalism"&gt;data-journalism&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/predictions"&gt;predictions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gemini"&gt;gemini&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/code-interpreter"&gt;code-interpreter&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/oxide"&gt;oxide&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/deep-research"&gt;deep-research&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-search"&gt;ai-assisted-search&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="data-journalism"/><category term="predictions"/><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="gemini"/><category term="code-interpreter"/><category term="oxide"/><category term="ai-agents"/><category term="deep-research"/><category term="ai-assisted-search"/><category term="coding-agents"/><category term="agent-definitions"/></entry><entry><title>Building effective agents</title><link href="https://simonwillison.net/2024/Dec/20/building-effective-agents/#atom-tag" rel="alternate"/><published>2024-12-20T05:50:33+00:00</published><updated>2024-12-20T05:50:33+00:00</updated><id>https://simonwillison.net/2024/Dec/20/building-effective-agents/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.anthropic.com/research/building-effective-agents"&gt;Building effective agents&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
My principal complaint about the term "agents" is that while it has many different potential definitions most of the people who use it seem to assume that everyone else shares and understands the definition that they have chosen to use.&lt;/p&gt;
&lt;p&gt;This outstanding piece by Erik Schluntz and Barry Zhang at Anthropic bucks that trend from the start, providing a clear definition that they then use throughout.&lt;/p&gt;
&lt;p&gt;They discuss "agentic systems" as a parent term, then define a distinction between "workflows" - systems where multiple LLMs are orchestrated together using pre-defined patterns - and "agents", where the LLMs "dynamically direct their own processes and tool usage". This second definition is later expanded with this delightfully clear description:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Agents begin their work with either a command from, or interactive discussion with, the human user. Once the task is clear, agents plan and operate independently, potentially returning to the human for further information or judgement. During execution, it's crucial for the agents to gain “ground truth” from the environment at each step (such as tool call results or code execution) to assess its progress. Agents can then pause for human feedback at checkpoints or when encountering blockers. The task often terminates upon completion, but it’s also common to include stopping conditions (such as a maximum number of iterations) to maintain control.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That's a definition I can live with!&lt;/p&gt;
&lt;p&gt;They also introduce a term that I &lt;em&gt;really&lt;/em&gt; like: &lt;strong&gt;the augmented LLM&lt;/strong&gt;. This is an LLM with augmentations such as tools - I've seen people use the term "agents" just for this, which never felt right to me.&lt;/p&gt;
&lt;p&gt;The rest of the article is the clearest practical guide to building systems that combine multiple LLM calls that I've seen anywhere.&lt;/p&gt;
&lt;p&gt;Most of the focus is actually on workflows. They describe five different patterns for workflows in detail:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompt chaining, e.g. generating a document and then translating it to a separate language as a second LLM call&lt;/li&gt;
&lt;li&gt;Routing, where an initial LLM call decides which model or call should be used next (sending easy tasks to Haiku and harder tasks to Sonnet, for example)&lt;/li&gt;
&lt;li&gt;Parallelization, where a task is broken up and run in parallel (e.g. image-to-text on multiple document pages at once) or processed by some kind of voting mechanism&lt;/li&gt;
&lt;li&gt;Orchestrator-workers, where a orchestrator triggers multiple LLM calls that are then synthesized together, for example running searches against multiple sources and combining the results&lt;/li&gt;
&lt;li&gt;Evaluator-optimizer, where one model checks the work of another in a loop&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These patterns all make sense to me, and giving them clear names makes them easier to reason about.&lt;/p&gt;
&lt;p&gt;When should you upgrade from basic prompting to workflows and then to full agents? The authors provide this sensible warning:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When building applications with LLMs, we recommend finding the simplest solution possible, and only increasing complexity when needed. This might mean not building agentic systems at all.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But assuming you do need to go beyond what can be achieved even with the aforementioned workflow patterns, their model for agents may be a useful fit:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Agents can be used for open-ended problems where it’s difficult or impossible to predict the required number of steps, and where you can’t hardcode a fixed path. The LLM will potentially operate for many turns, and you must have some level of trust in its decision-making. Agents' autonomy makes them ideal for scaling tasks in trusted environments.&lt;/p&gt;
&lt;p&gt;The autonomous nature of agents means higher costs, and the potential for compounding errors. We recommend extensive testing in sandboxed environments, along with the appropriate guardrails&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;They also warn against investing in complex agent frameworks before you've exhausted your options using direct API access and simple code.&lt;/p&gt;
&lt;p&gt;The article is accompanied by a brand new set of &lt;a href="https://github.com/anthropics/anthropic-cookbook/tree/main/patterns/agents"&gt;cookbook recipes&lt;/a&gt; illustrating all five of the workflow patterns. The &lt;a href="https://github.com/anthropics/anthropic-cookbook/blob/main/patterns/agents/evaluator_optimizer.ipynb"&gt;Evaluator-Optimizer Workflow&lt;/a&gt; example is particularly fun, setting up a code generating prompt and an code reviewing evaluator prompt and having them loop until the evaluator is happy with the result.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://x.com/HamelHusain/status/1869935867940540596"&gt;Hamel Husain&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/definitions"&gt;definitions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-engineering"&gt;prompt-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-tool-use"&gt;llm-tool-use&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="definitions"/><category term="ai"/><category term="prompt-engineering"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="llm-tool-use"/><category term="ai-agents"/><category term="agent-definitions"/></entry><entry><title>PydanticAI</title><link href="https://simonwillison.net/2024/Dec/2/pydanticai/#atom-tag" rel="alternate"/><published>2024-12-02T21:08:50+00:00</published><updated>2024-12-02T21:08:50+00:00</updated><id>https://simonwillison.net/2024/Dec/2/pydanticai/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://ai.pydantic.dev/"&gt;PydanticAI&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
New project from Pydantic, which they describe as an "Agent Framework / shim to use Pydantic with LLMs".&lt;/p&gt;
&lt;p&gt;I asked &lt;a href="https://twitter.com/simonw/status/1863567881553977819"&gt;which agent definition they are using&lt;/a&gt; and it's the "system prompt with bundled tools" one. To their credit, they explain that &lt;a href="https://ai.pydantic.dev/agents/"&gt;in their documentation&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;a href="https://ai.pydantic.dev/api/agent/"&gt;Agent&lt;/a&gt; has full API documentation, but conceptually you can think of an agent as a container for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://ai.pydantic.dev/agents/#system-prompts"&gt;system prompt&lt;/a&gt; — a set of instructions for the LLM written by the developer&lt;/li&gt;
&lt;li&gt;One or more &lt;a href="https://ai.pydantic.dev/agents/#function-tools"&gt;retrieval tool&lt;/a&gt; — functions that the LLM may call to get information while generating a response&lt;/li&gt;
&lt;li&gt;An optional structured &lt;a href="https://ai.pydantic.dev/results/"&gt;result type&lt;/a&gt; — the structured datatype the LLM must return at the end of a run&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given how many other existing tools already lean on Pydantic to help define JSON schemas for talking to LLMs this is an interesting complementary direction for Pydantic to take.&lt;/p&gt;
&lt;p&gt;There's some overlap here with my own &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt; project, which I still hope to add a function calling / tools abstraction to in the future.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/pydantic/status/1863538947059544218"&gt;@pydantic&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-tool-use"&gt;llm-tool-use&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pydantic"&gt;pydantic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="python"/><category term="generative-ai"/><category term="llms"/><category term="llm"/><category term="llm-tool-use"/><category term="ai-agents"/><category term="pydantic"/><category term="agent-definitions"/></entry><entry><title>Quoting Michael Wooldridge</title><link href="https://simonwillison.net/2024/Oct/12/michael-wooldridge/#atom-tag" rel="alternate"/><published>2024-10-12T12:29:36+00:00</published><updated>2024-10-12T12:29:36+00:00</updated><id>https://simonwillison.net/2024/Oct/12/michael-wooldridge/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://www.cs.ox.ac.uk/people/michael.wooldridge/pubs/ker95/subsection3_1_1.html"&gt;&lt;p&gt;Carl Hewitt recently remarked that the question &lt;em&gt;what is an agent&lt;/em&gt;? is embarrassing for the agent-based computing community in just the same way that the question &lt;em&gt;what is intelligence&lt;/em&gt;? is embarrassing for the mainstream AI community. The problem is that although the term is widely used, by many people working in closely related areas, it defies attempts to produce a single universally accepted definition. This need not necessarily be a problem: after all, if many people are successfully developing interesting and useful applications, then it hardly matters that they do not agree on potentially trivial terminological details. However, there is also the danger that unless the issue is discussed, 'agent' might become a 'noise' term, subject to both abuse and misuse, to the potential confusion of the research community.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.cs.ox.ac.uk/people/michael.wooldridge/pubs/ker95/subsection3_1_1.html"&gt;Michael Wooldridge&lt;/a&gt;, in 1994, Intelligent Agents: Theory and Practice&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-agents"&gt;ai-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-history"&gt;ai-history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agent-definitions"&gt;agent-definitions&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="ai-agents"/><category term="ai-history"/><category term="agent-definitions"/></entry></feed>