近日你被 ChatGPT 刷屏了吗?

聊天机器人ChatGPT 仅仅推出两个月,月活跃用户数量已超过一亿,面试成功谷歌三级程序员,可胜任18.3万美元工作,可谓是风头无两。比尔盖茨采访称:其重要性不亚于互联网的发明,将改变我们的世界。

旭日X3派是一款拥有着高算力,面向生态开发者的嵌入式AI开发板,它拥有强大的计算能力和高效的运行效率,可以用于机器人、无人驾驶、智能家居等领域。此外,它还搭载了Together Robotics Operating System,一个基于ROS2优化,可以更高效运用在机器人平台上的机器人系统。

同时,ChatGpt是一款由OpenAI开发的自然语言处理模型。它可以理解人类语言,自动生成文本、回答问题和完成其他任务。ChatGpt可以与其他技术联动,实现更加复杂的应用。

那么旭日X3派遇上ChatGpt会碰撞出什么火花呢?

接下来,我们将使用旭日X3派作为核心算力芯片来驱动OriginBot机器人平台,并在旭日X3派上运行ChatGPT。

询问OriginBot编程问题

1.解释OriginBot小车代码

2、解释运动学模型?

3、使用OpenCV在OriginBot小车上实现巡线功能

4、在ROS2环境中实现gmapping或者cartographer

5、总结对话

综上,我们发现ChatGPT有着记忆储存的功能,它区别于siri传统的一问一答,能根据聊天的上下文进行互动并归纳总结所有的问题,协助我们完成编程。并且ChatGPT在回复消息时是逐字的显示,很难感觉到是和机器人在对话,仿佛它只是个博学的朋友。

它在针对简单编程问题的处理上可谓是非常惊艳,在ROS相关的问题上,比我们人类更有耐心解答,有时会画出重点并扩展更多的相关知识帮助你去解决问题掌握技术。

自己用过后发现虽然好用,但是它给的答案和程序很难保证没有错误,还是要自己看一遍改一下,尤其在问自己也不会的东西的时候,很难发现它的纰漏,会有些心里没底不能放心用,但是用来写报告、给代码加注释之类效率很高。

旭日X3派接入ChatGPT

看完了网页版ChatGtp的强大,我还是感觉不过瘾,既然ChatGPT都能接入微信,那么它肯定也能和旭日X3派连接起来。

不妨我们直接询问ChatGPT,该如何使得旭日X3派和ChatGpt联系起来!

它给了我这样的一个答案。

1、部署基本环境

进入旭日x3派,此处使用的是OriginBot的v1.0.2的镜像 。进入后,执行以下命令

pip3 install openai
2、学习openai_api如何使用

此处继续问ChatGpt,应该如何部署。它直接给了我一段代码

import openai

# 将OpenAI访问令牌设置为环境变量
openai.api_key = "YOUR_API_KEY"

# 调用OpenAI GPT-3模型,生成回答
response = openai.Completion.create(
  engine="text-davinci-002",
  prompt="你好!",
  max_tokens=1024, # 最大1024个标记
  temperature=0.7,
  n=1,
  stop=None,
)

# 输出生成的回答
print(response.choices[0].text)
3、书写节点代码

继续让ChatGpt书写。果不其然,它直接给了我一段代码,并且给了一些注释。


import rclpy
from rclpy.node import Node
from std_msgs.msg import String
import openai

class OpenAINode(Node):
  def __init__(self):
      super().__init__('openai_node')
      self.publisher_ = self.create_publisher(String, 'openai_text', 10)
      self.subscription = self.create_subscription(
          String,
          'user_input',
          self.listener_callback,
          10)
      self.subscription # 防止被Python垃圾回收机制删除

  def listener_callback(self, msg):
      # 处理从ROS话题订阅到的输入
      input_text = msg.data
      # 调用OpenAI的GPT-3模型生成文本
      openai.api_key = 'YOUR_API_KEY'
      response = openai.Completion.create(
        engine="davinci",
        prompt=input_text,
        max_tokens=60,
        n=1,
        stop=None,
        temperature=0.7
      )
      # 将生成的文本发布到ROS话题
      self.publisher_.publish(response.choices[0].text)

def main(args=None):
  rclpy.init(args=args)
  openai_node = OpenAINode()
  rclpy.spin(openai_node)
  openai_node.destroy_node()
  rclpy.shutdown()

if __name__ == '__main__':
  main()

看到这,直呼太强了!

4、部署到旭日X3派中

此处,即可按照古月老师的ROS2 21讲的方式来创建一个基于python的功能包。

5、跑起来

看到这,似乎就和我们想象的不一致了,在上一个问题,我问ChatGpt,如何学习ROS,它告诉了我如何学,再和网页一般输入继续,它回答了我数据结构...等。似乎和我们想的不一样呀。

没关系,接下来的我们自己来改。

再回到这一段代码

import openai

# 将OpenAI访问令牌设置为环境变量
openai.api_key = "YOUR_API_KEY"

# 调用OpenAI GPT-3模型,生成回答
response = openai.Completion.create(
  engine="text-davinci-002",
  prompt="你好!",
  max_tokens=1024, # 最大1024个标记
  temperature=0.7,
  n=1,
  stop=None,
)

# 输出生成的回答
print(response.choices[0].text)

可以看到,engine指的使用的模型,此处是”text-davinci-002“,prompt是指输入文本,max_tokens指的是最大输出文字。了解这些,我们就可以尽情发挥了。首先,打印出所有的模型,示例代码如下

import openai

# 将OpenAI访问令牌设置为环境变量
openai.api_key = "YOUR_API_KEY"

# 获取OpenAI最新的语言模型名称
models = openai.Model.list()
latest_model = models['data'][0].id

print("最新的OpenAI语言模型是:", latest_model)
print("\n")
printf("所有的模型如下:", models)

细想以下,不如直接去看目前最火的微信接入ChatGpt用的哪个?

再增加理解上下文能力,这不就是Transformer嘛,直接把当前和之前所有的问题和回答都当成输入就好了。

就这样,再ChatGPT和我们的努力下,生成了最终的代码:


import rclpy
from rclpy.node import Node
from std_msgs.msg import String
import openai

class OpenAINode(Node):
  def __init__(self):
      super().__init__('openai_node')
      self.publisher_ = self.create_publisher(String, 'chatgpt_node', 10)
      self.subscription = self.create_subscription(
          String,
          'user_input',
          self.listener_callback,
          10)
      self.history = ""

  def listener_callback(self, msg):
      # 处理从ROS话题订阅到的输入
      input_text = msg.data
      self.history += input_text
      self.history += " "
      # 调用OpenAI的GPT-3模型生成文本
      openai.api_key = 'KEY'
      #models = openai.Model.list()
      #latest_model = models['data'][0].id
      #print(models)
      response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=self.history+input_text,
        max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.7
      )
      # 将生成的文本发布到ROS话题
      msg = String()
      msg.data = response.choices[0].text
      print(msg.data)
      self.history += msg.data
      self.history += " "
       

def main(args=None):
  rclpy.init(args=args)
  chatgpt_node = OpenAINode()
  rclpy.spin(chatgpt_node)
  chatgpt_node.destroy_node()
  rclpy.shutdown()

if __name__ == '__main__':
  main()

效果如下:

注册ChatGPT

第一步:注册 Chat GPT 账号并完成验证

打开 https://chat.openai.com/auth/login 链接进行账号注册

通过邮箱注册并完成邮箱验证

完成这一步之后,下面就到了手机号验证的环节了。

这里需要尤其注意的是,因为 OpenAI 服务限制,国内手机号是没有办法通过验证的。

另外 Google Voice 等北美地区的虚拟号码也是不能用的,因为 OpenAI 会检测虚拟号码,他们也不允许虚拟号码注册。

这时候就要用到下一步的接码平台。

第二步:通过接码平台完成手机号验证

大家可以通过接码平台完成手机号的验证,推荐平台链接地址:sms-activate.org

在这里需要注册一个 sms-activate 平台的账号,用邮箱注册就可以了。

注册后通过邮箱完成验证。下一步是充值。

点击跳转后,根据下方图片提示完成充值(价格是波动的)

充值好了以后回到首页搜索「open」关键字就可以找到 OpenAI 验证码的临时号码购买链接。

然后,可以在激活区看到待使用的临时号码,将此号码复制到 OpenAI 的验证码接收区里面。

点击发送验证码,这样就可以在接码平台接收到验证码(有时候有一点慢需要耐心等待一下),将验证码填进去,这样就完成注册了

第三步:邮箱登录完成注册流程

直到上面一步整个注册流程就结束了

注册完后,我们去 ChatGPT 网站登陆:

https://chat.openai.com/auth/login

快去体验ChatGPT吧!别忘了给我们点个赞哦~