The most primitive meaning covers the mechanisms by which the agent obtains information about its environment. These mechanisms depend to a large extent on the nature of the agent, the nature of the tasks it is set and the nature of the environment within which it operates. These are beyond the scope of this general paper, but in any case I would be hesitant to call these communication.
With mobile agents, the term must also include the mechanisms by which such agents move from one place to another; again, these technicalities will not be discussed here.
The most interesting usage of the term covers the mechanisms by which agents exchange information - such as facts about the world (including facts about the environment) and other high-level symbolic information such as requests for action.
In the sense that in a multi-agent system agents form part of the environment of other agents, inter-agent communication could be seen as "sensing the environment" but I feel it is clear that this is a meta-property of agent-to-agent communication and qualitatively different from other mechanisms by which an agent might sense its environment.
Is a non-communicative agent possible? That is, one which interacts with its environment, carries out a task, but does not require communication? With a fixed, one-shot design, no communication of its task from human to agent would be necessary. Similarly, if the agent was to carry out a task, there might be no need to communicate the completion of the task back to the human user explicitly. In a system containing no other agents, clearly agent to agent communication would also be unnecessary.
One could take the position that the communication from user to agent was embodied in some way in the fabric of the agent and that the completed task was a communication of sorts from agent to human, but this seems a very contrived stance.
Such lack of communication would in no way lower the validity of calling an entity an agent if it had in some measure those other attributes we associate with agency - independence and intelligence chief among them.
It seems to me therefore that communication is not an essential or even particularly necessary component of agency.
However, the idea of communicating agents is very interesting; the potential for interaction between agents, particularly in the area of collaboration and exchange, is clearly enormous. Likewise the possible benefits of communication between humans and agents are very great.
Foner (Foner, 1993 p.35) refers to "discourse", exchanges allowing the parties (user and agent or two or more agents) to express needs and capabilities and to negotiate a set of actions on both sides that will result in a desired state of affairs.
Those propounding what Wooldridge and Jennings (Wooldridge & Jennings, 1995 p.5) call the "strong notion" of agency would maintain that an agent that did not communicate is no agent at all - that communication between agents but most importantly communication between human users and agents is crucial to agency.
Genesereth and Ketchpel go so far as to say that "an entity is a software agent if and only if it communicates correctly in an agent communication language like ACL" (Genesereth & Ketchpel, 1994 p.6). As a limiting definition for the purposes of their paper this is quite acceptable. However it is by no means clear from the context in which the above statement was made that it was intended in that limited way! As a bald statement it has a few problems - firstly, as described above, it is entirely possible to conceive of an entity that is in every other sense an agent but does not communicate; or if it does communicate, that does not do so with entities that can reasonably be termed its peers. Secondly, defining agents as entities that talk to other agents seems somewhat self-fulfilling!
For any except fixed-purpose, "hard-coded" agents, communication will be extremely important. It will define for the agent what it is to do, or will at least be a very important component of that definition. Similarly, the agent reporting results to the user will be an important part of the use of the agent, particularly if the function of the agent is to retrieve information.
Communication is the translation of information into some symbolic language, which is then transmitted over some physical channel from a sender to one or more receivers. Each receiver reverses the process to convert the symbolic language into information which can be used.
There is no necessary similarity between the internal representations of communicated information in communicating agents. This means that on each side of the exchange there will be at least two translation steps - one from the internal representation into a suitable common language and one from the common language into the internal representation.
There is no necessary link between the symbology chosen for the transfer of information and the reality that the symbology is intended to represent. The word "dog" has no intrinsic relationship with the concept "canine", for example . For many kinds of "reality" there may be no single objective or a priori fact to agree upon at all.
Irrespective of these existential difficulties, good communication must begin with a common language. Such a language should be expressive - that is, it should be possible to use the language to express all the matters which need communicating. It should be internally consistent, so as to remove as far as possible ambiguity arising from the language itself.
Even with a common language, misunderstanding is still possible. Subtle or not-so-subtle differences may exist in the way particular symbols are translated. However, lack of a common language precludes any communication. In agent terms, use of a popular or widespread language will allow it to communicate with more agents than would use of a less widely used language. Having access to those agents makes for a far richer environment, particularly if those agents are informed by humans.
Quite apart from the conceptual issues of what is communicated and how it is used, the issue of communicating agents raises several interesting technical difficulties.
First among these is the issue of bandwidth, and closely related is the issue of speed. Genesereth and Ketchpel point out that in contexts involving only a few agents, inter-agent communication remains fairly low cost. In a context where many agents are involved, the amount of resources involved in communication must be considered (Genesereth & Ketchpel, 1994 p.8).
As Finin and Fritzson point out, the big questions in inter-process communication are knowing who to talk with, locating them in order to talk and knowing how to talk to them (Finin et al., 1994). None of these matters are difficult in principle, but all three scale very badly indeed.
A very similar scenario has been played out over recent years with ordinary networks - early network protocols such as AppleTalk were quite profligate in their use of the network for control information, because the more each node "knew" about the others, the more effectively the network as a whole could function. Nowadays, with networks connecting many hundreds of machines, such protocols are proving problematical because the volume of control information is affecting the capacity of the network to carry user data.
KIF is basically a language in which "facts" are stated - a declarative language. Each statement names a relationship, then the components which are in that relationship. For example, the fact that zero is less than one would be expressed thus:
(< 0 1)
KIF also supports some procedural ability - instructions to the reader to carry out actions.
KQML is a language that permits KIF statements (or statements in similar languages) to be conveyed as messages from one KQML-capable entity to another. Messages consist of a three layers - a communication layer, a message layer and a content layer.
The communication layer contains the entire communication, wrapping it with sender identification, intended recipient information and a message identifier. The message layer identifies what format the content is in and how it is to be used, the latter elements being called performatives. The content is the body of the communication.
A given KQML communication thus requires that the sender and recipient have KQML as a common language, but also that the content of the message is expressed in a common language. In this respect, KQML is a meta-language - it carries information about information - what it is, how to use it and so on.
This KQML fragment notifies the recipient that zero is less than one, using KIF:
(tell :language KIF :ontology mathematics :content (< 0 1) )
Note the use of the keyword "ontology"; this is a clue to the recipient about the domain in which the information being sent applies.
KQML is perfectly able to communicate messages containing any content types that are mutually acceptable to the agents involved - Finin and Fritzson give examples involving Prolog, another declarative language that has been favoured by some researchers and is even used directly as an agent language by Cohen et al. (Cohen et al., 1994).
Any such direct sharing of information would certainly require an extremely high degree of compatibility between the participating agents. It is unreasonable to expect that many different agents, produced by many different people for widely varying purposes, would be likely to be so similar in internal structure as to be able to share information at such an intimate level.
An interesting taxonomy along similar lines would be a taxonomy based on the closeness of coupling. All the couplings suggested by Fulbright and Stephens (except for Type 1 agents) would collapse into one class, namely the class of agent directly sharing some element of information-space with others, though there may still be room for classification within that class. The remaining agents, by definition all of Type 1, could then be further categorised according to the degree of structure in their communication methods.
Such a taxonomy might bring new life to Fulbright and Stephens' idea of cohesion.