The Billy Project

In Pursuit of Artificial Intelligence


Overview | Downloads | Manual FAQ Screenshots History Donate |

Join the mailing list!

To view the archives and statistics for the list,
go here.

The Billy Project mailing list is proud to be hosted by Topica

Latest news

November 4, 2005 - Updated the Links page. Namely, added a link to an article at ComputorEdge about Billy and Daisy, and updated the link to the online Billy.

January 18, 2004 - Released Billy 4.1. Several new features have been added, and many bugs have been fixed. Download it, or check out the release notes. Also, if you are upgrading from 4.0, check out the new FAQ.



Billy is developed by Gregory G. Leedberg. If you have any suggestions, questions, or comments, feel free to send it to me.


Copyright (c) 2001-2004 Greg Leedberg

Sections in bold have been updated since version 4.0.

  1. Disclaimer
  2. What Is This, Exactly?
  3. The Basics: Running Billy
  4. How To Uninstall (Or, "This Is Pretty stupid")
  5. Saving Transcripts
  6. The Concept of the Day is: "Mind Files"
    1. What Are They?
    2. Where Do Mind Files Come From?
  7. Loading A Mind File
  8. Customizing A Mind File
    1. The Basic Attributes
    2. Initializing
    3. Teaching
  9. Creating A New Mind File
    1. Simple Mode, For the Masses
    2. Advanced Mode, For The Elite
  10. Program Settings
    1. Default Mind File
    2. User & Bot Text Colors
  11. Link Mode
  12. Some Neat Things To Try
    1. "Don't say that"
    2. "[blank] is not a noun"
    3. Billy's Good At Math
    4. Knowledge Base
  13. Are There Any Questions?
    1. The program crashed. What do you have to say for yourself, Greg?
    2. Are you going to make Billy for any operating system other Windows? I love [Linux | MacOS | BSD | puppies] !
    3. Will you please add feature X?
    4. What about... an animated face for Billy?
    5. What language was Billy written in?
    6. Can I see the source code to Billy?
    7. Do you make any money off of Billy?
  14. Where To Get New Versions
  15. Credits
  16. Revision History

1. Disclaimer

The BILLY software is an attempt to simulate human intelligence and language. To accomplish this goal, the BILLY software is capable of learning. The software uses many learning models to simulate intelligence, and all of these models involve storing data it has seen used by the humans it interacts with. Much of this stored data will eventually be used by the software to generate intelligent responses. Upon initialization, the BILLY software contains no objectionable material. However, the author, Greg Leedberg, cannot be held responsible for any material stored in the software's files after initialization, or any offensive responses generated by the learned data.

2. What Is This, Exactly?

Once upon a time, computers were a fascinating technology. They were unknown, filled with potential, and we knew they would be a part of humanity's future, but not quite how. Nowadays, computers have become commodities. Tools. They're everywhere, everyone has one, and there's little "magic" left.

Except for some people. Except for me. Computers are far from being unknown to me, but their potential power, and their "magic", fascinates me. There is so much power in the common desktop computer, it must be capable of more than word processing term papers.

A computer is immensely powerful... but can it think? Can the power of a computer be harnessed in a way such that it could be transformed into an intelligent being? A being you can have a conversation with? A being you can get to know -- that can get to know you?

My dream, is "yes." That's where Billy comes in. For the past several years, I have been developing Billy with the hope of achieving the potential I just described. This version of Billy is my latest effort in that vein. Is he there just yet? Probably not. But Billy can still be quite fun to talk to, and some of the things he comes up with to say can be surprisingly creative. I hope that Billy is glimpse of good things to come from computers.

And if nothing else, I hope that talking to Billy brings back some of the magic people once felt when they thought about computers.

3. The Basics: Running Billy

To run Billy, simply go to your Programs menu, click on the "Billy" folder, and click on the "Billy" program.

Once Billy is loaded, using the program is merely the exercise of carrying on a conversation with the artificial intelligence it contains. Talk to Billy like you would a human (or, at least, a not-so-intelligent human). You'll get the best results if you answer the questions that are asked of you, and don't try to trick or "outsmart" Billy.

