Skip to content

Latest commit

 

History

History
119 lines (88 loc) · 5.35 KB

README_CN.md

File metadata and controls

119 lines (88 loc) · 5.35 KB

Agently-Talk-to-Control(Agently自然语言→控制)

English | 中文

简介

Agently-Talk-to-Control是一个基于Agently AI 应用开发框架开发的开源自然语言转控制操作的Agentic工作流展示项目。

该项目展示了如何使用Agently AI 应用开发框架提供的各项能力创建一个复杂的Agentic工作流来分析用户通过自然语言表达的需求并决定是应该:

  • 直接基于当前环境信息回答用户的问题
  • 制定并执行包含一个或多个操作步骤的计划
  • 拒绝用户的要求,并给出解释,甚至是修正的建议

该项目的适用场景包括:

  • 作为智能家居的输入理解模块,理解和处理用户的复杂输入表达并完成指令执行
  • 作为制造、监视、医疗辅助等设备的语音转文字后的辅助理解模块,帮助操作者在作业过程中对设备进行辅助控制
  • 作为输入理解和行动规划模块,在企业办公等具有较多规范行动请求接口的场景中,帮助理解和规划用户的复杂输入表达并抽取标准信息进行请求
  • ……

使用方法

  • 步骤 1:克隆此仓库:git clone git@github.com:AgentEra/Agently-Talk-to-Control.git
  • 步骤 2:编辑SETTINGS.yaml,填写你的模型API KEY或切换到其他模型 查看Agently框架支持的模型
  • 步骤 3:运行 Python 脚本:python app.py 如果您没有安装Python,可以从Python官方网站安装
  • 步骤 4:在浏览器中打开 Gradio UI 页面:默认地址为http://127.0.0.1:7860/

使用默认配置的运行效果图

下图为仅使用默认配置(设备池中只包括两个摄像头)的情况下,运行的效果:

talk-to-control

扩展更多的控制能力

当然了,本项目支持开发者通过简单的操作扩展解决方案的控制能力:

  • 步骤 1. 如果想要扩展新的设备,将设备的初始状态添加到 SETTINGS.yaml

    我们以向设备池中添加两个灯为例:

    INITIAL_STATUS:
        light_status:
            light_a:
                power: 1
                brightness: 50
            light_b:
                power: 0
                brightness: 50
  • 步骤 2. 将控制方法函数添加到controllers/controllers.py

    def control_light_power(light_name, target_power):
        power_status = ("Off", "On")
        print(f"⚙️ [Turn On/Off Light]: { light_name } -> Power:{ power_status[target_power] }")
        return { "light_name": light_name, "power": target_power }
    
    def control_light_brightness(light_name, brightness):
        print(f"⚙️ [Adjust Light Brightness]: { light_name } -> Brightness:{ brightness }")
        return { "light_name": light_name, "brightness": brightness }
  • 步骤 3. 根据步骤1中的设备状态设置和步骤2中的控制方法函数定义,将控制器设置添加到SETTINGS.yaml

    CONTROLLERS:
        control_light_power:
            desc: "turn on or off a target light"
            args:
                light_name:
                    $type: "'light_a', 'light_b'"
                    $desc: "[Required]"
                target_power:
                    $type: "int"
                    $desc: "[Required]0 - Off, 1 - On"
            func: "control_light_power"
            # 将在生成控制函数调用参数值前,从环境中取出指定字段的值作为补充信息
            get:
                - "light_status"
            # 将在控制函数调用结束后,更新环境信息
            # 占位符<$variable_name>将被控制函数的返回结果字典里的对应字段值替代
            set:
                "light_status.<$light_name>.power": "<$power>"
        control_light_brightness:
            desc: "adjust a target light's brightness"
            args:
                light_name:
                    $type: "'light_a', 'light_b'"
                    $desc: "[Required]"
                brightness:
                    $type: "int"
                    $desc: "[Required] Range: 0(darkest)-100(brightest)"

通过上面三步,我们就成功向设备池中添加了2个灯的状态及控制方法。现在,我们就试试通过Gradio界面来进行自然语言控制吧!

extend-controllers

不错不错,看起来很棒,能够很好地拆解规划复杂的指令。

主要依赖说明


如果您喜欢这个项目,请为本项目以及Agently框架主仓库点亮⭐️。

💬 加入Agently AI应用开发框架开发者讨论微信群:

点击此处申请或扫描下方二维码申请

image