A software agent is a computational entity which is able to function autonomously and with flexibility in an environment, usually also inhabited by other agents and processes. These two criteria distinguish a software agent from other software. Autonomous here means that, it has control of its own taks and is capable of accomplishing complex tasks designed for it without human or other agents’ intervention. Flexibility is defined as its responsive, pro-active and sociable behavior to reach towards changes it receives from the environment. In summary, a software agent is a computer system that is capable of flexible autonomous action in dynamic, unpredictable, typically multi-agent domains.
Intelligent agents have a certain degree of specific domain knowledge with which gives them the capability of reasoning and learning. This capability requires the agent to have access to a knowledge base and an inference engine for reasoning and iteratively contributing new information to the knowledge base. The capability of learning also determines the adaptive behavior of an agent to effectively handle new situations or contexts.
Collaborative agent has the capabiity to negotiate and communicate effectively with other agents, users and systems through a universally agreed nomenclature, communication language and interoperability norms. Inter-agent communication is carried out using, for instance, a knowledge query manipulation language that assumes specific domain ontology for specific agent applications.