Sunday, June 26, 2011

Where are all the intelligent agents?

So, where are all the intelligent agents? The question keeps popping up and the list of excuses remains long and the final answer is always some variant of "coming soon." My own personal answer is that intelligent agents are critically dependent on having a very rich intelligent semantic infrastructure. In other words, factor a lot of the intelligence out of individual agents and leverage the merged intelligence in a common, shared rich intelligent semantic infrastructure so that individual agents can be relatively dumb in their implementation but appear to be quite intelligent in operation.
In short, there are lots of tools and services and even data out there, but it is all too disjoint and nebulous and not coherent and cohesive and integrated enough to constitute the kind of deep integrated rich intelligent semantic infrastructure that is needed to make software agents grow like weeds. So, maybe, but not necessarily, we have all the pieces but they are not arranged in a critical mass where software agents can readily sprout.

-- Jack Krupansky

Richness of semantic infrastructure

Making intelligent software agents both powerful and easy to construct, manage, and maintain will require a very rich semantic infrastructure. Without such a rich semantic infrastructure, the bulk of the intelligence would have to be inside the individual agents, or very cleverly encoded by the designer, or even more cleverly encoded in an armada of relatively dumb distributed agents that offer collective intelligence, but all of those approaches would put intelligent software agents far beyond the reach of average users or even average software professionals or average computer scientists. The alternative is to leverage all of that intellect and invest it in producing an intelligent semantic infrastructure that relatively dumb software agents can then feed off of. Simple-minded agents will effectively gain intelligence by being able to stand on the shoulders of giants. How to design and construct such a rich semantic infrastructure is an open question.
Some of the levels of richness that can be used to characterize a semantic infrastructure:
  • Fully Automatic – intelligent actions occur within the infrastructure itself without any explicit action of agents
  • Goal-Oriented Processing – infrastructure processes events and conditions based on goals that agents register
  • Goal-Oriented Triggering – agents register very high-level goals and the infrastructure initiates agent activity as needed
  • Task-Oriented Triggering – agents register for events and conditions and are notified, much as database triggers
  • Very High-Level Scripting – agents have explicit code to check for conditions, but little programming skill is needed
  • Traditional Scripting – agents are scripted using scripting languages familiar to today's developers
  • Hard-Coded Agents – agents are carefully hand-coded for accuracy and performance using programming languages such as Java or C++
  • Web Services – agents rely on API-level services provided by carefully selected and coded intelligent web servers
  • Proprietary Services – Only a limited set of services are available to the average agent on a cost/license basis
  • Custom Network – a powerful distributed computing approach, but expensive, not leveraged, difficult to plan, operate, and maintain
This is really only one dimension of richness, a measure of how information is processed. Another dimension would be the richness of the information itself, such as data, information, knowledge, wisdom, and various degrees within each of those categories. In other words, what units of information are being processed by agents and the infrastructure. The goal is to get to some reasonably high-level form of knowledge as the information unit. The Semantic Web uses URIs, triples, and graphs, which is as good a starting point as any, but I suspect that a much higher-level unit of knowledge is needed to achieve a semantic infrastructure rich enough to support truly intelligent software agents that can operate at the goal-oriented infrastructure level and be reasonably easy to conceptualize, design, develop, debug, deploy, manage, and maintain, and to do all of that with a significantly lower level of skill than even an average software professional. End-users should be able to build and use such intelligent agents.