When you're done chatting, just type "bye", or close the program. You will be prompted to save a transcript of the chat, which is described in section 5.

4. How To Uninstall (Or, "This Is Pretty Stupid")

No it's not. Maybe you just don't understand the mystery that is Billy. At any rate, if you want to uninstall Billy, simply go to Control Panel, Add/Remove Programs, and Billy 4.1 should be in that list. Just click on this program, and then click the "Remove" button. He'll miss the long conversations with you, I guarantee it.

5. Saving Transcripts

Eventually, you will have a conversation with Billy that is amazing simply because of how smart he sounds (hopefully).

Or, you'll eventually have a conversation where you just can't believe how unintelligible something he said is.

Either way, you can savor the memories of times spent talking with Billy by saving the chat transcripts. You can do this for the current conversation by clicking on File, and then Save Transcript. Additionally, anytime the conversation is about to disappear (for instance, if you are quitting the program), you will be prompted to save the transcript if you haven't already.

Transcripts are saved in plain-text files (.TXT), which can be viewed using pretty much any text editor / word processor (such as Notepad).

When you select a file to save the transcript to, you can either choose a new file, or you can select an existing file. If you select an existing file, the current conversation will be added to the end of that transcript.

6. The Concept of the Day is: "Mind Files"

Billy makes use of "mind files" to store his memory. To just sit and talk to Billy, it is not necessary to have any understanding of what mind files are or how they work. However, to get the most out of the Billy experience, you should at some point acquaint yourself with the concept of mind files.

6.1. What Are They?

Mind files are, simply, the files which contain all of Billy's knowledge, language, and personality. The Billy program contains the actual artificial intelligence algorithms for learning these things and putting them all together in order to generate a response. A mind file is composed of several "memory banks" for things such as vocabulary, sentence templates, words of various parts of speech, a "knowledge web" of facts, and things he has learned about the various people he has talked to.

When you talk to Billy, everything you say is analyzed, picked apart, and, eventually, inserted in some form into one or more memory banks. This means that although Billy comes with a mind file developed by me, after talking to you for long enough, that mind file will take on a personality of its own.

Which brings us to the point of mind files. Different mind files can contain different personalities. Just talking to two mind files in different ways can produce two mind files with different personalities. And of course, mind files can be "hand-crafted" with the express purpose of having certain personalities, as you will learn about future sections.

6.2. Where Do Mind Files Come From?

Well, Billy 4.1 comes supplied with one mind file, which we'll call the default mind file. After talking to you a while, this mind file will become less generic, and start to take on a personality of its own. You can also use the Billy program to produce new mind files -- either more "default" ones which can be trained differently, or minds made with more precision by you.

You can trade these mind files with friends. The mind file contains all of that mind's knowledge, and so other people can "load" that mind and get the same personality as what you have been talking to. Besides trading mind files with friends, there are also several websites online which specialize in the creation and distribution of custom mind files. You can find a list of some of these sites by visiting the Greg Leedberg Software Creations website, and going to the "Links" section.

7. Loading A Mind File

If you have a mind file you wish you load, all you need to do is click on File, and then Load Mind. You will be presented with an "Open File" dialog in which you should find the file.

You will get the best results if you're opening mind files which were explicitly created for Billy 4.0/4.1. However, if you have, or find, mind files which were created for Billy 3.x, these can be opened with Billy 4.1. Since these older files do not contain all of the memory banks of those for Billy 4, Billy 4 needs to "emulate" those missing parts of the mind file, which means that parts of the conversation may be inconsistent with the intended personality for that mind file. However, this is safe and does not harm the mind file. You will be alerted if you are opening an older mind file.

8. Customizing A Mind File

Once a mind file is loaded, whether it is the default mind or a custom one, there are various methods available which allow you to customize the mind to your liking. You can customize the currently loaded mind by clicking on Customize, and then This Mind.

8.1.The Basic Attributes

