Skip to content

rinoiot/rino_assistant

Repository files navigation

RINO智能助理 (rino_assistant)

作者: rinoiot 版本: 0.0.3 类型: Dify 插件


📖 项目简介

RINO智能助理是一款为 Dify 平台开发的插件,旨在连接并控制 RINO IoT 平台上的智能家居设备。通过自然语言对话,用户可以轻松地查询设备状态、控制单个或多个设备、以及执行预设的场景。

本插件利用大语言模型(LLM)的理解能力,将用户的自然语言指令转换为对RINO IoT平台的精确API调用,从而实现对智能设备的无缝控制。

✨ 核心功能

本插件目前提供以下核心工具:

  1. 获取所有可控制的智能设备 (get_all_device)

    • 功能描述: 从用户指定的家庭中,获取所有可以被控制的设备、设备群组和场景的完整列表。
    • 必要参数: homeId, userId, apiUrl
    • 工作方式: LLM根据对话上下文或用户输入,提供homeIduserId,用户在插件配置时提供apiUrl
  2. 发送设备控制指令 (send_operate)

    • 功能描述: 向指定的智能设备、群组或场景发送控制指令。例如开关、调节亮度、改变颜色等。
    • 必要参数: data, apiUrl
    • 工作方式: LLM根据用户的指令,生成符合RINO IoT平台规范的JSON格式控制指令(data),实现对设备的精确控制。
  3. 获取当前时间 (get_time)

    • 功能描述: 一个辅助工具,可以获取指定时区的当前时间。
    • 必要参数: timezone
    • 工作方式: LLM提供标准的IANA时区标识符(如 Asia/Shanghai),工具返回该时区的具体时间信息。

🚀 如何使用

请按照以下步骤在您的Dify应用中配置和使用本插件:

步骤一:获取必要凭证

在配置插件之前,您需要从RINO IoT平台获取以下信息:

  • RINO API Key: 您的开发者API密钥,用于插件认证。
  • API URL: RINO IoT 平台的API服务器地址。
  • homeId: 您需要控制的家庭ID。
  • userId: 您的用户ID。

请登录 RINO IoT 平台 的控制台获取以上信息。

步骤二:在Dify中配置插件

  1. 在Dify平台的"工具" -> "插件"部分,点击"创建自定义插件"。
  2. 选择"通过URL上传"或"本地上传 manifest 文件",将本项目的 manifest.yaml 文件内容或托管地址填入。
  3. 在插件的"凭证配置"部分,填入您在第一步获取的 RINO API Key
  4. 在工具的参数设置中,根据提示填入您的 API URL

步骤三:在应用中使用插件

配置完成后,您可以在Dify的智能应用中添加并启用"RINO智能助理"插件。之后,您便可以通过对话来控制您的智能设备。

对话示例:

  • "帮我获取一下所有设备"
  • "把客厅的灯打开"
  • "关闭所有窗帘"
  • "现在上海的时间是几点?"

📦 插件发布

本插件遵循Dify的插件开发规范,可以作为自定义插件使用,也可以提交到Dify的官方插件商店。

关于如何将插件贡献到Dify插件商店,请参考官方文档: Dify 插件开发与贡献指南

发布流程通常包括:

  1. 确保插件功能稳定,并遵循Dify的设计规范。
  2. 准备清晰的 manifest.yaml 文件和必要的文档(如本README.md)。
  3. 将插件代码托管在公开的Git仓库(如GitHub)。
  4. 通过向Dify官方提交Pull Request的方式来贡献您的插件。

🛠️ 开发说明

本项目结构清晰,方便二次开发和维护。

  • main.py: 插件的Web Server入口,用于被Dify后端调用。
  • manifest.yaml: 插件的核心声明文件,定义了插件的元数据和所需权限。
  • provider/: 存放插件的提供商配置 (rino_assistant.yaml) 和工具的Python实现 (rino_assistant.py)。
  • tools/: 存放每个工具的API声明文件 (.yaml) 和独立的Python实现脚本 (.py)。
  • requirements.txt: 项目的Python依赖。

欢迎开发者基于此项目进行扩展,以支持更多RINO IoT平台的功能。

About

Dify plugin

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages