Benutzerdefinierte LLM-Modelle

Wir unterstützen und begrüßen die Integration von benutzerdefinierten LLM-Modellen in UFO. Wenn Sie ein benutzerdefiniertes LLM-Modell haben, das Sie mit UFO verwenden möchten, können Sie die folgenden Schritte ausführen, um das Modell in UFO zu konfigurieren.

Schritt 1

Erstellen Sie ein benutzerdefiniertes LLM-Modell und stellen Sie es in Ihrer lokalen Umgebung bereit.

Schritt 2

Erstellen Sie ein Python-Skript im Verzeichnis ufo/llm und implementieren Sie Ihre eigene LLM-Modellklasse, indem Sie die Klasse BaseService in der Datei ufo/llm/base.py erben. Wir lassen eine Klasse PlaceHolderService in der Datei ufo/llm/placeholder.py als Beispiel. Sie müssen die Methode chat_completion in Ihrer LLM-Modellklasse implementieren, um eine Liste von Nachrichten zu akzeptieren und eine Liste von Abschlüssen für jede Nachricht zurückzugeben.

def chat_completion(
    self,
    messages,
    n,
    temperature: Optional[float] = None,
    max_tokens: Optional[int] = None,
    top_p: Optional[float] = None,
    **kwargs: Any,
):
    """
    Generates completions for a given list of messages.
    Args:
        messages (List[str]): The list of messages to generate completions for.
        n (int): The number of completions to generate for each message.
        temperature (float, optional): Controls the randomness of the generated completions. Higher values (e.g., 0.8) make the completions more random, while lower values (e.g., 0.2) make the completions more focused and deterministic. If not provided, the default value from the model configuration will be used.
        max_tokens (int, optional): The maximum number of tokens in the generated completions. If not provided, the default value from the model configuration will be used.
        top_p (float, optional): Controls the diversity of the generated completions. Higher values (e.g., 0.8) make the completions more diverse, while lower values (e.g., 0.2) make the completions more focused. If not provided, the default value from the model configuration will be used.
        **kwargs: Additional keyword arguments to be passed to the underlying completion method.
    Returns:
        List[str], None:A list of generated completions for each message and the cost set to be None.
    Raises:
        Exception: If an error occurs while making the API request.
    """
    pass

Schritt 3

Nach der Implementierung der LLM-Modellklasse können Sie HOST_AGENT und APP_AGENT in der Datei config.yaml konfigurieren (benennen Sie die Datei config_template.yaml in config.yaml um), um das benutzerdefinierte LLM-Modell zu verwenden. Das folgende ist eine Beispielkonfiguration für das benutzerdefinierte LLM-Modell

VISUAL_MODE: True, # Whether to use visual mode to understand screenshots and take actions
API_TYPE: "custom_model" , # The API type, "openai" for the OpenAI API, "aoai" for the AOAI API, 'azure_ad' for the ad authority of the AOAI API.  
API_BASE: "YOUR_ENDPOINT", #  The custom LLM API address.
API_MODEL: "YOUR_MODEL",  # The custom LLM model name.

Schritt 4

Nachdem Sie HOST_AGENT und APP_AGENT mit dem benutzerdefinierten LLM-Modell konfiguriert haben, können Sie UFO starten, um mit dem benutzerdefinierten LLM-Modell für verschiedene Aufgaben unter Windows OS zu interagieren. Weitere Details zur Verwendung von UFO finden Sie im Schnellstartleitfaden.