From d44b0389b86aab8ee4f9b26e7ce8ad3156d53941 Mon Sep 17 00:00:00 2001 From: ChenXL97 <908926798@qq.com> Date: Sun, 19 Nov 2023 14:46:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B9=E4=BE=BFNLP=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- robowaiter/robot/DefaultNLP.ptml | 32 ++++++++++++++++++ robowaiter/scene/tasks/GQA/GQA_NLP.py | 47 +++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 robowaiter/robot/DefaultNLP.ptml create mode 100644 robowaiter/scene/tasks/GQA/GQA_NLP.py diff --git a/robowaiter/robot/DefaultNLP.ptml b/robowaiter/robot/DefaultNLP.ptml new file mode 100644 index 0000000..64870a4 --- /dev/null +++ b/robowaiter/robot/DefaultNLP.ptml @@ -0,0 +1,32 @@ +selector +{ + sequence + { + cond CustomerChatting() + act DealChatNLP() + } + sequence + { + cond HasSubTask() + sequence + { + act SubTaskPlaceHolder() + } + } + sequence + { + cond FocusingCustomer() + act ServeCustomer() + } + sequence + { + cond NewCustomerComing() + selector + { + cond At(Robot,Bar) + act MoveTo(Bar) + } + act GreetCustomer() + } + +} \ No newline at end of file diff --git a/robowaiter/scene/tasks/GQA/GQA_NLP.py b/robowaiter/scene/tasks/GQA/GQA_NLP.py new file mode 100644 index 0000000..9cb6b7e --- /dev/null +++ b/robowaiter/scene/tasks/GQA/GQA_NLP.py @@ -0,0 +1,47 @@ +""" +具身多轮对话 GQA +点餐(order)的对话,咖啡厅服务员可以为客人(NPC)完成点餐基本对话 +场景对话(GQA)结合场景:询问卫生间、附近娱乐场所(数据来源自主定义) +开始条件:顾客NPC发出点餐指令 +结束条件:顾客NPC发出指令,表示不再需要服务 +""" + +# todo: 使用大模型进行对话,获得指令信息,适时结束对话 +# order = {...} + +from robowaiter.scene.scene import Scene + +class SceneGQA(Scene): + def __init__(self, robot): + super().__init__(robot) + # 在这里加入场景中发生的事件, (事件发生的时间,事件函数) + self.new_event_list = [ + (3, self.customer_say, ("System","哪里有蛋糕")) + ] + + def _reset(self): + # self.clean_walker() + # self.add_walkers([[50, 500,90]]) + pass + + # self.walker_bubble("洗手间在哪里") + # self.control_walker([self.walker_control_generator(0, False, 100, 755, 1900, 180)]) + + + def _run(self): + pass + + +if __name__ == '__main__': + import os + from robowaiter.robot.robot import Robot + from robowaiter.utils.basic import get_root_path + root_path = get_root_path() + ptml_path = os.path.join(root_path, 'robowaiter/robot/DefaultNLP.ptml') + + robot = Robot(ptml_path=ptml_path) + + # create task + task = SceneGQA(robot) + task.reset() + task.run()