Due Friday, January 25 through
Catalyst Collect-It
at 12:00 noon. Turn in two files: a Python program file named
as specified below, and a text file transcript.txt
that contains a conversation with your agent of at least 15 turns.
Create a Python program that simulates a character in a dialog.
Your program should have some definable personality, such as
a widget salesman, entertainment star, political figure, etc.
Besides being able to carry on a conversation with a human user,
it should be able to join into conversations with the
agents created by any member of the class. To do this, it
will need to implement certain functions with a strict
protocol.
Your solution should follow these guidelines:
- You are welcome to use rules from the Shrink.py program,
but each rule must be modified so that the response will
be different.
- Incorporate a "memory" feature into
your agent so that the conversation can return to some
topic introduced earlier by the user.
Make it work in a manner consistent with the
character of your agent. (5 points).
- Incorporate a "cycle" feature into
your agent so that when a given rule fires repeatedly
in a session, the response is not always the same but
changes in a cyclical pattern.
At least 2 of your agent's rules should
use this feature with at least 2 alternative reponses each.
(5 points)
- Make up at least one rule that uses a random-choice
feature to select a response form. (5 points)
- There should be at least 15 rules in your program.
- Your program should be ready to use as
a module in another program that runs your agent with
another agent in a dialog. The interface will consist
of three functions that you need to write: one called introduce(),
one called respond(theInput), and called agentName().
The introduce() function should return a string
representing a message that
tells the name of the agent, what the agent represents and
the name and UWNetID of you the programmer. For example, it might return
a string containing:
My name is Rusty Sales, and I sell junky cars.
I was programmed by Jenny Chrysler. If you don't like
the way I deal, contact her at jchrysler@u.
How can I help you?
The respond function should work almost the same
way as the one in Shrink.py. But there are two important
differences. First, the function will take one argument: the
input string. It should compute the wordlist and mapped_wordlist
values at the beginning of the function body instead of receiving
those as inputs as in Shrink.py.
Second, instead of printing out its response, your
respond function should
return it as a string. This will allow the other agent to
receive it as input in the joint-dialog program.
The agentName function should return (as a string) a short nickname
for your agent. This will be useful in printing out a prompt-like
identifier when showing lines of a conversation among different agents.
For example, the function might return Rusty for example above.
You can test out your compliance to this interface by downloading
the
test harness programs.
- Name your file in the following way, so that we can
keep track of the different agents: YourUWNetID.py, where
YourUWNetID represents your UWNetID code (i.e., your email
user name within the u.washington.edu domain. For one thing,
this will guarantee that each of our agents is implemented
in a file with a unique name. It will also give the graders
an easy way to find your agent within a group, if needed.
-
Provide a comment in the code for each of your production
rules.
|