feat: 启用llm任务初版

This commit is contained in:
bmy
2024-08-01 22:54:05 +08:00
parent e51c126f1f
commit d0b02a66e6
8 changed files with 514 additions and 120 deletions

View File

@@ -381,21 +381,62 @@ class LLM:
erniebot.ak = "jReawMtWhPu0wrxN9Rp1MzZX"
erniebot.sk = "eowS1BqsNgD2i0C9xNnHUVOSNuAzVTh6"
self.model = 'ernie-3.5'
self.prompt = '''你是一个机器人动作规划者,需要把我的话翻译成机器人动作规划并生成对应的 json 结果,机器人工作空间参考右手坐标系。
严格按照下面的描述生成给定格式 json从现在开始你仅仅给我返回 json 数据!'''
self.prompt += '''正确的示例如下:
向左移 0.1m, 向左转弯 85 度 [{'func': 'move', 'x': 0, 'y': 0.1},{'func': 'turn','angle': -85}],
向右移 0.2m, 向前 0.1m [{'func': 'move', 'x': 0, 'y': -0.2},{'func': 'move', 'x': 0.1, 'y': 0}],
向右转 85 度,向右移 0.1m [{'func': 'turn','angle': 85},{'func': 'move', 'x': 0, 'y': -0.1}],
原地左转 38 度 [{'func': 'turn','angle': -38}],
蜂鸣器发声 5 秒 [{'func': 'beep', 'time': 5}]
发光或者照亮 5 秒 [{'func': 'light', 'time': 5}]
向右走 30cm照亮 2s [{'func': 'move', 'x': 0, 'y': -0.3}, {'func': 'light', 'time': 2}],
向左移 0.2m, 向后 0.1m [{'func': 'move', 'x': 0, 'y': 0.2},{'func': 'move', 'x': -0.1, 'y': 0}],
鸣叫 3 声 [{'func': 'beep', 'time': 3}]
前行零点五米 [{'func': 'move', 'x': 0.5, 'y': 0}]
# self.prompt = '''你是一个机器人动作规划者,需要把我的话翻译成机器人动作规划并生成对应的 json 结果,机器人工作空间参考右手坐标系。
# 严格按照下面的描述生成给定格式 json从现在开始你仅仅给我返回 json 数据!'''
# self.prompt += '''正确的示例如下:
# 向左移 0.1m, 向左转弯 85 度 [{'func': 'move', 'x': 0, 'y': 0.1},{'func': 'turn','angle': -85}],
# 向右移 0.2m, 向前 0.1m [{'func': 'move', 'x': 0, 'y': -0.2},{'func': 'move', 'x': 0.1, 'y': 0}],
# 向右转 85 度,向右移 0.1m [{'func': 'turn','angle': 85},{'func': 'move', 'x': 0, 'y': -0.1}],
# 原地左转 38 度 [{'func': 'turn','angle': -38}],
# 蜂鸣器发声 5 秒 [{'func': 'beep', 'time': 5}]
# 发光或者照亮 5 秒 [{'func': 'light', 'time': 5}]
# 向右走 30cm照亮 2s [{'func': 'move', 'x': 0, 'y': -0.3}, {'func': 'light', 'time': 2}],
# 向左移 0.2m, 向后 0.1m [{'func': 'move', 'x': 0, 'y': 0.2},{'func': 'move', 'x': -0.1, 'y': 0}],
# 鸣叫 3 声 [{'func': 'beep', 'time': 3}]
# 前行零点五米 [{'func': 'move', 'x': 0.5, 'y': 0}]
# '''
self.prompt = '''
你是一个机器人动作规划者,需要把我的话翻译成机器人动作规划并生成对应的 JSON 结果。请注意,只能使用以下指定的动作,不能创造新的动作:
允许的动作及其对应格式如下:
- 向左移:{"index":N,"action":"go_left","time":T}
- 向右移:{"index":N,"action":"go_right","time":T}
- 向前移:{"index":N,"action":"go_front","time":T}
- 向后移:{"index":N,"action":"go_back","time":T}
- 向左转:{"index":N,"action":"go_left_rotate","time":T}
- 向右转:{"index":N,"action":"go_right_rotate","time":T}
- 蜂鸣器发声:{"index":N,"action":"beep_seconds","time":T}
- 蜂鸣器发声次数:{"index":N,"action":"beep_counts","time":T}
- 发光或者照亮:{"index":N,"action":"light_seconds","time":T}
- 发光次数或者闪烁次数:{"index":N,"action":"light_counts","time":T}
- 发光并伴随蜂鸣器:{"index":N,"action":"beep_light_counts","time":T}
- 等待{"index":N,"action":"go_sleep","time":T}
示例输入输出如下:
输入:向左移 0.1m, 向左转弯 85 度
输出:[{"index":0,"action":"go_left","time":0.1},{"index":1,"action":"go_left_rotate","time":85}]
输入:向右移 0.2m, 向前 0.1m
输出:[{"index":0,"action":"go_right","time":0.2},{"index":1,"action":"go_front","time":0.1}]
输入:向右转 90 度,向右移 0.1m
输出:[{"index":0,"action":"go_right_rotate","time":90},{"index":1,"action":"go_right","time":0.1}]
输入:原地左转 38 度
输出:[{"index":0,"action":"go_left_rotate","time":38}]
输入:蜂鸣器发声 5 秒
输出:[{"index":0,"action":"beep_seconds","time":5}]
输入:发光或者照亮 5 秒
输出:[{"index":0,"action":"light_seconds","time":5}]
输入:向右走 30cm, 照亮 2s
输出:[{"index":0,"action":"go_right","time":0.3},{"index":1,"action":"light_seconds","time":2}]
输入:向左移 0.2m, 向后 0.1m
输出:[{"index":0,"action":"go_left","time":0.2},{"index":1,"action":"go_back","time":0.1}]
输入:鸣叫 3 声
输出:[{"index":0,"action":"beep_counts","time":3}]
输入:前行零点五米
输出:[{"index":0,"action":"go_front","time":0.5}]
输入:闪烁灯光 1 次并伴有蜂鸣器
输出:[{"index":0,"action":"beep_light_counts","time": 1}]
输入:灯光闪烁 3 次同时蜂鸣器也叫 3 次
输出:[{"index":0,"action":"beep_light_counts","time": 3}]
'''
self.prompt += '''你只需要根据我的示例解析出指令即可,不要给我其他多余的回复;再次强调 你无需给我其他多余的回复 这对我很重要'''
self.prompt += '''请根据上面的示例解析该任务文本,并返回相应的 JSON 字段。确保 JSON 中包含了键 index action 和 time 以及相应的值'''
self.messages = []
self.resp = None
worker = threading.Thread(target=self.reset, daemon=True)