Skip to content
Keith Sterling edited this page Oct 11, 2018 · 123 revisions

NEW RELEASE UPDATE

Version 3.0 has been released to master.

This version includes a number of major changes including

  • Alexa Client
  • Web Socket Client
  • New Storage Engine
    • BY unifying all I/O, we are able to provide support for a wide variety of storage options including
      • SQL (MySQL, Aurora, Postgres, SQL Server etc )
      • NoSQL (Redis, Mongo)
      • File System
      • Logger
  • Persistent conversations across clients

Upgrading to Version 3.0

The biggest change is the directory structure for all files. This has been designed to support the various storage mechanisms now in place. Typically this means moving all you files from what was called 'config' folder to a more appropriately named 'storage' folder and associated sub folders. For full details of how to convert your bot to v3, see Converting to V3

Program-Y

Program Y is a fully compliant AIML 2.0 chatbot framework written in Python 3. It includes an entire platform for building your own chat bots using Artificial Intelligence Markup Language, or AIML for short.

New Features

NOTE: Version 2.0 will be released in the next few days. The current master has the latest release candidate which is undergoing thorough testing

Version 2.0 brings some important changes to the overall Program-Y platform and ecosystem including

  • Thread Safety across all processing
  • Multiple Bots per Client, useful to mix AIML and ML processing
  • Multiple Brains per Bot, useful to separate grammars, including langauge specific
  • Wide variety of clients including
    • Console
    • Web
    • Facebook
    • Twitter
    • SMS
    • XMPP (Google Hangouts)
    • Telegram
    • Slack
    • Viber
    • Kik
    • Line
    • TCP Socket
    • REST
  • Improved Logging which now includes more info about the client, bot and brain
  • Support for AIML 2.x Rich Media
  • Support for Emojis
  • Natively support Pypi installation
  • Asynchronous Scheduling of events, used to carry out time-dependent callbacks, such as "remind me 7:00am to wake up" or "Set a timer for 20 minutes". The bot will then call back to your client asynchronously with the text or parsed grammar

Rich Media

Rich media is an exciting enhancement to AIML proposed by the AIML Foundation which adds a range of new capabilities to the AIML langauge to help in building engaging interfaces. Rich media introduces a number of new template tags including

  • button
  • card
  • carousel
  • delay
  • image
  • link
  • list
  • location
  • reply
  • split
  • video

Rather than just returning plain text, using these tags allows you to build conversations that including buttons, clickable links, images, videos and more complex UI structures

Breaking Changes

Along with this work there are some break changes for anyone actively developing their own extensions or clients. The biggest change is that any Python method that used used to take the parameters 'bot, clientid' has been modified and these 2 variables replaced with the object client_context. Which stores conversational state, including the client making the call, the bot used to ask the question, the brain that processed the grammar and parse depth.

About Program-Y

Program Y is fully cross-platform, running on

  • Mac OSX
  • Linux
  • Windows

100% Support for all AIML 2.0 Tags plus all Pandora bot ones they never documented

  • Full support for al AIML 2.0 Tags
  • RDF Support through addtriple, deletetriple, select, uniq and uniq
  • List processing with First and Rest
  • Advanced learn support including resetlearn and resetlearnf
  • Full Out Of Band Support
  • Full embedded XML/HTML Support
  • Dynamic Sets, Maps and Variables
  • Comprehensive Tutorial and User Guide covering setup, configuration, running, AIML Grammar development and extending the core capabilities

Program Y is extremely extensible, you can

  • Add you own AIML tags
  • Add you own Spelling Checker
  • Support User Authorisation
  • Support User Authentication
  • Add your own Out Out Band (OOB) tags
  • Add Dynamic Sets in Python
  • Add Dynamic Maps in Python
  • Add Dynamic Variables in Python
  • Run a variety of clients, including
    • Console
    • REST
    • Web Chat
    • Twitter
    • Google Hangouts (XMPP)
    • SMS
    • Facebook
    • Slack
    • Hangouts
    • Telegram
    • Viber
    • LINE
    • Kik

Program-Y comes with a base set of grammars for various industry sectors, including

  • Energy Industry
  • Banking
  • Telecoms
  • Weather
  • Surveys
  • News Feeds
  • Maps

Artificial Intelligence Markup Language

AIML is an XML language for specifying the contents of a chat robot character. An AIML Interpreter is a program capable of loading and running the bot, and providing the bot’s responses in a chat session with a human user, called the client.

Background and History

In a previous life, I help build a chatbot for an energy company to answer basic customer questions and a carry out a limited number of interactions on their account. I was hugely proud of the work myself and the team did, the bot was incredibly successfully, saving the company £1000's in customer support costs and was also nominated for a number of awards, once only being beaten by the Intel Team who created Stephen Hawkings voice system at the 2015 V3 Awards where it was nominated for Technology Project of the Year

That bot was based on a Python 2.x version of an AIML 1.0 interpreter that I converted to Python 3 and then heavily modified to support a wide range of additional features and capabilities needed as a Virtual Customer Service Agent. Most of which have now been added to AIML 2.0 spec. However no one has yet built a fully functional Python 3.x interpreter, hence this project.

Enjoy and please leave any feedback for me and I'll get back to you.

For a full tutorial on running, using and developing your own AIML Grammars go to Getting Started with YBot

If you are interested in the internals and how Y-Bot is constructed then check out the following page Y-Bot

Getting Help

Clone this wiki locally