Intelligent agents are an interest and a specialization of mine. From 1995-2002 I worked to pioneer and productize the intelligent agent space. What's an intelligent agent? It's an automated, personal servant. Agents are a subset of bots, the general term for automated programs. Another subset of the bot category is spiders, used by search engines and portals to scour the Internet and intranets.
What exactly differentiates an intelligent agent from other kinds of automated programs? The answer can be found in the term itself. "Intelligent" suggests good decision making capabilities. "Agent" suggests specialization combined with personalization. Think travel agent, insurance agent, accountant, attorney: people who are good at what they do and represent you personally. So, an intelligent agent works on your behalf, which means it has to know something about your wishes, is good at some specialized task, and makes good decisions. If an agent can't do something useful, makes poor choices, or isn't tuned in to your expectations, it's highly unlikely you will entrust it with anything meaningful, so these three areas need to be masterfully implemented. Note that the "personalization" aspect of intelligent agents doesn't limit their use to individuals; an agent might just as easily have marching orders to serve a department or an entire organization.
Why intelligent agents? During the Internet boom, we saw a great focus on interactive technologies: browsable web sites and email. This made the web great for human beings, not so great for automated processing. There was clearly a demand for such automation. What was needed was an automated counterpart to the interactice side of the Web. In 1999, MS Press published my book, "Programming Bots, Spiders, and Intelligent Agents in Visual C++". A year later, my programming language for intelligent agents, Network Query Language, was released. Many other companies courted the same space.
Automated retrieval, transformation, and delivery of information over the Internet turned out to be possible, especially with good tools, but there were some nagging problems. These included accepting the imperfections of such technologies as screen scraping or using fuzzy logic to guess interpret the format of web pages. Web content frequently changed, forcing constant revision of programs. Content providers were perfectly content to be accessed by millions of human beings but raised objections when accessed by automated software. The bottom line was, the lack of an infrastructure for automated access and a lack of supporting technologies by major vendors put a damper on convincing many organizations to go forward with the idea of intelligent agents, even though the interest was there.
Fast forward a few years, and the industry starts to get it. Just about everyone embraces XML as a universal data sharing scheme and already has an HTTP web server: put them together with a few new standards such as SOAP and we have first-generation web services. Now we are seeing the next generation of services, with enterprise-ready sophistication. These new services are able to support multiple transports and provide features for security, reliable messaging, and transactions.
What is the purpose of services? To provide automated access to web and enteprise resources, with great interoperability. Who will access services? Programs carrying out the wishes of their owners, in a competent way, with good decision making capabilities. This should sound familiar, it's the criteria for intelligent agents discussed earlier.
So far, service orientation has been emphasizing the definition and merits of the service, a passive program that responds to messages. But we shouldn't forget the client, the active initiator of messages. That's where many intelligent agents are going be implemented, as the clients of web services. Eventually our attention will focus on the client, and the need to make them competent, specialized, and personalized will be quite apparent. Intelligent agents will make a comeback, though it's too soon to know if they'll retain that label. We already see agent offerings emerging on popular search engines and job sites, a trend sure to continue. At home and in the enterprise, it's becoming commonplace to use agents to scan for viruses, keep software up to date, and filter out spam. We can imagine agents that scour multiple web services to find you the lowest price, the best deal, the fastest delivery, the news that concerns you, and the entertainment that suits you best. We can imagine agent interfaces that are carefully designed to let agents run autonomously on your behalf, but give you fine control over monitoring their status and revising your instructions. We can imagine agents that earn your trust in greater and greater degrees by proving themselves reliable and competent.
It's nice to have the infrastructure and industry support that will let intelligent agents flourish, but the industry still needs to address two important areas: legal issues and security. I have seen, countless times, where a company has no concerns about a human being regularly getting data from a web site interactively, but when contemplating replacing that person with an agent there are suddenly legal concerns left and right. We need some precedents set for what your designated automated agent is permitted to do on your behalf. From a security standpoint, we need to think about what aspects of its owner's identity and permissions an agent may exhibit for security authorization and authentication purposes. We also need a surefire way for users to precisely specify what information about them an agent shares with the outside world. Agents will need to be shrewd about the information they share and who they share it with. Both of these areas are going to need scrutiny, and soon.
Agents are back, and it's about time.