前言
- 最近看到很多大模型前沿技术,端到端控制机械臂运动。所以就想到了用大模型根据自己定义的一些文档数据进行指令的输出。
- 自己搭建大模型,公司电脑配置太差,虚拟机没有安装显卡。所以用了自己平时搜问题用的Kimi智能大模型助手,有很多功能都能用,比较方便。
- 本文代码将全部使用大模型来生成,小白也可以。(为了体现大模型的好处吧)
设计界面
毋庸置疑Gui界面用python是最快的
- 设计界面(用画图工具随便画)
- 直接进入kimi官网 (https://kimi.moonshot.cn/)
把图片拉进去
- 出来的代码复制到linux运行一下
完美!!!!
API测试
- 进入kimi API 文档(https://platform.moonshot.cn/)
建账号,然后新建key免费的 - 因为需要用到自己定义的一些文档数据使用文件分析大模型接口
复制到linux运行一下可以用。记得把代码中的api_key换成自己刚申请的。
把API放入界面
- 结合api代码和gui代码
#!/usr/bin/env python
# coding:utf-8
import tkinter as tk
from pathlib import Path
from openai import OpenAI
# 创建主窗口
root = tk.Tk()
root.title("带解释性标签的GUI应用程序")
# 创建一个标签,用于解释文本输入框
ros_entry_label = tk.Label(root, text="指令:")
ros_entry_label.pack()
# 创建一个文本输入框
ros_entry = tk.Entry(root, width=50)
ros_entry.pack(pady=10)
# 创建一个标签,用于解释文本框
content_label = tk.Label(root, text="返回内容:")
content_label.pack()
# 创建一个文本框,用于显示内容
content_text = tk.Text(root, height=10, width=50)
content_text.pack(pady=10)
# 创建一个按钮,点击时会执行一个函数
def execute_action():
kimi_api()
def kimi_api():
print("kimi_init")
# 获取KEY的内容
key_content = "*****"
client = OpenAI(
api_key = key_content,
base_url = "https://api.moonshot.cn/v1",
)
# 获取指令的内容
ros_content = ros_entry.get()
# xlnet.pdf 是一个示例文件, 我们支持 pdf, doc 以及图片等格式, 对于图片和 pdf 文件,提供 ocr 相关能力
file_object = client.files.create(file=Path("ros.txt"), purpose="file-extract")
# 获取结果
# file_content = client.files.retrieve_content(file_id=file_object.id)
# 注意,之前 retrieve_content api 在最新版本标记了 warning, 可以用下面这行代替
# 如果是旧版本,可以用 retrieve_content
file_content = client.files.content(file_id=file_object.id).text
# 把它放进请求中
messages = [
{
"role": "system",
"content": "你是ubuntu系统下的ros机器人专家,擅长linux命令,只需要输出相应命令。",
},
{
"role": "system",
"content": file_content,
},
{"role": "user", "content": ros_content},
]
# 然后调用 chat-completion, 获取 Kimi 的回答
completion = client.chat.completions.create(
model="moonshot-v1-32k",
messages=messages,
temperature=0.3,
)
# 获取输入框的内容
content = completion.choices[0].message.content
# 清空文本框内容
content_text.delete(1.0, tk.END)
# 将内容显示在文本框中
content_text.insert(tk.END, content)
def main():
# 创建一个按钮,绑定execute_action函数到点击事件
execute_button = tk.Button(root, text="执行", command=execute_action)
execute_button.pack()
# 启动事件循环
root.mainloop()
# 创建一个按钮,点击时会执行一个函数
if __name__ == "__main__":
main()
测试
首先是ros基本的命令
然后是自己定义的消息
自己的文档ros.txt
内容
前往600导航点 “go 0 id ”是自由路径 “go 1 id”是固定路径
rostopic pub -1 /navigation_cmd std_msgs/String “data: ‘go 0 600’”
后续
直接在python调用命令行bash,达到点击执行ros机器人就能移动,在想要不要用小乌龟给你们演示
以上过程小打小闹半个小时
20240606记录一下,勿喷!!!!