What do YOU mean by "software agent"?
Although I've answered the question "What is a software agent?" as definitively as I can at this time, it does remain an open question. In particular, does a computer program have to exhibit significant signs of "intelligence" before it can be considered an "agent"? Does a program need to be significantly "autonomous" (in terms of choosing what tasks to pursue and where and how) to be an agent? And, to what extent does the program need to have broad latitude to pursue "Goals" rather than being merely "programmed" for a specific task? And what of "swarms" of "dumb agents", are they agents or not? These are all good questions.
For now, I will stick with my primary definition of a software agent:
A Software Agent (or Autonomous Agent or Intelligent Agent) is a computer program which works toward goals (as opposed to discrete tasks) in a dynamic environment (where change is the norm) on behalf of another entity (human or computational), possibly over an extended period of time, without continuous direct supervision or control, and exhibits a significant degree of flexibility and even creativity in how it seeks to transform goals into action tasks.
That said, I am reconsidering whether I really need to have a five-part definition, which recognizes five distinct categories of "agent":
- Any computer program which is external to a given program and appears to be directly associated with a user. For example, a web server views a web browser as a "user agent". In some ways this is merely referring to any "client" as an "agent".
- Any server-based program which is monitoring and interacting with one or more web services or network resources. From the perspective of a web service, the external programs are "agents" that are working on behalf of some user or some other server software elsewhere, but the interaction with the "agent" is not directly controlled by a user.
- An autonomous program which performa well-defined tasks for a user, but doesn't quite measure up to the level of true "intelligence".
- An intelligent agent which works on behalf of a user and performs at a level that would be considered "intelligent" and far beyond the capability of a non-AI computer program. When confronted by such a program, even a very sophisticated user or software professional would ask "Wow! How does it do that?"
- A relatively "small" computational entity designed to work in parallel and in conjunction with a relatively large number of similar entities to accomplish goals using "swarm-like" behavior. Each entity has only rudimentary capabilities far below the level that we would associate with intelligence, but the combined "swarm" actually does perform at a level that we would associate with intelligence.
And finally, I would note that the discussion of my current definition does include much of these "new" ideas.
Part of my motivation here is that I seek to expand the audience for my work, but I recognize that the vocabulary, beliefs, and expectations will vary widely for those outside my immediate, past sphere of interest.
-- Jack Krupansky