mirror of
https://github.com/OS-Copilot/OS-Copilot.git
synced 2026-01-13 14:07:55 -05:00
146 lines
6.1 KiB
ReStructuredText
146 lines
6.1 KiB
ReStructuredText
Enhancing FRIDAY with Self-Learning for Excel Task Automation
|
|
========================================================================
|
|
|
|
In this tutorial, we will explore how FRIDAY's self-learning feature enables it to autonomously learn and execute tasks involving Excel file manipulation, which were initially beyond its capability. We will specifically focus on a task from the SheetCopilot dataset and observe how FRIDAY evolves to complete it successfully using the `openpyxl` library.
|
|
|
|
Task Overview
|
|
----------------
|
|
|
|
You will undertake a specific task (task #9) from the SheetCopilot dataset,
|
|
which involves manipulating an Excel file.
|
|
The task is **"Copy the 'Product' column from 'Sheet1' to a new sheet named 'Sheet2', and then sort the 'Product' column in 'Sheet2' in ascending order."**
|
|
|
|
Initial Attempt
|
|
-----------------
|
|
|
|
1. **Running the Task**:
|
|
|
|
Execute the following command in your terminal to run task #9 from the SheetCopilot dataset:
|
|
|
|
.. code-block:: shell
|
|
|
|
python examples/SheetCopilot/run_sheet_task.py --sheet_task_id 9
|
|
|
|
The `run_sheet_task.py` script serves as the interface for FRIDAY to interact with tasks defined in the SheetCopilot dataset. Below is a brief explanation of the script's content:
|
|
|
|
- Module Imports and Configuration Setup:
|
|
|
|
.. code-block:: python
|
|
|
|
from oscopilot import FridayAgent
|
|
from oscopilot import FridayExecutor, FridayPlanner, FridayRetriever, ToolManager
|
|
from oscopilot.utils import setup_config, SheetTaskLoader
|
|
|
|
- Loading Tasks:
|
|
|
|
The script initializes the configuration and loads the task based on the provided task ID using SheetTaskLoader.
|
|
|
|
.. code-block:: python
|
|
|
|
args = setup_config()
|
|
sheet_task_loader = SheetTaskLoader("examples/SheetCopilot/sheet_task.jsonl")
|
|
|
|
- FRIDAY Agent Initialization:
|
|
|
|
An agent is initialized with components such as the Planner, Retriever, Executor, and Tool Manager, configured with the loaded arguments.
|
|
|
|
.. code-block:: python
|
|
|
|
agent = FridayAgent(FridayPlanner, FridayRetriever, FridayExecutor, ToolManager, config=args)
|
|
|
|
- Task Execution:
|
|
|
|
If a specific task ID is provided, the script fetches and runs that task. Otherwise, it loads and executes each task in the dataset sequentially.
|
|
|
|
.. code-block:: python
|
|
|
|
if args.sheet_task_id:
|
|
task = sheet_task_loader.get_data_by_task_id(args.sheet_task_id)
|
|
agent.run(task)
|
|
else:
|
|
task_lst = sheet_task_loader.load_sheet_task_dataset()
|
|
for task_id, task in enumerate(task_lst):
|
|
args.sheet_task_id = task_id
|
|
agent.run(task)
|
|
|
|
However, you'll notice that FRIDAY **is unable to** complete the task due to lacking specific tools for Excel manipulation.
|
|
|
|
|
|
Introducing Self-Learning
|
|
---------------------------
|
|
|
|
2. **Enabling FRIDAY to Learn**:
|
|
|
|
To overcome this limitation, we introduce FRIDAY to a self-learning module that allows it to explore and learn from the `openpyxl` library, thereby acquiring new tools for Excel file operations.
|
|
|
|
Run the self-learning command:
|
|
|
|
.. code-block:: shell
|
|
|
|
python course_learning.py --software_name Excel --package_name openpyxl --demo_file_path working_dir/Invoices.xlsx
|
|
|
|
This command directs FRIDAY to learn how to manipulate Excel files using the `openpyxl` library. Below is a brief overview of the `course_learning.py` script's functionality:
|
|
|
|
- Import Statements and Configuration Setup:
|
|
|
|
.. code-block:: python
|
|
|
|
from oscopilot import FridayAgent, FridayExecutor, FridayPlanner, FridayRetriever, SelfLearner, SelfLearning, ToolManager, TextExtractor
|
|
from oscopilot.utils import setup_config
|
|
|
|
- Initialization and Configuration Extraction:
|
|
|
|
The script begins by setting up the configuration and extracting parameters for the software name, package name, and a demo file path.
|
|
|
|
.. code-block:: python
|
|
|
|
args = setup_config()
|
|
software_name = args.software_name
|
|
package_name = args.package_name
|
|
demo_file_path = args.demo_file_path
|
|
|
|
- FRIDAY Agent and Self-Learning Module Initialization:
|
|
|
|
A FRIDAY agent is initialized with components such as the Planner, Retriever, Executor, and Tool Manager. The SelfLearning module is then initialized with the agent, allowing it to engage in self-learning activities.
|
|
|
|
.. code-block:: python
|
|
|
|
friday_agent = FridayAgent(FridayPlanner, FridayRetriever, FridayExecutor, ToolManager, config=args)
|
|
self_learning = SelfLearning(friday_agent, SelfLearner, ToolManager, args, TextExtractor)
|
|
|
|
- Self-Learning Process:
|
|
|
|
The SelfLearning module embarks on exploring the openpyxl library, utilizing the provided demo file as a learning resource.
|
|
|
|
.. code-block:: python
|
|
|
|
self_learning.self_learning(software_name, package_name, demo_file_path)
|
|
|
|
Through this exploratory process, FRIDAY can learn various tools such as `check_openpyxl_installed`, `read_excel_contents`, `filter_product_data`, and `export_filtered_data`, among others.
|
|
|
|
.. note::
|
|
|
|
The tools learned through self-learning have a degree of randomness.
|
|
|
|
|
|
Verifying the Learning Outcome
|
|
--------------------------------
|
|
|
|
3. **Re-running the Task**:
|
|
|
|
After the self-learning process, rerun the initial task to verify the effectiveness of the self-learning module:
|
|
|
|
.. code-block:: shell
|
|
|
|
python examples/SheetCopilot/run_sheet_task.py --sheet_task_id 9
|
|
|
|
This time, FRIDAY will successfully complete the task, demonstrating the acquired ability to manipulate Excel files through the learned tools.
|
|
|
|
|
|
Conclusion
|
|
--------------
|
|
|
|
This tutorial showcased the innovative self-learning feature of FRIDAY, which enables it to autonomously expand its toolset and adapt to tasks it was initially unable to perform.
|
|
By engaging in self-learning with the `openpyxl` library, FRIDAY demonstrated a significant improvement in handling Excel file operations, affirming the effectiveness and potential of self-learning in AI agents.
|
|
|
|
This process highlights FRIDAY's capability to evolve and adapt, making it a powerful tool for automating a wide range of tasks, including complex file manipulations. |