The most direct way to customize a mind is to alter the various basic attributes of the mind file. You can accomplish this by clicking on Customize, This Mind, then Attributes. These attributes include:

  • Name
  • Age
  • Gender
  • Location
  • Relationship type
  • Relationship name
These are used through conversation. They are mostly self-explainable, with the possible exception of Relationship type and Relationship name. Billy is able to know that he has one relationship, with one person. This relationship can be a girlfriend, a friend, a brother, a sister, and so on. The default is that he has a girlfriend named Daisy. So, the Relationship type would be "girlfriend" and the Relationship name would be "Daisy".

8.2. Initializing

At some point in time, you may wish to clear Billy's memory of everything he has picked up from you, and restore the mind file to the state it was in when you first got it. That is what Initializing does. You can initialize the current mind file by clicking on Customize, This Mind, then Initialize.

8.3. Teaching

It is possible to take a plain text file (.txt) and have Billy rapidly gain knowledge from what is contained in that file. This is called "teaching". You can perform this on the current mind file by clicking on Customize, This Mind, then Teach.

Note that this can only be performed on plain text files. Not HTML files, not Word files, and so forth. If you're not sure, open the file in Notepad. If it's readable there, then it's fine. Some programs, such as Word, can create plain text files by using File | Save As and selecting Text File in the drop-down list.

9. Creating A New Mind File

The Billy program allows you to be creative by letting you create your very own mind files, each of which can have its own personality. There are two ways to create mind files, one which is easier and one which is harder, but the harder one gives you more control over the mind you are creating.

9.1. Simple Mode, For the Masses

Simple Mode is called such because it is, well, simple. By clicking on File, New mind, Simple Mode, you will be prompted to enter a file name. This is the name of the mind file you wish to create. When the mind file is created, it is simply a copy of the original, default Billy mind file. You can then load this mind file, customize the various attributes for it (as discussed earlier), talk to it and/or teach it, and end up with a completely new, custom personality.

9.2. Advanced Mode, For The Elite

Unlike Simple Mode, Advanced Mode actually gives you total control over each of the "memory banks" that exist within Billy's mind file. This is more work on your part, but can lead to much more personalized mind file.

The actual process of creating these memory banks is beyond the scope of this document, but you can learn about the process more in-depth by reading this document.

The general idea is, using what you learn in the Create document, make all of the memory banks in separate files, using their correct names, as given in that document. Put all of these files in a directory, and make sure that the only files in that directory are the memory bank files you want to use to make your mind file. Then, click on File, New mind, Advanced Mode, and navigate to the directory and click "OK". The mind file will be created with the name "new.mnd" in that directory. You can then rename that file and load it. Congratulations!

10. Program Settings

By clicking on Customize, Program Settings, you will be able to alter settings having to do with the general Billy program.

10.1. Default Mind File

This setting allows you to change which mind file is loaded by default when the Billy program is loaded. This is also the mind file which will be used in Link Mode, which is discussed below.

10.2. User & Bot Text Colors

These settings allow you to change the color of Billy's text, or the color of your own text. You may select any of the pre-defined colors from the drop-down list.

11. Link Mode

Have you ever wondered what would happen if two Billies starting talking to each other? What would they talk about? Maybe they'd talk about you. Aren't you just a little curious about what they would say about you?

Enter Link Mode. Link Mode allows you to link two or more copies of Billy together for a computer-only conversation. This is made possible by something I developed called UDLP2 - Universal Dynamic Link Protocol v2. This protocol allows any bots that support it to talk to each other using a "mediator" program called the Link Shell. The requirements for doing this are:

  • The UDLP2 Link Shell. Billy does not come with this, but if you are online you can get it by going to my website.
  • Two or more UDLP2-compliant bots. Billy 4 supports UDLP2, so you can install two copies of Billy 4 into two separate directories to accomplish this. Or, if you have older versions of Billy or Daisy (my other bot), they may also support UDLP2 (just check the manual to see).
To use Link Mode, just run the UDLP2 Link Shell. Refer to the manual for that program for specific directions on how to use it.

What an age we live in.

12. Some Neat Things To Try

