🔄 Ventile
Ventile
Ventile und BenutzerVentile werden verwendet, um Benutzern zu ermöglichen, dynamische Angaben wie einen API-Schlüssel oder eine Konfigurationsoption bereitzustellen. Diese erstellen ein ausfüllbares Feld oder einen Bool-Schalter im GUI-Menü für die jeweilige Funktion. Sie sind immer optional, aber DRINGEND empfohlen.
Daher können Ventile und BenutzerVentile Klassen entweder in einer Pipe
, Pipeline
, Filter
oder Tools
Klasse definiert werden.
Ventile können ausschließlich von Administratoren über die Tools- oder Funktionsmenüs konfiguriert werden. BenutzerVentile hingegen können direkt von jedem Benutzer aus einer Chat-Sitzung konfiguriert werden.
Kommentiertes Beispiel
from pydantic import BaseModel, Field
from typing import Literal
# Definieren und Ventile
class Filter:
# Beachten Sie die aktuelle Einrückung: Ventile und BenutzerVentile müssen als
# Attribute einer Tools-, Filter- oder Pipe-Klasse deklariert werden. Hier nehmen wir
# das Beispiel eines Filters.
class Ventile(BaseModel):
# Ventile und BenutzerVentile erben von pydantics BaseModel. Dies
# ermöglicht komplexe Anwendungsfälle wie Modellvalidierungen usw.
test_ventil: int = Field( # Beachten Sie den Typ-Hinweis: Dieser wird verwendet,
# um die Art des UI-Elements auszuwählen, das dem Benutzer angezeigt wird (Schaltflächen,
# Texte usw.).
default=4,
description="Ein Ventil, das einen numerischen Wert steuert"
# required=False, # Sie können Felder mit True erzwingen
)
# Um dem Benutzer die Wahl zwischen mehreren Zeichenketten zu geben, können Sie Literal von typing verwenden:
wahl_option: Literal["wahlA", "wahlB"] = Field(
default="wahlA",
description="Ein Beispiel für ein Ventil mit mehreren Optionen",
)
priorität: int = Field(
default=0,
description="Prioritätsstufe für die Filteroperationen. Niedrigere Werte werden zuerst verarbeitet"
)
# Das Prioritätsfeld ist optional, wird jedoch verwendet, wenn es vorhanden ist,
# um die Filter zu ordnen.
pass
# Beachten Sie, dass dieses pass bei der Analyse hilft und empfohlen wird.
# BenutzerVentile werden auf dieselbe Weise definiert.
class BenutzerVentile(BaseModel):
test_benutzer_ventil: bool = Field(
default=False, description="Ein BenutzerVentil, das einen Schalter für Wahr/Falsch (ein/aus) steuert"
)
pass
def __init__(self):
self.ventile = self.Ventile()
# Da sie vom Administrator eingestellt werden, sind sie direkt verfügbar
# bei der Codeausführung.
pass
# Die inlet-Methode wird nur für Filter verwendet, aber die __user__-Behandlung ist dieselbe
def inlet(self, body: dict, __user__: dict):
# Da BenutzerVentile pro Benutzer definiert werden, sind sie nur verfügbar
# im Gebrauch.
# Beachten Sie, dass obwohl __user__ ein dict ist, __user__["ventile"] ein
# BenutzerVentile-Objekt ist. Daher können Sie Werte wie folgt zugreifen:
test_benutzer_ventil = __user__["ventile"].test_benutzer_ventil
# Oder:
test_benutzer_ventil = dict(__user__["ventile"])["test_benutzer_ventil"]
# Aber dies wird den Standardwert anstelle des tatsächlichen Wertes zurückgeben:
# test_benutzer_ventil = __user__["ventile"]["test_benutzer_ventil"] # Tun Sie das nicht!