轻松实现远程智能交互:OriginBot与钉钉和GPT4o的集成指南
创始人
2024-11-14 21:05:45
0

说明

我之前实现了简单UI来跟OriginBot交互,可以参考这里:古月居 - ROS机器人知识分享社区  但是由于我不是专业的前端开发,写UI还是比较耗时的,所以最近想修改一下这部分。

还有一个原因是,自己开发前端,如果想实现远程交互(不在同一wifi下),就一定需要一个云服务器来中转一下,这个是比较麻烦的。

我期望的交互效果是可以双向发送文字、图片和语音,找了一圈发现钉钉的「单聊机器人」可以满足所有要求,所以这篇博客记录一下如何为OriginBot接入钉钉单聊机器人。

创建钉钉单聊机器人

创建单聊机器人的步骤其实不复杂,可以参考:单聊机器人概述 - 钉钉开放平台

唯一需要注意的是消息接收模式要选择Stream模式,不要选择http模式即可。

如何实现收发消息

在钉钉开放平台上创建好单聊机器人后,还需要有一个服务来收发消息。

在OriginBot上创建一个文件dingtalk_runtime.py, 内容如下:

""" 用于钉钉单聊机器人收发消息 """  from dingtalk_stream import AckMessage import dingtalk_stream import os  from prompts import base_prompt from llms import azure_gpt4o   class DingtalkMsgHandler(dingtalk_stream.ChatbotHandler):      def __init__(self):         super(dingtalk_stream.ChatbotHandler, self).__init__()      async def process(self, callback: dingtalk_stream.CallbackMessage):         incoming_message = dingtalk_stream.ChatbotMessage.from_dict(callback.data)         message_type = incoming_message.message_type          if message_type not in ("text"):             self.reply_text(                 "您发送的消息类型不合法,目前只支持文本。", incoming_message             )             return AckMessage.STATUS_OK, "OK"          if message_type == "text":             text = incoming_message.text.content.strip()             self.reply_text(text, incoming_message)             return AckMessage.STATUS_OK, "OK"   def main():     credential = dingtalk_stream.Credential(         os.getenv("DINGTALK_CLIENTID"),         os.getenv("DINGTALK_CLIENTSECRET"),     )     client = dingtalk_stream.DingTalkStreamClient(credential)     client.register_callback_handler(         dingtalk_stream.chatbot.ChatbotMessage.TOPIC, DingtalkMsgHandler()     )     client.start_forever()   if __name__ == "__main__":     main() 

运行这个脚本后,在钉钉中给“originbot_home_assistant”这个机器人发送消息后,它会给你回复一样的内容。

到这里就已经实现了最基础的交互功能了。

大家在代码中可以看到,我目前限定了只能接收文本格式的消息,其他类型暂时都不允许,这主要是为了降低一开始的开发难度,不用考虑所有可能。

但实际上,钉钉的单聊机器人支持很丰富的消息类型,可以看下面的说明:企业机器人发送单聊消息 - 钉钉开放平台

我会在后面需要的时候添加其他消息类型。

集成GPT4o

上面给出的通过钉钉单聊机器人跟智能小车交互的代码是非常简单的,它只能把你发给小车的消息原样返回,但实际使用过程中肯定不会这样使用。我在这里是希望通过在交互过程中集成GPT4o来让其更加智能化。

具体可以看下面的代码:

""" 大模型相关的封装和调用, 文件名是llms.py """  import os import requests import json import base64  from logger import logger   # 读取图片并编码为 Base64 字符串 def encode_image_to_base64(image_path=None, image_bytes=None):     if image_path and image_bytes:         raise ValueError("image_path and image_bytes cannot be both provided.")     if image_path:         with open(image_path, "rb") as image_file:             encoded_string = base64.b64encode(image_file.read()).decode("utf-8")     if image_bytes:         encoded_string = base64.b64encode(image_bytes).decode("utf-8")     return encoded_string   def azure_gpt4o(message):     api_key = os.getenv("API_KEY")     headers = {"Content-Type": "application/json", "api-key": api_key}      data = {         "messages": message,         "max_tokens": 4096,         "temperature": 0.8,         "frequency_penalty": 0,         "presence_penalty": 0,         "top_p": 0.95,         "stop": None,     }      url = os.environ.get("GPT4O_ENDPOINT")     try:         response = requests.post(url, headers=headers, data=json.dumps(data))         if response.status_code == 200:             return response.json()["choices"][0]["message"]["content"]         else:             logger.info(                 f"LLM 调用失败,状态码:{response.status_code},错误信息:{response.text}"             )     except requests.RequestException as e:         logger.error(f"请求发生错误:{e}")     except Exception as e:         logger.error(f"发生未知错误:{e}") 

点击轻松实现远程智能交互:OriginBot与钉钉和GPT4o的集成指南——古月居可查看全文

相关内容

热门资讯

秒懂教程“微信链接牛牛群房卡怎... 随意玩是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享...
房卡必备教程“金花大厅房卡链接... 微信网页牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房...
金花大厅链接房卡怎么弄的/微信... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
一分钟推荐“微信金花房卡怎样购... 新神盾是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享...
房卡必备教程“微信金花链接在哪... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
微信链接炸金花房卡开科技/微信... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡...
安卓系统游戏昵称推荐,昵称背后... 亲爱的玩家们,你是不是在为你的安卓系统游戏昵称发愁呢?别急,今天我就来给你支支招,让你在游戏中脱颖而...
金花链接房卡怎么创建房间/创建... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
微信牛牛链接怎么制作/微信金花... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
正版授权“微信拼三张房卡怎么获... 新祥心牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡...
安卓系统与苹果的区别,系统差异... 你有没有想过,为什么有些人偏爱安卓手机,而有些人却对苹果爱不释手呢?这其中的奥秘,可不仅仅是因为外观...
微信炸金花房卡在哪里充/微信链... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
去哪儿买微信金花房卡/创建金花... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
金花客服代理房卡获取方式/微信... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
炸金花微信建群自己开房卡/牛牛... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
ia实测“微信炸金花房卡怎么开... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
购买斗牛房卡联系方式/微信链接... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
房卡必备教程“牛牛房卡购买渠道... 新乐游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来...
斗牛房卡怎么购买/微信牛牛房卡... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
微信上玩炸金花充值方式/牛牛金... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...