12 April 2009
ALICE ist im Finale!
13/04/09 21:59 Kategorie: Allgemeines zu AIML
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
cd
Die originale englische Alice ist unter den 9 Finalisten der Chatterbox Challenge.
Voten könnt Ihr hier
cd
Vorsicht mit dem srai-Tag!
12/04/09 17:34 Kategorie: Allgemeines zu AIML
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
)
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
Ja, das geht ...fragt nicht...
cd
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
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
Ja, das geht ...fragt nicht...
cd
