The tutorial is intended to provide information on agents and agent technology to educate more of the software development and CHI community on the impact and nature of current Agent technology. By providing a reasonable backdrop for agents, this tutorial hopes to allow the student to pursue additional reading material with a more objective eye for that which is real and that which is hyperbole (hysteria?).
The tutorial student should leave with a general understanding of the structure and architectures of current agent technology, the terminology and common definitions in the field, and an understanding of some of the user interface issues in software agents.
1 What's an Agent?
The dictionary definition of agent turns out to be appropriate for this discussion:
agent \'a--j*nt\ n 1: something that produces or is capable of producing an effect : an active or efficient cause 2: one who acts for or in the place of another by authority from him.
In our discussion of software agents, both of the above definitions apply. Software agents, by definition, are active, independent components. Most agents are designed to act as or for the user to help execute some task or operation.
Each developer and researcher in the agents field adopts their own definition of an Agent. Leonard Foner defines an agent as a "program that performs tasks for a user" 1. While this is an accurate definition, it's not very useful. Pattie Maes has a more useful definition:
"A Software Agent is a computational system which has goals, sensors, and effectors, and decides autonomously which actions to take, and when"2
To my mind "Agent" is not a definition but a characteristic that software has to one degree or another. We can only define a software component as an agent by examining it's characteristics and behaviors. The first part of this tutorial is an examination of some of these characteristics and a demonstration of several software agents.
2 Kinds of Agents
Agents come in various forms for various purposes. In general we can categorize software agents by the `sophistication' of the algorithms applied. This sophistication can range from simple rules (authored by the user or some expert) to fully AI, knowledge engineered, expert agents that fully embody some domain expertise. I have arbitrarily divided agent software into three categories, 1) Fixed agenda/Rule based, 2) Learning or Adaptive, and 3) Intelligent (AI Engineered).
These categories are implementation characteristics of an agent, not definitions of utility. The role an agent plays in the user's context is a more useful taxonomy.
3 Agent Roles
Pattie Maes, in previous CHI tutorials has identified a set of roles that agents can play in helping the user2:
1. Eager Assistants
3. Memory Aids
4. Filters & Critics
6. Buying & Selling
A particular agent may play multiple roles for the user. For instance, assisting the user with a specific operation while guiding the user toward a high level goal.
The tutorial notes lists several examples of software agents for each of these roles.
4 User Interface Issues
One of the key characteristics of agent software is autonomous behavior. This raises several user interface issues for the agent developer (as well as the user). Agent user interfaces must be unobtrusive to the user and also allow the user to learn to "trust" what the agent will do when.
While the user interface for an agent must be "translucent". The agent must also allow the user sufficient control for the user feel that the agent is an effective assistant, but also "stay out of the way" while the user completes their tasks. These trust and control issues, along with the independent nature of each agent encourages the application of other user interface modes, especially speech and gestural...