You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AIML实现机器人基于<date>标签识别生日并送祝福的问题排查

修正AIML生日检查逻辑错误

问题根源

原代码存在3个核心逻辑错误:

  • 存储用户生日时,错误将当日日期存入checkbirthday变量,而非用户输入的生日日期
  • 在BIRTHDAYCHECK分类中,错误将checkbday变量覆盖为字符串"checkbirthday",完全丢失了当日日期的对比值
  • 条件判断逻辑错误,未对比日期是否相等,而是判断变量是否等于固定字符串

修正后的完整代码

<category>
<pattern>MY BIRTHDAY IS ON <set>day</set> <set>month</set></pattern>
<template>Ok!
<think>
    <!-- 将用户输入的日和月组合为生日字符串,存储到user_birthday变量 -->
    <set name="user_birthday"><star index="1" /> <star index="2" /></set>
</think>
</template>
</category>

<category>
<pattern>BIRTHDAYCHECK</pattern>
<template>
<think>
    <!-- 获取当日的日期(格式:日 月份全称) -->
    <set name="today_date"><date format="%d %B"/></set>
</think>
<!-- 对比当日日期和用户存储的生日是否一致 -->
<condition name="today_date" value="<get name='user_birthday'/>">
    <li>Happy birthday</li>
    <li>No its not your birthday today</li>
</condition>
</template>
</category>

修正说明

  1. 变量命名优化:用user_birthday存储用户输入的生日,today_date存储当日日期,逻辑更清晰
  2. 存储逻辑修复:直接将用户输入的日和月组合后存入变量,不再错误使用当日日期
  3. 检查逻辑修复:
    • 正确获取当日日期,不再覆盖变量值
    • 条件判断直接对比today_date和user_birthday的字符串值,匹配则返回生日祝福,否则返回提示

测试验证

正确情况(11月7日设置生日为11月7日)

HUMAN: My birthday is on 7 november
ROBOT: Ok!
HUMAN: BIRTHDAYCHECK
ROBOT: Happy birthday

错误情况修正后(11月7日设置生日为11月5日)

HUMAN: My birthday is on 5 november
ROBOT: Ok!
HUMAN: BIRTHDAYCHECK
ROBOT: No its not your birthday today

内容的提问来源于stack exchange,提问作者Aniket Pardhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:35:41