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 (tm) 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?

Popular posts from this blog

Lists and arrays in Dart

Converting Array to List in Scala

Null-aware operators in Dart