The goal of research in intelligent agents is to construct software that can provide individualized
assistance to users. Two approaches that have been used in the past are 1) to force the end-user to
provide the necessary skills by programming the agent, or 2) to provide the agent with a priori
domain-specific knowledge about the application and user. The first approach is too difficult for
most users, and the second approach is too hard for application developers, who must accurately
predict the current and future needs of users