Quantcast
Channel: Francis Shanahan[.com] » Technology
Viewing all articles
Browse latest Browse all 23

A Framework for Software Agents

0
0

In my post on Software Agents I described some of the scenarios in which a Software Agent might be useful. Josef Betancourt [LINK] pointed me to his excellent article with some interesting ideas of his own and I particularly like his mind map [LINK]. Getting pragmatic I’ve been thinking about how to go about building these and will put down my thoughts in an attempt to move the conversation forward.

Let’s start with few design principles:

  • Agents should be flexible; We should be able to mix and match their functionality to create the desired outcome.
  • Agents need not be stateless and Agents should be able to sleep/wake up and resume their work.
  • Agents of a similar type should be able to execute in parallel.
  • Agents of a particular type should be atomic. I’m not sure about this one, let’s go with it for now…

Thinking about this for a minute I find that a software agent very much resembles a Workflow or a BPEL system.

Let’s take a scenario; Imagine I want to stay aware of all news related to the recent CES conference, particularly anything related to the Kinect.

Based on this the agent platform would need the following capabilities:

Raw Information Gathering:
Before it can do anything, the agent needs data. At the base level the agent would need to be able to crawl the internet, performing keyword searches to find new potential data points around the specific area of interest. It should also look to specific known sources and prioritize and scan these more often.

Other sources might be corporate email (privacy issues abound), corporate database, Twitter, RSS/Atom feeds and AP/Reuters/Bloomberg/Thompson.

This is essentially what Connotate seems to be doing [LINK]. Not very interesting so far.

Data Quality:
By now we have some raw data. Time to clean it up. To begin with we can prioritize based on the “freshness” of the information and it’s source. We can also attempt to gather any additional context from the information since context is key to the next piece of the tool chain. E.g. is the content linked to from other well known sources. Who is the author, are they an authority in the industry? What can the RDF links and FOF type meta-information tell us about where this information sits within the topic’s ontology?

We can improve this by weighting the information returned based on the source and it’s context. E.g. a reference to Kinect from FrancisShanahan.com would be worth less than a reference from BoingBoing.net.

Semantic Inference:
With all the information it’s gathered, the agent should process each piece and pull out the actual meaning; Services like Yahoo’s Term Extraction API might be useful here or Clear Forest’s Semantic API [LINK]. These services attempt to boil a piece of content down to its constituent parts: Its nouns essentially. Not terribly semantic but a small step further.

Lastly we could apply something like a Bayesian Filter on top to develop some probabilities and statistics. Just as Bayesian filters are used to identify spam, we can use the same principle to identify good content. Over time the filter would improve as feedback is garnered from the end user.

Rule Evaluation:
Such a system would benefit from a rudimentary rules engine. E.g “deliver me content, but only whilst the conference is running”. If you find content marked “Live blogging the Kinect launch” then notify me with SMS so I can get to a computer. Once the conference is over, stop sending me stuff. That type of thing.

Delivery:
Delivery is obvious, email, rss, vmail, sms etc. no need to list out the ways but a good agent would come pre-packaged with a delivery hierarchy scheme. E.g Time sensitive information should be matched to a time-sensitive delivery channel.

Backward Propagation:
This agent is likely to develop a large amount of meta-information during the course of its execution. Over time, this information should be harvested and end up in a common repository. From there we can further develop RDF trees and ontologies to feedback into the system and improve future agents.

Component Manager/Coordination:
At this point we come to a distinction; so far I have referred to Agents as if they were processes in an of themselves. I would venture however that an Agent is just a notion. In the true sense the agent is no one-thing but rather the coordination of all the aforementioned components, each performing their own unit of work, each unit of work contributing to the overall execution of the notion that is “an Agent”.

A single agent is just a piece in a larger ecosystem, with multiple agents running in parallel. Hence the Component Manager can coordinate each piece of the agents lifecycle, handing off work and spawning new components as and when needed. This will allow for effective management of the agent lifecycle whilst also supplying a means to scale the platform.

Discoverability – API:
Little has been said of this area but in keeping with the notion of SOA and Open Protocols I will put forth that any software agent platform should provide a means of discover-ability to those wishing to plug into it. Just as I have laid out a series of components above which together accomplish a given task, it’s reasonable to assume these components could be mixed and matched with other such platforms and components to develop as-yet undefined scenarios.

Over time I am confident that a standard REST protocol will emerge along the same lines as oData for example.

Taking stock it would appear the design principles have been met. We have established a set of re-useable pieces and a means to coordinate their execution such that they’ll support an idea which represents and agent working on our behalf. The platform can scale out. We can add new bells/whistles as we go but the core components should stay consistent. Not only that but we have a means to expand and interoperate with other such systems through an open protocol.

There are other areas to explore: In my scenario it was not necessary to venture into social networking, identity or indeed identity federation but these are certainly not to be overlooked. If I were a betting man I would almost guarantee Microsoft, IBM, Oracle and Google are all working on such platforms in their internal product departments.

More to come on this in future posts as the landscape evolves.


Viewing all articles
Browse latest Browse all 23

Latest Images

Trending Articles





Latest Images