The UFO project is organized into a well-defined directory structure to facilitate development, deployment, and documentation. Below is an overview of each directory and file, along with their purpose:
📦project
┣ 📂documents # Folder to store project documentation
┣ 📂learner # Folder to build the vector database for help documents
┣ 📂model_worker # Folder to store tools for deploying your own model
┣ 📂record_processor # Folder to parse human demonstrations from Windows Step Recorder and build the vector database
┣ 📂dataflow # Folder for the code of data collection pipeline for Large Action Model (LAM)
┣ 📂vetordb # Folder to store all data in the vector database for RAG (Retrieval-Augmented Generation)
┣ 📂logs # Folder to store logs, generated after the program starts
┗ 📂ufo # Directory containing main project code
┣ 📂module # Directory for the basic module of UFO, e.g., session and round
┣ 📂agents # Code implementation of agents in UFO
┣ 📂automator # Implementation of the skill set of agents to automate applications
┣ 📂experience # Parse and save the agent's self-experience
┣ 📂llm # Folder to store the LLM (Large Language Model) implementation
┣ 📂prompter # Prompt constructor for the agent
┣ 📂prompts # Prompt templates and files to construct the full prompt
┣ 📂rag # Implementation of RAG from different sources to enhance agents' abilities
┣ 📂trajectory # Implementation of loading and parsing trajectories of task completion
┣ 📂utils # Utility functions
┣ 📂config # Configuration files
┣ 📜config.yaml # User configuration file for LLM and other settings
┣ 📜config_dev.yaml # Configuration file for developers
â”— ...
┗ 📄ufo.py # Main entry point for the UFO client
Directory and File Descriptions
documents
- Purpose: Stores all the project documentation.
- Details: This may include design documents, user manuals, API documentation, and any other relevant project documentation.
learner
- Purpose: Used to build the vector database for help documents.
- Details: This directory contains scripts and tools to process help documents and create a searchable vector database, enhancing the agents' ability for task completion.
model_worker
- Purpose: Contains tools and scripts necessary for deploying custom models.
- Details: This includes model deployment configurations, and management tools for integrating custom models into the project.
dataflow
- Purpose: Contains the code for the data collection pipeline for the Large Action Model (LAM).
- Details: This directory includes scripts and tools for collecting and processing data to train the Large Action Model, improving the agents' performance and capabilities.
record_processor
- Purpose: Parses human demonstrations recorded using the Windows Step Recorder and builds the vector database.
- Details: This directory includes parsers, data processing scripts, and tools to convert human demonstrations into a format suitable for agent's retrieval.
vetordb
- Purpose: Stores all data within the vector database for Retrieval-Augmented Generation (RAG).
- Details: This directory is essential for maintaining the data that enhances the agents' ability to retrieve relevant information and generate more accurate responses.
logs
- Purpose: Stores log files generated by the application.
- Details: This directory helps in monitoring, debugging, and analyzing the application's performance and behavior. Logs are generated dynamically as the application runs.
ufo
- Purpose: The core directory containing the main project code.
-
Details: This directory is further subdivided into multiple subdirectories, each serving a specific purpose within the project.
module
- Purpose: Contains the basic modules of the UFO project, such as session management and rounds.
- Details: This includes foundational classes and functions that are used throughout the project.
agents
- Purpose: Houses the code implementations of various agents in the UFO project.
- Details: Agents are components that perform specific tasks within the system, and this directory contains their logic, components, and behavior.
automator
- Purpose: Implements the skill set of agents to automate applications.
- Details: This includes scripts and tools that enable agents to interact with and automate tasks in various applications, such as mouse and keyboard actions and API calls.
experience
- Purpose: Parses and saves the agent's self-experience.
- Details: This directory contains mechanisms for agents to learn from their actions and outcomes, improving their performance over time.
llm
- Purpose: Stores the implementation of the Large Language Model (LLM).
- Details: This includes the implementation of APIs for different language models, such as GPT, Genimi, QWEN, etc., that are used by the agents.
prompter
- Purpose: Constructs prompts for the agents.
- Details: This directory includes prompt construction logic and tools that help agents generate meaningful prompts for user interactions.
prompts
- Purpose: Contains prompt templates and files used to construct the full prompt.
- Details: This includes predefined prompt structures and content that are used to create meaningful interactions with the agents.
rag
- Purpose: Implements Retrieval-Augmented Generation (RAG) from different sources to enhance the agents' abilities.
- etails: This directory includes scripts and tools for integrating various data sources into the RAG framework, improving the accuracy and relevance of the agents' outputs.
trajectory
- Purpose: Implements loading and parsing of task completion trajectories.
- Details: This directory includes tools and scripts to load and parse task completion trajectories, enabling agents to learn from past experiences or for evaluation purposes.
utils
- Purpose: Contains utility functions.
- Details: This directory includes helper functions, common utilities, and other reusable code snippets that support the project's operations.
config
- Purpose: Stores configuration files.
- Details: This directory includes different configuration files for various environments and purposes.
- config.yaml: User configuration file for LLM and other settings. You need to rename
config.yaml.template
toconfig.yaml
and edit the configuration settings as needed. - config_dev.yaml: Developer-specific configuration file with settings tailored for development purposes.
ufo.py
- Purpose: Main entry point for the UFO client.
- Details: This script initializes and starts the UFO application.