AppAgent verstärken

UFO bietet vielseitige Mechanismen zur Verstärkung der Fähigkeiten des AppAgent durch RAG (Retrieval-Augmented Generation) und andere Techniken. Diese verbessern das Verständnis des AppAgent für die Aufgabe, erhöhen die Qualität der generierten Pläne und steigern die Effizienz der Interaktionen des AppAgent mit der Anwendung.

Wir unterstützen derzeit folgende Verstärkungsmethoden

Verstärkungsmethode Beschreibung
Lernen aus Hilfedokumenten Verstärken Sie den AppAgent, indem Sie Wissen aus Hilfedokumenten abrufen.
Lernen aus Bing-Suche Verstärken Sie den AppAgent, indem Sie Informationen auf Bing suchen, um aktuelles Wissen zu erhalten.
Aus eigener Erfahrung lernen Verstärken Sie den AppAgent, indem er aus seinen eigenen erfolgreichen Erfahrungen lernt.
Aus Benutzervorgaben lernen Verstärken Sie den AppAgent, indem er aus von Benutzern demonstrierten Aktionsabläufen lernt.

Wissensvermittlung

UFO stellt dem AppAgent das Wissen über die Methode context_provision zur Verfügung, die in der Klasse AppAgent definiert ist.

def context_provision(self, request: str = "") -> None:
    """
    Provision the context for the app agent.
    :param request: The Bing search query.
    """

    # Load the offline document indexer for the app agent if available.
    if configs["RAG_OFFLINE_DOCS"]:
        utils.print_with_color(
            "Loading offline help document indexer for {app}...".format(
                app=self._process_name
            ),
            "magenta",
        )
        self.build_offline_docs_retriever()

    # Load the online search indexer for the app agent if available.

    if configs["RAG_ONLINE_SEARCH"] and request:
        utils.print_with_color("Creating a Bing search indexer...", "magenta")
        self.build_online_search_retriever(
            request, configs["RAG_ONLINE_SEARCH_TOPK"]
        )

    # Load the experience indexer for the app agent if available.
    if configs["RAG_EXPERIENCE"]:
        utils.print_with_color("Creating an experience indexer...", "magenta")
        experience_path = configs["EXPERIENCE_SAVED_PATH"]
        db_path = os.path.join(experience_path, "experience_db")
        self.build_experience_retriever(db_path)

    # Load the demonstration indexer for the app agent if available.
    if configs["RAG_DEMONSTRATION"]:
        utils.print_with_color("Creating an demonstration indexer...", "magenta")
        demonstration_path = configs["DEMONSTRATION_SAVED_PATH"]
        db_path = os.path.join(demonstration_path, "demonstration_db")
        self.build_human_demonstration_retriever(db_path)

Die Methode context_provision lädt den Offline-Dokumenten-Indexer, den Online-Such-Indexer, den Erlebnis-Indexer und den Demonstrations-Indexer für den AppAgent basierend auf den Konfigurationseinstellungen in der Datei config_dev.yaml.

Referenz

UFO verwendet die Klasse Retriever, die sich in der Datei ufo/rag/retriever.py befindet, um Wissen aus verschiedenen Quellen abzurufen. Die Klasse Retriever bietet die folgenden Methoden zum Abrufen von Wissen an.

Basen: ABC

Klasse zum Abrufen von Dokumenten.

Erstellen Sie einen neuen Retriever.

Quellcode in rag/retriever.py
42
43
44
45
46
47
48
49
def __init__(self) -> None:
    """
    Create a new Retriever.
    """

    self.indexer = self.get_indexer()

    pass

get_indexer() abstractmethod

Holen Sie sich den Indexer.

Rückgabe
  • Der Indexer.

Quellcode in rag/retriever.py
51
52
53
54
55
56
57
@abstractmethod
def get_indexer(self):
    """
    Get the indexer.
    :return: The indexer.
    """
    pass

retrieve(query, top_k, filter=None)

Rufen Sie das Dokument anhand der gegebenen Abfrage ab. :filter: Der Filter, der auf die abgerufenen Dokumente angewendet werden soll.

Parameter
  • query (str) –

    Die Abfrage, aus der das Dokument abgerufen werden soll.

  • top_k (int) –

    Die Anzahl der abzurufenden Dokumente.

Rückgabe
  • Das Dokument aus der gegebenen Abfrage.

Quellcode in rag/retriever.py
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
def retrieve(self, query: str, top_k: int, filter=None):
    """
    Retrieve the document from the given query.
    :param query: The query to retrieve the document from.
    :param top_k: The number of documents to retrieve.
    :filter: The filter to apply to the retrieved documents.
    :return: The document from the given query.
    """
    if not self.indexer:
        return []

    results = self.indexer.similarity_search(query, top_k, filter=filter)

    if not results:
        return []
    else:
        return results