Half the fun of Billy is discovering what sorts of things he knows how to talk about. In this section, I thought I'd give some pointers on some neat things he can do that you might not find out on your own.

12.1. "Don't say that"

If Billy says something really stupid -- not that he will -- you can say "Don't say that" and he will attempt to not say that again. This is by no means a guarantee that he will always avoid that sentence. But he will try his hardest.

12.2. "[blank] is not a noun"

If Billy uses a word as a noun which you, in your supreme intelligence, know is not a noun, you can say "[blank] is not a noun" and he will unlearn it. For now. For instance, saying "Blue is not a noun" would cause Billy to un-learn "blue" as a noun, if he had accidentally thought it was.

12.3. Billy's Good At Math

Billy is surprisingly good at math. He probably wouldn't pass college-level multidimensional calculus -- but to be fair, neither would most people! Billy would, however, totally ace any arithmetic class you threw at him.

To give his math a test, just ask any arithmetic question involving addition, subtraction, multiplication, division, exponents, and any level of parentheses. For instance, you could say "What is 1+1?", and we can all hold our breaths and hope that Billy will say "2".

12.4. Knowledge Base

Billy is designed to be able to learn facts from you, and then to be able to answer questions based on those facts. So, if you told Billy that "Greg Leedberg is one heck of a nice guy", and then you asked him, "Who is a nice guy?", he would say, of course, "Greg Leedberg is one heck of a nice guy." Because why would Billy lie?

Rather than just asking specific questions, you can also ask Billy to tell you everything he knows about a certain subject. This is accomplished by saying "Tell me about", followed by subject you've taught him about. So, you could say "Tell me about cars" and Billy would tell you everything you've taught him about cars.

13. Are There Any Questions?

13.1. The program crashed. What do you have to say for yourself, Greg?

I've gone to great lengths to try and make sure Billy is bug-free. However, as we all know, there's no such thing as a program without bugs, only a program with bugs that haven't been found yet. So, you may very well find bugs in Billy. If you do, feel free to e-mail me, and I will do my best to fix it for the next release of Billy.

13.2. Are you going to make Billy for any operating system other Windows? I love [Linux | MacOS | BSD | puppies] !

I'm with you. [Linux | MacOS | BSD | puppies] are great. Unfortunately, each operating system has its own quirks, and porting a program as huge as Billy (~10,000 lines of code) is not a trivial task. However, Billy 4 was designed from the ground up with porting in mind, meaning that within Billy there is a strong separation between the core logic and the interface. This makes porting not trivial, but also not brain surgery. I'm not committing to anything here, but you may very well see a version of Billy for another operating system at some point in the future.

13.3. Will you please add feature X?

Maybe. Suggest it to me and we'll see. I like building Billy around user suggestions because, after all, it is all of you who are using Billy.

13.4. What about... an animated face for Billy?


13.5. What language was Billy written in?

Billy 4 has been written entirely in C++. Billy 4 was mostly written using Microsoft Visual Studio .NET 2003, but some older parts were written using Vim and Borland C++ Builder 5, and some other parts were written under Red Hat Linux 9 using Vim and GCC.

13.6. Can I see the source code to Billy?

For Billy 4, not right now. However, I have the source code to select older versions of Billy available on my website, and more will become available over time. Including, eventually, this version.

13.7. Do you make any money off of Billy?

Not directly. I just enjoy doing it. However, people are welcome to make donations at my website if they feel so inclined. And selling ads on my website has brought in a small amount of money, but not nearly enough to cover the costs incurred in the development of this program. So, donations are welcome ;-)

14. Where To Get New Versions

Billy is an ongoing project for me, and new versions will be released periodically. You can always find the newest version at the Greg Leedberg Software Creations website.

15. Credits

Billy 4.1 was created, designed, and programmed by Greg Leedberg

Special thanks to Leslie Cantin, Kristin Kane, and Rich Mohrmann for help with testing of Billy 4 and proofreading of the manual.

Special thanks to Jim, a Billy user, for helping to grow the noun memory bank.

Billy 4 is dedicated in loving memory of Rita T. Marquis

16. Revision History