{"repo": "agentera/agently-talk-to-control", "files": {"SETTINGS.yaml": {"168a86f94a2180eca42eaca78fd3e7a81c6dee8d": {"t": 1785745198.7952821, "n": 1402, "h": "d52210506e97576b", "c": "DEBUG: false\n\nAGENT_SETTINGS:\n provider: \"OpenAICompatible\"\n options:\n base_url: ${ENV.DEEPSEEK_BASE_URL}\n model: ${ENV.DEEPSEEK_DEFAULT_MODEL}\n auth:\n api_key: ${ENV.DEEPSEEK_API_KEY}\n request_options:\n temperature: 0\n\nUI:\n server_name: \"0.0.0.0\"\n server_port: 7860\n\nINITIAL_STATUS:\n camera_status:\n camera_1:\n power: 1\n zoom_factor: 1.0\n camera_2:\n power: 0\n zoom_factor: 1.0\n\nCONTROLLERS:\n turn_on_camera:\n desc: \"turn on the camera\"\n args:\n camera_name:\n $type: \"'camera_1' | 'camera_2'\"\n $desc: \"[Required]\"\n func: \"turn_on_camera\"\n get:\n - \"camera_status\"\n set:\n \"camera_status.<$camera_name>.power\": \"<$power>\"\n turn_off_camera:\n desc: \"turn off the camera\"\n args:\n camera_name:\n $type: \"'camera_1' | 'camera_2'\"\n $desc: \"[Required]\"\n func: \"turn_off_camera\"\n get:\n - \"camera_status\"\n set:\n \"camera_status.<$camera_name>.power\": \"<$power>\"\n zoom:\n desc: \"change zoom factor\"\n args:\n target_camera:\n $type: \"'camera_1' | 'camera_2'\"\n $desc: \"[Required]\"\n target_zoom_factor:\n $type: \"float\"\n $desc: \"[Optional] Reset current zoom factor of the camera to target zoom factor.\"\n func: \"zoom_camera\"\n get:\n - \"camera_status\"\n set:\n \"camera_status.<$camera_name>.zoom_factor\": \"<$zoom_factor>\"\n"}, "83f09be7474b96286212f37f86ad43ac5d00bbf2": {"t": 1785748533.6058705, "n": 1367, "h": "813f6fa83b8cb4b5", "c": "# Debug Settings\nDEBUG: false\n# Model Settings\nMODEL_CLIENT: \"OAIClient\"\n#MODEL_URL: \"\"\nMODEL_AUTH:\n api_key: \"\"\nMODEL_OPTIONS:\n model: \"gpt-4\"\n# Proxy Settings\n#PROXY: \"http://127.0.0.1:7890\"\n# Initial Status\nINITIAL_STATUS:\n camera_status:\n camera_1:\n power: 1\n zoom_factor: 1.0\n camera_2:\n power: 0\n zoom_factor: 1.0\n# Controllers\nCONTROLLERS:\n turn_on_camera:\n desc: \"turn on the camera\"\n args:\n camera_name:\n $type: \"'camera_1' | 'camera_2'\"\n $desc: \"[Required]\"\n func: \"turn_on_camera\"\n get: \n - \"camera_status\"\n set: \n \"camera_status.<$camera_name>.power\": \"<$power>\"\n turn_off_camera:\n desc: \"turn off the camera\"\n args:\n camera_name:\n $type: \"'camera_1' | 'camera_2'\"\n $desc: \"[Required]\"\n func: \"turn_off_camera\"\n get: \n - \"camera_status\"\n set: \n \"camera_status.<$camera_name>.power\": \"<$power>\"\n zoom:\n desc: \"change zoom factor\"\n args:\n target_camera:\n $type: \"'camera_1' | 'camera_2'\"\n $desc: \"[Required]\"\n target_zoom_factor:\n $type: \"float\"\n $desc: \"[Optional] Reset current zoom factor of the camera to target zoom factor.\"\n func: \"zoom_camera\"\n get: \n - \"camera_status\"\n set: \n \"camera_status.<$camera_name>.zoom_factor\": \"<$zoom_factor>\""}}, "README.md": {"168a86f94a2180eca42eaca78fd3e7a81c6dee8d": {"t": 1785747260.8098943, "n": 5383, "h": "9b2612ea444e121a", "c": "# Agently-Talk-to-Control\n\n**English | [中文](./README_CN.md)**\n\n## Introduction\n\n**Agently-Talk-to-Control** is an open-source natural-language-to-control workflow demo built with the [Agently AI application framework](https://github.com/Maplemx/Agently).\n\nThe project shows how to turn a user request in natural language into one of three outcomes:\n\n- **reply directly** from current environment state\n- **plan and execute one or multiple control actions**\n- **reject the request** with explanation and suggestion\n\nTypical scenarios include:\n\n- smart home input understanding\n- device control after speech-to-text in manufacturing, monitoring, or medical assistance\n- enterprise environments with many standardized control APIs that still need natural-language understanding\n\n## What It Can Do\n\nWith the default settings, the project manages a small device pool with two cameras and can:\n\n- understand user intent from free-form chat\n- inspect current device status before deciding what to do\n- split a complex request into ordered control actions\n- execute controller functions and write the result back into shared status\n- show intermediate planning and execution output in the chat UI\n\n## How to Use\n\n1. Clone this repo:\n\n```bash\ngit clone git@github.com:AgentEra/Agently-Talk-to-Control.git\ncd Agently-Talk-to-Control\n```\n\n2. Install dependencies:\n\n```bash\npip install -r requirements.txt\n```\n\n3. Configure `SETTINGS.yaml`.\n\nRecommended Agently v4-style model config:\n\n```yaml\nAGENT_SETTINGS:\n provider: \"OpenAICompatible\"\n options:\n base_url: ${ENV.DEEPSEEK_BASE_URL}\n model: ${ENV.DEEPSEEK_DEFAULT_MODEL}\n auth:\n api_key: ${ENV.DEEPSEEK_API_KEY}\n```\n\n4. Start the app:\n\n```bash\npython app.py\n```\n\n5. Open the local Gradio page shown in the terminal. By default it runs on `http://127.0.0.1:7860/`.\n\n## Environment Variables\n\n`SETTINGS.yaml` supports `${ENV.VAR_NAME}` syntax.\n\nProject-side fields such as `UI` are resolved by this repo, and Agently-side model settings are passed through to Agently's `auto_load_env` support.\n\nExample:\n\n```yaml\nAGENT_SETTINGS:\n provider: \"OpenAICompatible\"\n options:\n base_url: ${ENV.DEEPSEEK_BASE_URL}\n model: ${ENV.DEEPSEEK_DEFAULT_MODEL}\n auth:\n api_key: ${ENV.DEEPSEEK_API_KEY}\n\nUI:\n server_port: ${ENV.APP_PORT}\n```\n\n## Run Result Screenshot\n\nThe screenshot below shows the default two-camera setup in action.\n\n\"talk-to-control\"\n\n## Extend Controllers\n\nYou can extend the device pool and controller set with three steps.\n\n1. Add initial device state to `SETTINGS.yaml`.\n\nExample: add two lights\n\n```yaml\nINITIAL_STATUS:\n light_status:\n light_a:\n power: 1\n brightness: 50\n light_b:\n power: 0\n brightness: 50\n```\n\n2. Add controller functions to `controllers/controllers.py`.\n\n```python\ndef control_light_power(light_name, target_power):\n power_status = (\"Off\", \"On\")\n print(f\"⚙️ [Turn On/Off Light]: {light_name} -> Power:{power_status[target_power]}\")\n return {\"light_name\": light_name, \"power\": target_power}\n\n\ndef control_light_brightness(light_name, brightness):\n print(f\"⚙️ [Adjust Light Brightness]: {light_name} -> Brightness:{brightness}\")\n return {\"light_name\": light_name, \"brightness\": brightness}\n```\n\n3. Register the controllers in `SETTINGS.yaml`.\n\n```yaml\nCONTROLLERS:\n control_light_power:\n desc: \"turn on or off a target light\"\n args:\n light_name:\n $type: \"'light_a' | 'light_b'\"\n $desc: \"[Required]\"\n target_power:\n $type: \"int\"\n $desc: \"[Required] 0 - Off, 1 - On\"\n func: \"control_light_power\"\n get:\n - \"light_status\"\n set:\n \"light_status.<$light_name>.power\": \"<$power>\"\n\n control_light_brightness:\n desc: \"adjust a target light's brightness\"\n args:\n light_name:\n $type: \"'light_a' | 'light_b'\"\n $desc: \"[Required]\"\n brightness:\n $type: \"int\"\n $desc: \"[Required] Range: 0-100\"\n```\n\n## Agently v4 Version\n\nThe current root project is the **Agently v4** implementation, based on:\n\n- **TriggerFlow** for orchestration\n- **Gradio** for the chat UI\n- Agently v4-style model settings with backward compatibility for older `MODEL_*` fields\n\nThe original Agently v3 version is archived under [`/v3`](./v3).\n\n## Optimization Highlights\n\nCompared with the earlier root version of this repo, the current implementation includes:\n\n- **true incremental chat updates** in the Gradio UI instead of coarse block updates\n- **first-pass action arg generation**, so many requests avoid a second model call per action\n- **parallel execution for independent actions**, such as operations targeting different device resources\n- **environment-backed config loading**, including `${ENV.VAR}` support in `SETTINGS.yaml`\n\n## Project Structure\n\n- `app.py`: Gradio entrypoint\n- `workflows/talk_to_control.py`: TriggerFlow orchestration\n- `controllers/`: controller registry and device actions\n- `utils/`: config loading and chat-history helpers\n- `tests/`: flow and config tests\n- `v3/`: archived Agently v3 implementation\n\n## Main Dependencies\n\n- **Agently AI Development Framework**: https://github.com/Maplemx/Agently | https://pypi.org/project/Agently/ | https://agently.tech\n- **Gradio**: https://github.com/gradio-app/gradio | https://gradio.app/\n"}, "b9e485bf708e2ae6d8a6f0686d1b09feacc2898b": {"t": 1785748535.3634562, "n": 5493, "h": "ca1fc4c69c0016cf", "c": "# Agently-Talk-to-Control\n\n**English | [中文](./README_CN.md)**\n\n## Introduction\n\n**Agently-Talk-to-Control** is an open-source chat text to control actions agentic workflow showcase project powered by [Agently AI application development framework](https://github.com/Maplemx/Agently).\n\nThis project presents how to create a complex agentic workflow to **analyse user requirement in natural language** and decide to:\n\n- **directly answer user's question with current environment information** or\n\n\n- **make and execute an operation plan with one or many operation actions** or\n\n- **reject user's request with explanation or even suggestion**\n\nThe applicable scenarios for this project include:\n\n- Acting as an input understanding module for smart home systems, interpreting and processing complex user input expressions to execute commands.\n- Acting as an auxiliary understanding module after speech-to-text conversion for devices used in manufacturing, monitoring, medical assistance, etc., aiding operators in providing auxiliary control during operations.\n- Acting as an input understanding and action planning module in enterprise office settings or other environments with numerous standardized action request interfaces, helping to comprehend and plan complex user input expressions and extract standardized information for requests.\n- ...\n\n## How to Use\n\n- Step 1. Clone this repo: `git clone git@github.com:AgentEra/Agently-Talk-to-Control.git`\n\n- Step 2. Edit `SETTINGS.yaml` to fill in your model's API Key or change to other model [[View Agently Supported Models]](https://agently.tech/guides/model_settings/index.html)\n\n- Step 3. Run python script: `python app.py` [[Install Python from Python Official Website]](https://www.python.org/)\n\n- Step 4. Open Gradio UI page in your explorer: `http://127.0.0.1:7860/` by default\n\n## Run Result Screenshot with Default Settings\n\nThe image down below is a run result screenshot with the default settings of this project that only contain 2 cameras in component pool to be controlled. \n\n\"talk-to-control\"\n\n## Try Extend Controllers\n\nOf course, as a showcase project, developers can extend more controllers and components to be controlled as followed.\n\n- Step 1. Add component initial status into `SETTINGS.yaml`\n\n For example: add 2 lights initial status\n\n ```yaml\n INITIAL_STATUS:\n light_status:\n light_a:\n power: 1\n brightness: 50\n light_b:\n power: 0\n brightness: 50\n ```\n\n- Step 2. Add controller functions into `controllers/controllers.py`\n\n For example: add 2 controller functions of light control\n\n ```python\n def control_light_power(light_name, target_power):\n power_status = (\"Off\", \"On\")\n print(f\"⚙️ [Turn On/Off Light]: { light_name } -> Power:{ power_status[target_power] }\")\n return { \"light_name\": light_name, \"power\": target_power }\n\n def control_light_brightness(light_name, brightness):\n print(f\"⚙️ [Adjust Light Brightness]: { light_name } -> Brightness:{ brightness }\")\n return { \"light_name\": light_name, \"brightness\": brightness }\n ```\n\n- Step 3. Add controller settings into `SETTINGS.yaml` according status settings in step 1 and controller functions' definitions in step 2.\n\n ```yaml\n CONTROLLERS:\n control_light_power:\n desc: \"turn on or off a target light\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n target_power:\n $type: \"int\"\n $desc: \"[Required]0 - Off, 1 - On\"\n func: \"control_light_power\"\n # Will get environment information from target key before calling operation\n get:\n - \"light_status\"\n # Will update environment information to target key with target value\n # Placeholder <$variable_name> will be replaced by key values in controller function's return dict\n set:\n \"light_status.<$light_name>.power\": \"<$power>\"\n control_light_brightness:\n desc: \"adjust a target light's brightness\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n brightness:\n $type: \"int\"\n $desc: \"[Required] Range: 0(darkest)-100(brightest)\"\n ```\n\nOK, now 2 light components have been added to component pool. Let's try to talk to control them.\n\n\"extend-controllers\"\n\nEverything seems to be great! Enjoy it!\n\n## Mainly Dependencies\n\n- **Agently AI Development Framework**: https://github.com/Maplemx/Agently | https://pypi.org/project/Agently/ | https://Agently.tech\n\n- **Gradio**: https://github.com/gradio-app/gradio | https://gradio.app/\n\n---\n\nPlease ⭐️ this repo and [Agently](https://github.com/Maplemx/Agently) main repo if you like it! Thank you very much!\n\n> 💬 WeChat Group(加入微信群):\n>\n> [Click Here to Apply](https://doc.weixin.qq.com/forms/AIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf) or Scan the QR Code Down Below\n>\n> \"image\"\n"}, "8e448b970d392354960c60c89f6ae2ee224d1def": {"t": 1785748536.4604218, "n": 5461, "h": "649e8dd8ae0bb35d", "c": "# Agently-Talk-to-Control\n\n**English | [中文](./README_CN.md)**\n\n## Introduction\n\n**Agently-Talk-to-Control** is an open-source chat text to control actions agentic workflow showcase project powered by [Agently AI application development framework](https://github.com/Maplemx/Agently).\n\nThis project presents how to create a complex agentic workflow to **analyse user requirement in natural language** and decide to:\n\n- **directly answer user's question with current environment information** or\n\n\n- **make and execute an operation plan with one or many operation actions** or\n\n- **reject user's request with explanation or even suggestion**\n\nThe applicable scenarios for this project include:\n\n- Acting as an input understanding module for smart home systems, interpreting and processing complex user input expressions to execute commands.\n- Acting as an auxiliary understanding module after speech-to-text conversion for devices used in manufacturing, monitoring, medical assistance, etc., aiding operators in providing auxiliary control during operations.\n- Acting as an input understanding and action planning module in enterprise office settings or other environments with numerous standardized action request interfaces, helping to comprehend and plan complex user input expressions and extract standardized information for requests.\n- ...\n\n## How to Use\n\n- Step 1. Clone this repo: `git clone git@github.com:AgentEra/Agently-Talk-to-Control.git`\n\n- Step 2. Edit `SETTINGS.yaml` to fill in your model's API Key or change to other model [[View Agently Supported Models]](https://agently.tech/guides/model_settings/index.html)\n\n- Step 3. Run python script: `python app.py` [[Install Python from Python Official Website]](https://www.python.org/)\n\n- Step 4. Open Gradio UI page in your explorer: `http://127.0.0.1:7860/` by default\n\n## Run Result Screenshot with Default Settings\n\nThe image down below is a run result screenshot with the default settings of this project that only contain 2 cameras in component pool to be controlled. \n\n\"talk-to-control\"\n\n## Try Extend Controllers\n\nOf course, as a showcase project, developers can extend more controllers and components to be controlled as followed.\n\n- Step 1. Add component initial status into `SETTINGS.yaml`\n\n For example: add 2 lights initial status\n\n ```yaml\n INITIAL_STATUS:\n light_status:\n light_a:\n power: 1\n brightness: 50\n light_b:\n power: 0\n brightness: 50\n ```\n\n- Step 2. Add controller functions into `controllers/controllers.py`\n\n For example: add 2 controller functions of light control\n\n ```python\n def control_light_power(light_name, target_power):\n power_status = (\"Off\", \"On\")\n print(f\"⚙️ [Turn On/Off Light]: { light_name } -> Power:{ power_status[target_power] }\")\n return { \"light_name\": light_name, \"power\": target_power }\n\n def control_light_brightness(light_name, brightness):\n print(f\"⚙️ [Adjust Light Brightness]: { light_name } -> Brightness:{ brightness }\")\n return { \"light_name\": light_name, \"brightness\": brightness }\n ```\n\n- Step 3. Add controller settings into `SETTINGS.yaml` according status settings in step 1 and controller functions' definitions in step 2.\n\n ```yaml\n CONTROLLERS:\n control_light_power:\n desc: \"turn on or off a target light\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n target_power:\n $type: \"int\"\n $desc: \"[Required]0 - Off, 1 - On\"\n func: \"control_light_power\"\n # Will get environment information from target key before calling operation\n get:\n - \"light_status\"\n # Will update environment information to target key with target value\n # Placeholder <$variable_name> will be replaced by key values in controller function's return dict\n set:\n \"light_status.<$light_name>.power\": \"<$power>\"\n control_light_brightness:\n desc: \"adjust a target light's brightness\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n brightness:\n $type: \"int\"\n $desc: \"[Required] Range: 0(darkest)-100(brightest)\"\n ```\n\nOK, now 2 light components have been added to component pool. Let's try to talk to control them.\n\n\"extend-controllers\"\n\nEverything seems to be great! Enjoy it!\n\n## Mainly Dependencies\n\n- **Agently AI Development Framework**: https://github.com/Maplemx/Agently | https://pypi.org/project/Agently/ | https://Agently.tech\n\n- **Gradio**: https://github.com/gradio-app/gradio | https://gradio.app/\n\n---\n\nPlease ⭐️ this repo and [Agently](https://github.com/Maplemx/Agently) main repo if you like it! Thank you very much!\n\n> 💬 WeChat Group(加入微信群):\n>\n> [Click Here to Apply](https://doc.weixin.qq.com/forms/AIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf) or Scan the QR Code Down Below\n>\n> \"image\"\n"}, "3781ef44eaa09fcda5ebb5b7c194d6673acaceb5": {"t": 1785748537.5686207, "n": 4757, "h": "17e4324b69af9ba4", "c": "# Agently-Talk-to-Control\n\n**English | [中文](./README_CN.md)**\n\n## Introduction\n\n**Agently-Talk-to-Control** is an open-source chat text to control actions agentic workflow showcase project powered by [Agently AI application development framework](https://github.com/Maplemx/Agently).\n\nThis project presents how to create a complex agentic workflow to **analyse user requirement in natural language** and decide to:\n\n- **directly answer user's question with current environment information** or\n\n\n- **make and execute an operation plan with one or many operation actions** or\n\n- **reject user's request with explanation or even suggestion**\n\n## How to Use\n\n- Step 1. Clone this repo: `git clone git@github.com:AgentEra/Agently-Talk-to-Control.git`\n\n- Step 2. Edit `SETTINGS.yaml` to fill in your model's API Key or change to other model [[View Agently Supported Models]](https://agently.tech/guides/model_settings/index.html)\n\n- Step 3. Run python script: `python app.py` [[Install Python from Python Official Website]](https://www.python.org/)\n\n- Step 4. Open Gradio UI page in your explorer: `http://127.0.0.1:7860/` by default\n\n## Run Result Screenshot with Default Settings\n\nThe image down below is a run result screenshot with the default settings of this project that only contain 2 cameras in component pool to be controlled. \n\n\"talk-to-control\"\n\n## Try Extend Controllers\n\nOf course, as a showcase project, developers can extend more controllers and components to be controlled as followed.\n\n- Step 1. Add component initial status into `SETTINGS.yaml`\n\n For example: add 2 lights initial status\n\n ```yaml\n INITIAL_STATUS:\n light_status:\n light_a:\n power: 1\n brightness: 50\n light_b:\n power: 0\n brightness: 50\n ```\n\n- Step 2. Add controller functions into `controllers/controllers.py`\n\n For example: add 2 controller functions of light control\n\n ```python\n def control_light_power(light_name, target_power):\n power_status = (\"Off\", \"On\")\n print(f\"⚙️ [Turn On/Off Light]: { light_name } -> Power:{ power_status[target_power] }\")\n return { \"light_name\": light_name, \"power\": target_power }\n\n def control_light_brightness(light_name, brightness):\n print(f\"⚙️ [Adjust Light Brightness]: { light_name } -> Brightness:{ brightness }\")\n return { \"light_name\": light_name, \"brightness\": brightness }\n ```\n\n- Step 3. Add controller settings into `SETTINGS.yaml` according status settings in step 1 and controller functions' definitions in step 2.\n\n ```yaml\n CONTROLLERS:\n control_light_power:\n desc: \"turn on or off a target light\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n target_power:\n $type: \"int\"\n $desc: \"[Required]0 - Off, 1 - On\"\n func: \"control_light_power\"\n # Will get environment information from target key before calling operation\n get:\n - \"light_status\"\n # Will update environment information to target key with target value\n # Placeholder <$variable_name> will be replaced by key values in controller function's return dict\n set:\n \"light_status.<$light_name>.power\": \"<$power>\"\n control_light_brightness:\n desc: \"adjust a target light's brightness\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n brightness:\n $type: \"int\"\n $desc: \"[Required] Range: 0(darkest)-100(brightest)\"\n ```\n\nOK, now 2 light components have been added to component pool. Let's try to talk to control them.\n\n\"extend-controllers\"\n\nEverything seems to be great! Enjoy it!\n\n## Mainly Dependencies\n\n- **Agently AI Development Framework**: https://github.com/Maplemx/Agently | https://pypi.org/project/Agently/ | https://Agently.tech\n\n- **Gradio**: https://github.com/gradio-app/gradio | https://gradio.app/\n\n---\n\nPlease ⭐️ this repo and [Agently](https://github.com/Maplemx/Agently) main repo if you like it! Thank you very much!\n\n> 💬 WeChat Group(加入微信群):\n>\n> [Click Here to Apply](https://doc.weixin.qq.com/forms/AIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf) or Scan the QR Code Down Below\n>\n> \"image\"\n"}, "6e7a064de22316e955e61172750dad6c098d43cf": {"t": 1785748538.6697812, "n": 4628, "h": "0a335bb1b03a9038", "c": "# Agently-Talk-to-Control\n\n**English | [中文](./README_CN.md)**\n\n## Introduction\n\n**Agently-Talk-to-Control** is an open-source chat text to control actions agentic workflow showcase project powered by [Agently AI application development framework](https://github.com/Maplemx/Agently).\n\nThis project presents how to create a complex agentic workflow to **analyse user requirement in natural language** and decide to:\n\n- **directly answer user's question with current environment information** or\n\n\n- **make and execute an operation plan with one or many operation actions** or\n\n- **reject user's request with explanation or even suggestion**\n\n## How to Use\n\n- Step 1. Clone this repo: `git clone git@github.com:AgentEra/Agently-Talk-to-Control.git`\n\n- Step 2. Edit `SETTINGS.yaml` to fill in your model's API Key or change to other model [[View Agently Supported Models]](https://agently.tech/guides/model_settings/index.html)\n\n- Step 3. Run python script: `python app.py` [[Install Python from Python Official Website]](https://www.python.org/)\n\n- Step 4. Open Gradio UI page in your explorer: `http://127.0.0.1:7860/` by default\n\n## Run Result Screenshot with Default Settings\n\nThe image down below is a run result screenshot with the default settings of this project that only contain 2 cameras in component pool to be controlled. \n\n\"talk-to-control\"\n\n## Try Extend Controllers\n\nOf course, as a showcase project, developers can extend more controllers and components to be controlled as followed.\n\n- Step 1. Add component initial status into `SETTINGS.yaml`\n\n For example: add 2 lights initial status\n\n ```yaml\n INITIAL_STATUS:\n light_status:\n light_a:\n power: 1\n brightness: 50\n light_b:\n power: 0\n brightness: 50\n ```\n\n- Step 2. Add controller functions into `controllers/controllers.py`\n\n For example: add 2 controller functions of light control\n\n ```python\n def control_light_power(light_name, target_power):\n power_status = (\"Off\", \"On\")\n print(f\"⚙️ [Turn On/Off Light]: { light_name } -> Power:{ power_status[target_power] }\")\n return { \"light_name\": light_name, \"power\": target_power }\n\n def control_light_brightness(light_name, brightness):\n print(f\"⚙️ [Adjust Light Brightness]: { light_name } -> Brightness:{ brightness }\")\n return { \"light_name\": light_name, \"brightness\": brightness }\n ```\n\n- Step 3. Add controller settings into `SETTINGS.yaml` according status settings in step 1 and controller functions' definitions in step 2.\n\n ```yaml\n CONTROLLERS:\n control_light_power:\n desc: \"turn on or off a target light\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n target_power:\n $type: \"int\"\n $desc: \"[Required]0 - Off, 1 - On\"\n func: \"control_light_power\"\n # Will get environment information from target key before calling operation\n get:\n - \"light_status\"\n # Will update environment information to target key with target value\n # Placeholder <$variable_name> will be replaced by key values in controller function's return dict\n set:\n \"light_status.<$light_name>.power\": \"<$power>\"\n control_light_brightness:\n desc: \"adjust a target light's brightness\"\n args:\n light_name:\n $type: \"'light_a', 'light_b'\"\n $desc: \"[Required]\"\n brightness:\n $type: \"int\"\n $desc: \"[Required] Range: 0(darkest)-100(brightest)\"\n ```\n\nOK, now 2 light components have been added to component pool. Let's try to talk to control them.\n\n\n\nEverything seems to be great! Enjoy it!\n\n## Mainly Dependencies\n\n- **Agently AI Development Framework**: https://github.com/Maplemx/Agently | https://pypi.org/project/Agently/ | https://Agently.tech\n\n- **Gradio**: https://github.com/gradio-app/gradio | https://gradio.app/\n\n---\n\nPlease ⭐️ this repo and [Agently](https://github.com/Maplemx/Agently) main repo if you like it! Thank you very much!\n\n> 💬 WeChat Group(加入微信群):\n>\n> [Click Here to Apply](https://doc.weixin.qq.com/forms/AIoA8gcHAFMAScAhgZQABIlW6tV3l7QQf) or Scan the QR Code Down Below\n>\n> \"image\""}, "6b06d3eb1e84f8a183f8257d5c2381045af84f63": {"t": 1785748539.7568548, "n": 1287, "h": "1f5cd9ce7b7b3a67", "c": "# Agently-Talk-to-Control\n\n**English | [中文](./README_CN.md)**\n\n## Introduction\n\n**Agently-Talk-to-Control** is an open-source chat text to control actions agentic workflow showcase project powered by [Agently AI application development framework](https://github.com/Maplemx/Agently).\n\nThis project presents how to create a complex agentic workflow to **analyse user requirement in natural language** and decide to:\n\n- **directly answer user's question with current environment information** or\n\n\n- **make and execute an operation plan with one or many operation actions** or\n\n- **reject user's request with explanation or even suggestion**\n\n## How to Use\n\n- Step 1. Clone this repo: `git clone git@github.com:AgentEra/Agently-Talk-to-Control.git`\n\n- Step 2. Edit `SETTINGS.yaml` to fill in your model's API Key or change to other model [[View Agently Supported Models]](https://agently.tech/guides/model_settings/index.html)\n\n- Step 3. Run python script: `python app.py` [[Install Python from Python Official Website]](https://www.python.org/)\n\n- Step 4. Open Gradio UI page in your explorer: `http://127.0.0.1:7860/` by default\n\n## Screenshot of Run Result\n\n\"talk-to-control\"\n"}, "33d33f511d258119c95e840566d95ab8c5eaf328": {"t": 1785748540.8366303, "n": 1157, "h": "e4a35b6a837d5e5b", "c": "# Agently-Talk-to-Control\n\n**English | [中文](./README_CN.md)**\n\n## Introduction\n\n**Agently-Talk-to-Control** is an open-source chat text to control actions agentic workflow showcase project powered by [Agently AI application development framework](https://github.com/Maplemx/Agently).\n\nThis project presents how to create a complex agentic workflow to **analyse user requirement in natural language** and decide to:\n\n- **directly answer user's question with current environment information** or\n\n\n- **make and execute an operation plan with one or many operation actions** or\n\n- **reject user's request with explanation or even suggestion**\n\n## How to Use\n\n- Step 1. Clone this repo: `git clone git@github.com:AgentEra/Agently-Talk-to-Control.git`\n\n- Step 2. Edit `SETTINGS.yaml` to fill in your model's API Key or change to other model [[View Agently Supported Models]](https://agently.tech/guides/model_settings/index.html)\n\n- Step 3. Run python script: `python app.py` [[Install Python from Python Official Website]](https://www.python.org/)\n\n- Step 4. Open Gradio UI page in your explorer: `http://127.0.0.1:7860/` by default\n\n## Screenshot of Run Result"}, "357c706bdb620cd546b85c8cd4ce6ab22b81ac85": {"t": 1785748541.9332674, "n": 25, "h": "1891f2c5bbe0c024", "c": "# Agently-Talk-to-Control"}}}}