Skip to content

Instantly share code, notes, and snippets.

@cleberjamaral
Last active February 9, 2021 11:40
Show Gist options
  • Save cleberjamaral/205ef51e734273bc58d02c6341119276 to your computer and use it in GitHub Desktop.
Save cleberjamaral/205ef51e734273bc58d02c6341119276 to your computer and use it in GitHub Desktop.
Position statement

Position Statement

Cleber Jorge Amaral - PhD student at the Universidade Federal de Santa Catarina (UFSC)

It is impossible to think about our lives, as humans, without the Web. The Web is everywhere and growing each day. Indeed, it is continuously touching more people, more human agents, each day. The same seems to apply to artificial agents, i.e., many of them are already connected, to some degree depending on the Web for consuming information and acting upon it, and this condition tends to expand. I am looking forward to discussing in the Dagstuhl seminar how artificial agents can take advantage of the Web and how the programming of agents should evolve in order to contribute to the Web's evolution.

Personally, I have a few key questions regarding agents for the Web and more basic tooling in which the agents for the Web would also need.

Mainstream adoption and necessary tooling

We can see large investments and research progress in the domains of chatbots, recommender systems, and many other types of agents. Our society seems to be open to having artificial agents in more applications and to delegate to them more tasks. However, it is not clear how agents will evolve, be coded and expand, and how they will interact with each other, as well as with humans. Taking humans as an example we can see a wide variety of interests and interacting forms. Similarly, artificial agents are being developed for different domains, using different technologies. However, unlike human agents, there is little compatibility and interaction between different applications of artificial agents, and also different types of agents in the same application. At the current development stage, it is hard for an artificial agent to be able to make full use of the Web just like human agents do. Agent-Oriented Programming is proposing a new paradigm which seems to address these issues. Is it suitable in a practical manner? Although it seems our society is ready and may be willing to expand the experience with artificial agents, it is not clear if the mainstream programming community is ready and eager to dive into new concepts helping to pave the path for agents development. To summarize, the key question here is: which concepts and tooling do we need for mainstream adoption of agents?

Agents as unique and evolving entities

It seems to me that agents have a particular relationship with their states and contexts. For instance, a human who crosses a road has a target on his mind, he is paying attention to many variables regarding moving objects, his position and even other factors such as time and weather. Also, he is not only concerned about his current position and action but about all his history, his relationships, his other ongoing works, and so on. Agents cannot be seen as common objects to be built from classes and to access a shared database at any time. It seems reasonable to me that agents should be understood as unique and evolving instances with their particular contexts and experiences. We should consider that we must be able to program agents while they are running without losses and downtime. We should consider that the programmer or even the development team are not the only sources of agents' functional knowledge since agents may equally learn from other agents and from their experiences. To summarize: What is the role of interactive and collaborative programming in the agents' development? How can development teams and their tools deal with multiple sources of functional knowledge including learning techniques and other artificial agents' programming instructions?

Quality assurance in agents development

Finally, other questions I have are related to how to empower humans with the capability to better understand artificial agents, especially how to assess agents' qualities and capabilities. It is harder to assess agents' behaviour if comparing to procedural software artefacts. The latter tend to be deterministic. Indeed, an important quality of common software artefacts is their predictability and reproducibility of actions. Agents, instead, may decide on a course of actions that can be hard to predict even for the developer with complete access to its mind and functions. This complicates quality assurance of agents' code tremendously. Agents languages usually lack even well-known tooling such as unit testing support. However, standard software developing tooling may be insufficient for developing agents. For instance, common testing tools may not be ready to test agents and their possible unpredictable behaviour. Another issue is the assessment of whether a change to an agent's codebase has improved the agent's behaviour or not? Thinking about autonomous cars, the development teams are exposing those cars to a variety of situations. One may argue that a new version would need to be exposed to similar situations in order to assess its quality compared to the previous one, which is very time and resource-consuming. In this sense, the common tooling for quality assurance of procedural artefacts may not be suitable for agents. One can argue that Continuous Integration and Continuous Deployment should be designed specifically for an agent's context due to the agent's autonomy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment