Thursday, July 28, 2011

In development: Adding events and singleton

I diverged a little from creating static responses while thinking how to generate a learning type of AI. Now that I separated the MW from the UI, I thought it would be interesting to try to design the MW more like a person. Thus I created a brain where most of the functions or generated.

In the brain, I started with generic senses of touch, smell, see, hear, and taste. Besides hear, the others senses will just currently be not implemented. I just thought it interesting to leave it open for possible future enhancements. Hear and see are very plausible.

For output, I only added speak at this time because there are no other simplified generic list of outputs.

The next step was difficult as I read through the different senses, brain, thought, and philosophy of thought. There is little that we fully understand so at this point, I just decided on what I am most comfortable and familiar with. It may be completely wrong but might as well figure out why it's wrong that thinking it all through.

I went with creating a conscience as a separate entity that "listens" to certain brain functions. The internal working of the brain, I will classify as sub-conscience although I could separate it out but that can be implemented later.

Since my AI will just have one brain and one conscience, I made these singleton types so that only one instance is guaranteed. The conscience will access certain parts of the brain, in particular the listening buffer. An event is created whenever the brain hears something. Another event is a timer to periodically check certain statuses (primarily create responses when silence has reached a certain period of time).

The step I am considering now is about memory. I am leaning towards creating a sensory, short-term and long-term memory architect. Sensory would be the instant responses like hi, hello... perhaps just recalling that we had already greeted at some point. Short-term will be things discussed but not beyond the conversation. Could potentially add a limit to the queue to "forget" certain things if the conversation becomes long but that's another phase. Long term will be important facts stored in the data-base. I haven't quite figured how to release all this yet though.

No comments:

Post a Comment