In computer science, a software agent is a computer program that acts for a user or other program in a relationship of agency, which derives from the Latin agere (to do): an agreement to act on one’s behalf. Such “action on behalf of” implies the authority to decide which, if any, action is appropriate.
Related and derived concepts include intelligent agents (in particular exhibiting some aspect of artificial intelligence, such as learning and reasoning), autonomous agents (capable of modifying the way in which they achieve their objectives), distributed agents (being executed on physically distinct computers), multi-agent systems (distributed agents that do not have the capabilities to achieve an objective alone and thus must communicate), and mobile agents (agents that can relocate their execution onto different processors).
The basic attributes of a software agent are that agents
- are not strictly invoked for a task, but activate themselves,
- may reside in wait status on a host, perceiving context,
- may get to run status on a host upon starting conditions,
- do not require interaction of user,
- may invoke other tasks including communication.
The term “agent” describes a software abstraction, an idea, or a concept, similar to OOP terms such as methods, functions, and objects. The concept of an agent provides a convenient and powerful way to describe a complex software entity that is capable of acting with a certain degree of autonomy in order to accomplish tasks on behalf of its host. But unlike objects, which are defined in terms of methods and attributes, an agent is defined in terms of its behavior.
Various authors have proposed different definitions of agents, these commonly include concepts such as
- persistence (code is not executed on demand but runs continuously and decides for itself when it should perform some activity)
- autonomy (agents have capabilities of task selection, prioritization, goal-directed behaviour, decision-making without human intervention)
- social ability (agents are able to engage other components through some sort of communication and coordination, they may collaborate on a task)
- reactivity (agents perceive the context in which they operate and react to it appropriately).