autogen_ext.code_executors.docker#

class DockerCommandLineCodeExecutor(image: str = 'python:3-slim', container_name: str | None = None, *, timeout: int = 60, work_dir: Path | str | None = None, bind_dir: Path | str | None = None, auto_remove: bool = True, stop_container: bool = True, device_requests: List[DeviceRequest] | None = None, functions: Sequence[FunctionWithRequirements[Any, A] | Callable[[...], Any] | FunctionWithRequirementsStr] = [], functions_module: str = 'functions', extra_volumes: Dict[str, Dict[str, str]] | None = None, extra_hosts: Dict[str, str] | None = None, init_command: str | None = None, delete_tmp_files: bool = False)[Quelle]#

Bases: CodeExecutor, Component[DockerCommandLineCodeExecutorConfig]

Führt Code über eine Befehlszeilenumgebung in einem Docker-Container aus.

Hinweis

Diese Klasse erfordert die docker-Erweiterung für das Paket autogen-ext.

pip install "autogen-ext[docker]"

Der Executor speichert zunächst jeden Codeblock in einer Datei im Arbeitsverzeichnis und führt dann die Code-Datei im Container aus. Der Executor führt die Codeblöcke in der Reihenfolge aus, in der sie empfangen werden. Derzeit unterstützt der Executor nur Python- und Shell-Skripte. Für Python-Code verwenden Sie die Sprache „python“ für den Codeblock. Für Shell-Skripte verwenden Sie die Sprache „bash“, „shell“, „sh“, „pwsh“, „powershell“ oder „ps1“ für den Codeblock.

Parameter:
  • image (_type_, optional) – Docker-Image, das für die Codeausführung verwendet werden soll. Standardmäßig „python:3-slim“.

  • container_name (Optional[str], optional) – Name des zu erstellenden Docker-Containers. Wenn None, wird ein Name automatisch generiert. Standardmäßig None.

  • timeout (int, optional) – Das Timeout für die Codeausführung. Standardmäßig 60.

  • work_dir (Union[Path, str], optional) – Das Arbeitsverzeichnis für die Codeausführung. Standardmäßig temporäres Verzeichnis.

  • bind_dir (Union[Path, str], optional) – Das Verzeichnis, das gebunden wird

  • spawn () – an den Container des Code-Executors. Nützlich für Fälle, in denen Sie

  • work_dir. () – den Container aus einem Container heraus.

  • auto_remove (bool, optional) – Wenn true, wird der Docker-Container automatisch entfernt, wenn er gestoppt wird. Standardmäßig True.

  • stop_container (bool, optional) – Wenn true, wird der Container automatisch gestoppt, wenn stop aufgerufen wird, wenn der Kontextmanager beendet wird oder wenn der Python-Prozess mit einem Fehler beendet wird. Standardmäßig True.

  • device_requests (Optional[List[DeviceRequest]], optional) – Eine Liste von DeviceRequest-Instanzen, die dem Container hinzugefügt werden sollen, um GPUs bereitzustellen (z. B. [docker.types.DeviceRequest(count=-1, capabilities=[[‘gpu’]])]). Standardmäßig None.

  • functions (List[Union[FunctionWithRequirements[Any, A], Callable[..., Any]]]) – Eine Liste von Funktionen, die dem Code-Executor zur Verfügung stehen. Standardmäßig eine leere Liste.

  • functions_module (str, optional) – Der Name des Moduls, das zur Speicherung der Funktionen erstellt wird. Standardmäßig „functions“.

  • extra_volumes (Optional[Dict[str, Dict[str, str]]], optional) – Ein Wörterbuch mit zusätzlichen Volumes (neben work_dir), die in den Container gemountet werden sollen; der Schlüssel ist der Quellpfad des Hosts und der Wert 'bind' ist der Pfad im Container. Siehe Standardmäßig None. Beispiel: extra_volumes = {‘/home/user1/’: {‘bind’: ‘/mnt/vol2’, ‘mode’: ‘rw’}, ‘/var/www’: {‘bind’: ‘/mnt/vol1’, ‘mode’: ‘ro’}}

  • extra_hosts (Optional[Dict[str, str]], optional) – Ein Wörterbuch mit Host-Zuordnungen, die dem Container hinzugefügt werden sollen. (Siehe Docker-Dokumentation zu extra_hosts) Standardmäßig None. Beispiel: extra_hosts = {„kubernetes.docker.internal“: „host-gateway“}

  • init_command (Optional[str], optional) – Ein Shell-Befehl, der vor jeder Ausführung von Shell-Operationen ausgeführt werden soll. Standardmäßig None. Beispiel: init_command=”kubectl config use-context docker-hub”

  • delete_tmp_files (bool, optional) – Wenn true, werden temporäre Dateien nach der Ausführung gelöscht. Standardmäßig False.

Hinweis

Die Verwendung des aktuellen Verzeichnisses („.“) als Arbeitsverzeichnis ist veraltet. Bei Verwendung wird eine Veraltungswarnung ausgelöst.

component_config_schema#

Alias von DockerCommandLineCodeExecutorConfig

component_provider_override: ClassVar[str | None] = 'autogen_ext.code_executors.docker.DockerCommandLineCodeExecutor'#

Überschreibe den Anbieter-String für die Komponente. Dies sollte verwendet werden, um zu verhindern, dass interne Modulnamen Teil des Modulnamens werden.

SUPPORTED_LANGUAGES: ClassVar[List[str]] = ['bash', 'shell', 'sh', 'pwsh', 'powershell', 'ps1', 'python']#
FUNCTION_PROMPT_TEMPLATE: ClassVar[str] = 'Sie haben Zugriff auf die folgenden vom Benutzer definierten Funktionen. Sie können aus dem Modul `$module_name` über ihre Funktionsnamen zugegriffen werden.\n\nWenn es zum Beispiel eine Funktion namens `foo` gäbe, könnten Sie sie importieren, indem Sie `from $module_name import foo` schreiben.\n\n$functions'#
property timeout: int#

(Experimentell) Das Timeout für die Codeausführung.

property work_dir: Path#
property bind_dir: Path#
async execute_code_blocks(code_blocks: List[CodeBlock], cancellation_token: CancellationToken) CommandLineCodeResult[Quelle]#

(Experimentell) Führt die Codeblöcke aus und gibt das Ergebnis zurück.

Parameter:

code_blocks (List[CodeBlock]) – Die auszuführenden Codeblöcke.

Gibt zurück:

CommandlineCodeResult – Das Ergebnis der Codeausführung.

async restart() None[Quelle]#

(Experimentell) Startet den Docker-Container-Code-Executor neu.

async stop() None[Quelle]#

(Experimentell) Stoppt den Code-Executor.

Stoppt den Docker-Container und bereinigt alle temporären Dateien (falls sie erstellt wurden) sowie das temporäre Verzeichnis. Die Methode wartet zunächst, bis alle Abbruchaufgaben abgeschlossen sind, bevor der Container gestoppt wird. Schließlich wird der Executor als nicht laufend markiert. Wenn der Container nicht läuft, tut die Methode nichts.

async start() None[Quelle]#

(Experimentell) Startet den Code-Executor.

Diese Methode setzt die Umgebungsvariablen, stellt eine Verbindung zu Docker her und startet den Code-Executor. Wenn kein Arbeitsverzeichnis für den Code-Executor angegeben wurde, wird ein temporäres Verzeichnis erstellt und als Arbeitsverzeichnis des Code-Executors festgelegt.