2024-06-07 20:08:41 +08:00
|
|
|
|
import sys
|
|
|
|
|
|
import os
|
|
|
|
|
|
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
sys.path.append(parent_dir)
|
|
|
|
|
|
|
|
|
|
|
|
import erniebot
|
|
|
|
|
|
|
|
|
|
|
|
erniebot.api_type = "qianfan"
|
|
|
|
|
|
erniebot.ak = "jReawMtWhPu0wrxN9Rp1MzZX"
|
|
|
|
|
|
erniebot.sk = "eowS1BqsNgD2i0C9xNnHUVOSNuAzVTh6"
|
|
|
|
|
|
|
|
|
|
|
|
class LLM:
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
|
|
|
|
|
|
|
self.model = 'ernie-3.5'
|
|
|
|
|
|
self.prompt = '''你是一个机器人动作规划者,需要把我的话翻译成机器人动作规划并生成对应的 json 结果,机器人工作空间参考右手坐标系。
|
2024-06-28 21:34:49 +08:00
|
|
|
|
严格按照下面的描述生成给定格式 json,从现在开始你仅仅给我返回 json 数据'''
|
2024-06-07 20:08:41 +08:00
|
|
|
|
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}]
|
2024-06-28 21:34:49 +08:00
|
|
|
|
向右走 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}],
|
2024-06-07 20:08:41 +08:00
|
|
|
|
'''
|
|
|
|
|
|
self.messages = []
|
|
|
|
|
|
self.resp = None
|
|
|
|
|
|
self.reset()
|
|
|
|
|
|
def reset(self):
|
|
|
|
|
|
self.messages = [self.make_message(self.prompt)]
|
|
|
|
|
|
self.resp = erniebot.ChatCompletion.create(
|
|
|
|
|
|
model=self.model,
|
|
|
|
|
|
messages=self.messages,
|
|
|
|
|
|
)
|
|
|
|
|
|
self.messages.append(self.resp.to_message())
|
|
|
|
|
|
def make_message(self,content):
|
|
|
|
|
|
return {'role': 'user', 'content': content}
|
|
|
|
|
|
def get_command_json(self,chat):
|
|
|
|
|
|
self.messages.append(self.make_message(chat))
|
|
|
|
|
|
self.resp = erniebot.ChatCompletion.create(
|
|
|
|
|
|
model=self.model,
|
|
|
|
|
|
messages=self.messages,
|
|
|
|
|
|
)
|
|
|
|
|
|
self.messages.append(self.resp.to_message())
|
|
|
|
|
|
return self.resp.get_result()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
lmm_bot = LLM()
|
|
|
|
|
|
while True:
|
|
|
|
|
|
chat = input("输入:")
|
2024-06-28 21:34:49 +08:00
|
|
|
|
resp = lmm_bot.get_command_json(chat).replace(' ', '').replace('\n', '').replace('\t', '')
|
|
|
|
|
|
|
|
|
|
|
|
print(eval(resp[7:-3]))
|
2024-06-07 20:08:41 +08:00
|
|
|
|
|
|
|
|
|
|
|