ALICE ist im Finale!

Rich Wallace hat es gerade im offiziellen Blog gepostet:

Die originale englische Alice ist unter den 9 Finalisten der Chatterbox Challenge.

Voten könnt Ihr hier Winking


cd

Vorsicht mit dem srai-Tag!

Richard Wallace hat vor kurzem einen kurzen Eintrag über die Risken des srai-Tags im AliceBlog veröffentlicht.

Alicebot-Blog: Safe Reductions and Dangerous ones

Das Problem „infinite recursion“ - Endlosschleifen durch fehlerhafte srai-Rekursion, die den Bot killen - tritt immer wieder auf, wenn AIML-Dateien nicht richtig durchgeprüft werden.

Was macht das srai-Tag?

Mit dem srai-Tag kann man sich für ähnliche Inputs eine Menge Schreibarbeit sparen. Als Teil des Templates übergibt es eine bestimmte Zeichenkette erneut an die Matchingroutine und ruft eine andere Category auf.

Beispiel:

Wir haben eine category für „Ich heisse *“.
Natürlich könnte man den ganzen Sermon mit Variablen zur Abspeicherung des Benutzernamens, unterschiedliche Begrüßungen per Randomizer etc. nochmals für „Mein Name ist *“ durchhecheln...
Schneller ginge es mit folgendem Code: (ich lasse die spitzen Klammern weg, weil mein Blogsystem sonst anfängt zu spinnen Winking )

category
pattern ICH HEISSE * /pattern
template BOTANTWORTMITSPEICHERVARIABLEUSW. /template
/category

category
pattern MEIN NAME IST * /pattern
template srai ICH HEISSE star/ /srai /template
/category


Das srai-Tag innerhalb des Templates ruft das Matching mit „ICH HEISSE * “ und dem Rest der Eingabe in der Variable star/ erneut auf.
„Mein Name ist Christian“ ruft somit die gleiche category auf wie „Ich heisse Christian“, man muss den gesamten Code aber nur einmal vollständig schreiben und spart sich Redundanzen durch copy-and-paste Orgien.

Eigentlich eine elgegante Sache, doch kann man sich mit diesem Tag auch sehr leicht eine Menge Ärger in Form von Endlosschleifen einhandeln, die den Bot entweder in die Fangroutine nach Überschreitung einer bestimmten Zahl an Iterationen laufen lassen (Program D besitzt z.B. eine solche Routine, die die Notbremse bei sich totlaufenden Matchings zieht und die generische Category matcht) oder ihn aber komplett killen, wenn der verwendete Interpreter diesen Sicherheitsmechanismus nicht besitzt. Der Ärger mit dem Provider ist dann ebenfalls vorprogrammiert, denn die CPU-Last im Server wird dann gigantisch...ein amoklaufender Alicebot kann einen normalen Rackserver binnen Sekunden in den Denial-Of-Service fahren...inklusiver aller Kunden, mit denen man sich den Server teilt Winking
Ja, das geht ...fragt nicht... Winking


cd