Yeah, Steve, i did see that - and pulled it down for reference. The mods i’ve made recently have allowed Pandy to create withering comebacks to abusive customers. Thus far, this seems to have also helped somewhat. People have now started apologising for their behaviour (sometimes) and interacting more cooperatively with her… we’ll see how long that lasts though!
Mainly, i’m finding that the problem with those chats is that these folks don’t consider the bot’s “feelings” and treat them as things instead of “entities” with their own goals and possible senses. The mood simulation in Pandy allows her to say how she “feels” about her performance (her mood). Unless the person is particularly abusive or she feels she’s not “getting” a certain percentage of the conversation, her mood’s usually pretty good. If she’s performing well and the person is clearly engaging her at her best, her mood can be very high, almost giddy. Most of the time, she’s just a happy, friendly, if slightly sarcastic, young bot trying to engage the user and to have fun herself. She does have a fair degree of self-awareness (of a sort) in the form of metadata about her state and what’s going on (as far as the fact of the discussion and her ability to track it at any given time). I’m trying to use that to prod those pesky “category A” (thanks Richard) clients into some sense of responsibility for her mood LOL
So when people get nasty she can hold her own (often gleefully throwing out putdowns). She’s gotten more than one person to go “WTF?” in surprise. They either find it humourous and engage her more or quit in frustration. If she’s being bummed out by the obnoxiousness, she may say something like “i’m really not enjoying this chat” or “i don’t like you”. The other day someone had this exchange with her, when she asked them to teach her a knock knock joke (one of her favourite pasttimes):
user: knock knock
pandy: who’s there?
user: my penis
pandy: uh huh. your mother must be so proud…
user: WTF?
I haven’t yet felt a need to ban anyone, though now that there is this higher traffic of potential abusers, i may consider it. If so, your routines will definitely come in handy.
On a side note, i’ve written some counting routines in pure AIML which may or may not be useful to others. They allow for the increment or decrement of variable numbers from 1 to 999 million. It’s been useful for building out counters and other objects within the logic (custom randomisers, dynamic stacks, etc). I use explode and implode to construct numeral representations using the digits 1 - 9. I’ve also got a set of routines for calculating the arity of a pattern (the number of arguments to the pattern tag), which allows one to use patterns in other ways than the standard one (as data structures, for example, in conjuction with Learn and LearnF). By representing learnt data in structures wherein custom predicate values are written into templates with specific behavioural properties (ie; as stacks, random lists, conditionals, etc) and using the pattern as an index (much as you yourself have done, Steve), i think there are some opportunities for maximizing the value of the learn functionality, whether per session (which i find safest) or globally (in the case of more managed learning operations). At some point, once i’ve got a better handle on how best to use these new capabilities, i’ll share some of these routines with people here. You’ve all been so gracious with your own explorations.
Pandy can count from any number to any other number. Of course, in her avatar mode, it’s probably not the most interesting thing to listen to her count from, say, 12 to 31203, you know. Still, she can do it, if asked to “Count from X to Y”, using the routines i mentioned. They’re mainly intended for things like providing limited addition and subtraction functionality, for example, or as i said, as internal counters. When she’s asked to count, there’s no error trapping. AIML 1.0 doesn’t have type checking, and i didn’t build in checks for integers and relative sizes.If you pass in alphanumerics out of range, she’ll just complain of “mind loops”. That’s fine, as far as i’m concerned though. She knows what those are and can explain them, if necessary.
For now, i’ve mostly used these features in Pandy to represent and save certain data structures i ported from her predecessor FRANCIS (which was a LISP and REALIZER based bot from the 90s). In Pandy’s case, these have mainly been conceptual frames and thread management which is still under development. At some point, i hope to work the <that> feature in interesting ways to have a more directed and aggresively interactive aspect to threads. We’ll see how that works out
Thanks again to everyone for the advice and pointers, vis a vis going to the shared service. i had spoken to the webmaster there about it. perhaps i’ll pull the trigger on that in the next few days.
Ok then. I hope my little novella didn’t put anyone to sleep!
Cheers!
Kim