Das UFO-Projekt ist in eine klar definierte Verzeichnisstruktur unterteilt, um Entwicklung, Bereitstellung und Dokumentation zu erleichtern. Nachfolgend finden Sie eine Übersicht über jedes Verzeichnis und jede Datei sowie deren Zweck

📦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

Verzeichnis- und Dateibeschreibungen

documents

  • Zweck: Speichert die gesamte Projektdokumentation.
  • Details: Dies kann Design-Dokumente, Benutzerhandbücher, API-Dokumentation und jede andere relevante Projektdokumentation umfassen.

learner

  • Zweck: Dient zum Aufbau der Vektordatenbank für Hilfedokumente.
  • Details: Dieses Verzeichnis enthält Skripte und Tools zur Verarbeitung von Hilfedokumenten und zur Erstellung einer durchsuchbaren Vektordatenbank, wodurch die Fähigkeit der Agenten zur Aufgabenerfüllung verbessert wird.

model_worker

  • Zweck: Enthält Tools und Skripte, die für die Bereitstellung benutzerdefinierter Modelle erforderlich sind.
  • Details: Dies umfasst Konfigurationen für die Modellbereitstellung und Verwaltungswerkzeuge zur Integration benutzerdefinierter Modelle in das Projekt.

dataflow

  • Zweck: Enthält den Code für die Datenerfassungs-Pipeline für das Large Action Model (LAM).
  • Details: Dieses Verzeichnis enthält Skripte und Tools zur Sammlung und Verarbeitung von Daten zum Trainieren des Large Action Model, um die Leistung und Fähigkeiten der Agenten zu verbessern.

record_processor

  • Zweck: Parst menschliche Demonstrationen, die mit dem Windows Step Recorder aufgezeichnet wurden, und erstellt die Vektordatenbank.
  • Details: Dieses Verzeichnis enthält Parser, Datenverarbeitungsskripte und Tools zur Konvertierung menschlicher Demonstrationen in ein für die Abfrage durch Agenten geeignetes Format.

vetordb

  • Zweck: Speichert alle Daten innerhalb der Vektordatenbank für Retrieval-Augmented Generation (RAG).
  • Details: Dieses Verzeichnis ist unerlässlich für die Pflege der Daten, die die Fähigkeit der Agenten verbessern, relevante Informationen abzurufen und genauere Antworten zu generieren.

logs

  • Zweck: Speichert von der Anwendung generierte Protokolldateien.
  • Details: Dieses Verzeichnis hilft bei der Überwachung, Fehlersuche und Analyse der Anwendungsleistung und des Anwendungsverhaltens. Protokolle werden dynamisch generiert, während die Anwendung ausgeführt wird.

ufo

  • Zweck: Das Kernverzeichnis, das den Hauptprojektcode enthält.
  • Details: Dieses Verzeichnis ist weiter in mehrere Unterverzeichnisse unterteilt, die jeweils einem bestimmten Zweck im Projekt dienen.

    module

    • Zweck: Enthält die Basismodule des UFO-Projekts, wie Sitzungsverwaltung und Runden.
    • Details: Dies umfasst grundlegende Klassen und Funktionen, die im gesamten Projekt verwendet werden.

    agents

    • Zweck: Enthält die Code-Implementierungen verschiedener Agenten im UFO-Projekt.
    • Details: Agenten sind Komponenten, die spezifische Aufgaben innerhalb des Systems ausführen, und dieses Verzeichnis enthält ihre Logik, Komponenten und ihr Verhalten.

    automator

    • Zweck: Implementiert die Fähigkeiten von Agenten zur Automatisierung von Anwendungen.
    • Details: Dies umfasst Skripte und Tools, die es Agenten ermöglichen, mit verschiedenen Anwendungen zu interagieren und Aufgaben zu automatisieren, wie z. B. Maus- und Tastaturaktionen sowie API-Aufrufe.

    experience

    • Zweck: Parst und speichert die Selbst-Erfahrungen des Agenten.
    • Details: Dieses Verzeichnis enthält Mechanismen für Agenten, aus ihren Aktionen und Ergebnissen zu lernen und ihre Leistung im Laufe der Zeit zu verbessern.

    llm

    • Zweck: Speichert die Implementierung des Large Language Model (LLM).
    • Details: Dies umfasst die Implementierung von APIs für verschiedene Sprachmodelle wie GPT, Genimi, QWEN usw., die von den Agenten verwendet werden.

    prompter

    • Zweck: Konstruiert Prompts für die Agenten.
    • Details: Dieses Verzeichnis enthält die Logik zur Prompt-Konstruktion und Tools, die Agenten helfen, sinnvolle Prompts für Benutzerinteraktionen zu generieren.

    prompts

    • Zweck: Enthält Prompt-Vorlagen und Dateien, die zum Konstruieren des vollständigen Prompts verwendet werden.
    • Details: Dies umfasst vordefinierte Prompt-Strukturen und Inhalte, die verwendet werden, um sinnvolle Interaktionen mit den Agenten zu erstellen.

    rag

    • Zweck: Implementiert Retrieval-Augmented Generation (RAG) aus verschiedenen Quellen, um die Fähigkeiten der Agenten zu verbessern.
    • etails: Dieses Verzeichnis enthält Skripte und Tools zur Integration verschiedener Datenquellen in das RAG-Framework, wodurch die Genauigkeit und Relevanz der Agentenausgaben verbessert wird.

    trajectory

    • Zweck: Implementiert das Laden und Parsen von Trajektorien zur Aufgabenerfüllung.
    • Details: Dieses Verzeichnis enthält Tools und Skripte zum Laden und Parsen von Trajektorien zur Aufgabenerfüllung, wodurch Agenten aus vergangenen Erfahrungen lernen können oder zu Bewertungszwecken.

    utils

    • Zweck: Enthält Hilfsfunktionen.
    • Details: Dieses Verzeichnis enthält Hilfsfunktionen, allgemeine Utilities und andere wiederverwendbare Code-Snippets, die die Projektoperationen unterstützen.

    config

    • Zweck: Speichert Konfigurationsdateien.
    • Details: Dieses Verzeichnis enthält verschiedene Konfigurationsdateien für verschiedene Umgebungen und Zwecke.
    • config.yaml: Benutzerkonfigurationsdatei für LLM und andere Einstellungen. Sie müssen config.yaml.template in config.yaml umbenennen und die Konfigurationseinstellungen nach Bedarf bearbeiten.
    • config_dev.yaml: Spezifische Konfigurationsdatei für Entwickler mit Einstellungen, die für Entwicklungszwecke zugeschnitten sind.

    ufo.py

    • Zweck: Haupteinstiegspunkt für den UFO-Client.
    • Details: Dieses Skript initialisiert und startet die UFO-Anwendung.