Name | Modified | Size | Downloads / Week |
---|---|---|---|
README.txt | 2018-03-28 | 3.6 kB | |
aimlGOAP-0.1.0.tar.gz | 2018-03-28 | 12.9 kB | |
Totals: 2 Items | 16.5 kB | 0 |
aimlGOAP v0.1.0 aimlGOAP is a GOAP implementation for AIML bots. It requires PyGOAPng v0.3.1. Goals are defined using the Bot.add_goal() function. To add a goal that the bot should try to learn the user's name, add a goal like this: bot = Bot("Alice") bot.add_goal(DefinedVariableGoal("name")) Once the "name" tag has been defined in the bot's blackboard, the bot will stop trying to generate responses that attempt to determine the value of the "name" variable. To define the "name" variable, use something like this: tag = Tag(name="John Smith") bot.bb.post(tag) Multiple goals can be active at the same time. Actions are defined in the aimlgoap/bot/actions.py file which contains two classes for each variable that the bot tries to define: class username(ActionBuilder) username.get_actions() If the "name" variable is not defined, this function will return a CallableAction that can be used to attempt to define the variable. username.build_action() This function is invoked to create the CallableAction for this class. It defines the effect of taking the action - namely that it expects the "name" variable to be defined. class username_action(CallableAction) __init__() Defines the "cost" of the action (generally 1, but more "expensive" actions can have a higher cost, making them less likely to be chosen), the prerequisites for this action to complete (that the "name" variable is defined), and an array of aiml_patterns which can be output to provoke the user into providing a response that an AIML bot can use to determine the appropriate value for the "name" variable. Today these are just text output, but in the future they will be full templates that can contain AIML markup. start() Sets the state to running and calls update(). update() Executes any action that the GOAP planner may need before determining if the goal has been properly satisfied. In the case of a DefinedVariableGoal all it needs to do is test to see if the variable has been set in the bot's blackboard. If so, it calls finish(). finish() For each effect defined in the ActionBuilder's build_action() function, apply any changes to the bot that are necessary. In the case of a DefinedVariableGoal, there is nothing to do since the variable has already been defined by the time the code gets here. Next it sets the current_response to blank and changes the state to finished. The first class (the ActionBuilder) must be added to the exported_actions array in order to make the action available to the bot to GOAP planner. Multiple actions can be added to exported_actions which satisfy the same goals. This will give the GOAP planner more choices. In a future release, the actions will be defined in a simple XML file which will make development of goals and actions easier, and the aimlGOAP library will return AIML markup which can be parsed by an AIML interpretter instead of returning plain text. The aiml.goap.test.py script provides an example of how the bot changes its line of questioning when a goal is fulfilled. The aiml.goap.bot.py script shows how to integrate the aimlGOAP module into a PyAIMLng bot like ANGie. Links to other projects: PyGOAPng: http://pygoapng.sourceforge.net/ PyAIMLng: http://pyaimlng.sourceforge.net/ ANGie: http://angiebot.sourceforge.net/