I’m Squinting… But No Agents So Far
Jim Hendler asks so where are the agents? More specifically, I’d like to ask What do we need before agents can be deployed?
Let me define what I believe an agent is by looking at what it would do for me. I think a software agent is a program that can be given a set of rules and able to seek out data that satisfies those rules. Agents are different from other sets of software that can answer queries in that Agents would be able to reason about the world and would be capable of acting towards its goal(s) over a long period of time. These agents would act without direct human control, which is especially import if the task would take some time to complete.
Given that definition of an Agent, I revisit the question: What do we need before agents can be deployed?
Because Agents are task focused, we need a way to define the task in such a way that the Agent understands it. I can imagine simple use cases like “Schedule my dentist appointment every six months. Of course, make sure my calendar and the doctor’s calendar match up. If I happen to schedule a very important event for the same day, kindly move my dentist appointment to a later date.” Many calendar and event related use cases come to mind. Calendaring seems to be a perfect use case for Agents, because the data can be relatively easy to encode and because all the events are in the future, it gives the Agents some time to finish their tasks.
As you can tell, my natural language description of my simple task was easy and quick to write down, but left out many specifics that a computer might demand. Two average adults would be able to understand the gist of the Task. However, the adults would probably need to ask one or more questions for clarification.
And this brings me to the second thing an Agent needs to do: Reason and clarify about the world. Let’s assume for a moment that I was able to instruct my agent about my need to maintain healthy teeth on a regular schedule. The real difficult part becomes how to have my Agent converse with the Dentist’s Scheduling Agent. (Not to mention, my Agent has to locate the Dentist’s Agent in the first place.) Once the two Agents are communicating (waiving arms in the air here), how do they begin to speak the same language? Did they agree on some standard Scheduling Ontology before hand? I hope so, because Ontology languages such as OWL would let the two Agents formally agree upon some semantics for their conversion.
There aren’t any Agents out there helping normal people with real life tasks because Real Life ™ is too vague, complex, dirty, abstract, and otherwise beautiful to be coded into a language that a computer program can understand. We’re just not able to give abstract and fuzzy task descriptions to a computer program yet.
I don’t need an agent that can continually run Google queries and let me know if something new was found. That’s not an agent, that’s a cron job, and that’s a simple task. I need an Agent that can begin to understand my world, my tastes, _my rules_, and handle the simple things like negotiating my calendar so I don’t have to. Let the Agent handle the 80% and let me handle the 20%. That’s more fun, challenging, and ultimately rewarding.
So where are the Agents? It’s better to ask, What’s preventing the Agents from appearing?
Is my definition of an Agent way off? Am I asking too much? What’s a good middle ground?

I think that at least part of the problem is that the software tools that exist for developing agents aren’t easy enough for just anyone to use. My dentist doesn’t have a scheduling agent, and he’s certainly not going to pay some software developer to develop and deploy such an agent for him — how would that make any business sense for him?
Online services like Blogger, flickr, Wikipedia and yes, MySpace, are successful because they provide tools that someone with little or no programming experience can use. As long as developing autonomous, reasoning agents is restricted to software developers who can grok RDF and OWL, you’re just not going to see mainstream agent deployment.
Lyle
March 9, 2007 at 7:26 am
I’d call a google-searching cron job an agent. It seems like it meets your definition, although the action it does is not very impressive, and it happens to have minimal reasoning/clarification abilities. But you could make a slightly fancier one that does talk to you/google/someOtherSite for clarifications. Or you could add the ability to gather new keywords from your IM logs, so the agent learns something about what you care about.
Do the airfare-search websites count as agents? I think some of them will even do part of their search and then ask you for clarification before they can finish.
I generally agree with you: I want more agents; I want them to use RDF for their data; I want them to take over more and more of each task as I input more data about myself. But I also suspect that these ideal agents will appear quite gradually, and the cron job is just an early form.
By the way, some people are already dazzled by the google cron job
http://dilbertblog.typepad.com/thedilbertblog/2007/03/toofrickincoo.html
cheers-
Drew
Drew
March 9, 2007 at 5:15 pm
My mom would say “Thomas, go outside. Leave the agents for now”.
Thomas
March 14, 2007 at 9:34 pm
I use an online “agent” that once given a list of URLs, will periodically check those URLs, download new updates, parse the returned documents, sort, merge, and present the combined collection of objects ordered by update time. (or other criteria)
I call it Google Reader.
There are agents out there, but we’re always quick to dismiss them as too simplistic. We’re looking for that future vision of flying cars and missing all the smaller advancements we’ve seen.
Also, I think the Atom Publishing Protocol will open the doors for a lot of the agent to agent interactions. (My dentist would accept an Atom Entry containing iCal or xCal markup to schedule my appointment)
Daniel E. Renfer
March 29, 2007 at 3:33 am