autogen_ext.code_executors.local#
- class LocalCommandLineCodeExecutor(timeout: int = 60, work_dir: Path | str | None = None, functions: Sequence[FunctionWithRequirements[Any, A] | Callable[[...]], Any] | FunctionWithRequirementsStr] = [], functions_module: str = 'functions', cleanup_temp_files: bool = True, virtual_env_context: SimpleNamespace | None = None)[Quelle]#
Bases:
CodeExecutor,Component[LocalCommandLineCodeExecutorConfig]Eine Code-Executor-Klasse, die Code über eine lokale Kommandozeilenumgebung ausführt.
Gefahr
Dies wird Code auf dem lokalen Rechner ausführen. Wenn es mit von LLM generiertem Code verwendet wird, ist Vorsicht geboten.
Jeder Codeblock wird als Datei gespeichert und in einem separaten Prozess im Arbeitsverzeichnis ausgeführt. Für jeden Codeblock wird eine eindeutige Datei im Arbeitsverzeichnis generiert und gespeichert. Die Codeblöcke werden in der Reihenfolge ihres Eingangs ausgeführt. Kommandozeilenbefehle werden mithilfe von regulären Ausdrücken gegen eine Liste gefährlicher Befehle abgeglichen, um die Ausführung von selbstdestruktiven Befehlen zu verhindern, die potenziell die Umgebung des Benutzers beeinträchtigen könnten. Derzeit werden nur Python und Shell-Skripte unterstützt. 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.
Hinweis
Unter Windows muss die Ereignisschleifenrichtlinie auf WindowsProactorEventLoopPolicy gesetzt werden, um Probleme mit Unterprozessen zu vermeiden.
import sys import asyncio if sys.platform == "win32": asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
- Parameter:
timeout (int) – Das Zeitlimit für die Ausführung eines einzelnen Codeblocks. Standard ist 60.
work_dir (str) – Das Arbeitsverzeichnis für die Codeausführung. Wenn None, wird ein Standardarbeitsverzeichnis verwendet. Das Standardarbeitsverzeichnis ist ein temporäres Verzeichnis.
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 zum Speichern der Funktionen erstellt wird. Standard ist „functions“.
cleanup_temp_files (bool, optional) – Ob temporäre Dateien nach der Ausführung automatisch bereinigt werden sollen. Standard ist True.
virtual_env_context (Optional[SimpleNamespace], optional) – Der Kontext der virtuellen Umgebung. Standard ist None.
Hinweis
Die Verwendung des aktuellen Verzeichnisses („.“) als Arbeitsverzeichnis ist veraltet. Bei Verwendung wird eine Veraltungswarnung ausgelöst.
Beispiel
Verwendung von LocalCommandLineCodeExecutor mit einer anderen virtuellen Umgebung als der, die zur Ausführung der AutoGen-Anwendung verwendet wird: Richten Sie eine virtuelle Umgebung mithilfe des venv-Moduls ein und übergeben Sie deren Kontext an den Initialisierer von LocalCommandLineCodeExecutor. Auf diese Weise wird der Executor Code innerhalb der neuen Umgebung ausführen.
import venv from pathlib import Path import asyncio from autogen_core import CancellationToken from autogen_core.code_executor import CodeBlock from autogen_ext.code_executors.local import LocalCommandLineCodeExecutor async def example(): work_dir = Path("coding") work_dir.mkdir(exist_ok=True) venv_dir = work_dir / ".venv" venv_builder = venv.EnvBuilder(with_pip=True) venv_builder.create(venv_dir) venv_context = venv_builder.ensure_directories(venv_dir) local_executor = LocalCommandLineCodeExecutor(work_dir=work_dir, virtual_env_context=venv_context) await local_executor.execute_code_blocks( code_blocks=[ CodeBlock(language="bash", code="pip install matplotlib"), ], cancellation_token=CancellationToken(), ) asyncio.run(example())
- component_config_schema#
alias von
LocalCommandLineCodeExecutorConfig
- component_provider_override: ClassVar[str | None] = 'autogen_ext.code_executors.local.LocalCommandLineCodeExecutor'#
Ü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 benutzerdefinierten Funktionen. Sie können von dem Modul `$module_name` unter ihren Funktionsnamen aufgerufen werden.\n\nWenn es beispielsweise eine Funktion namens `foo` gäbe, könnten Sie sie importieren, indem Sie `from $module_name import foo` schreiben.\n\n$functions'#
- format_functions_for_prompt(prompt_template: str = FUNCTION_PROMPT_TEMPLATE) str[Quelle]#
(Experimentell) Formatiert die Funktionen für eine Eingabeaufforderung.
Die Vorlage enthält zwei Variablen: - $module_name: Der Modulname. - $functions: Die Funktionen, formatiert als Stubs mit zwei Zeilenumbrüchen zwischen jeder Funktion.
- Parameter:
prompt_template (str) – Die Vorlage für die Eingabeaufforderung. Standard ist der Klassenstandard.
- Gibt zurück:
str – Die formatierte Eingabeaufforderung.
- property cleanup_temp_files: bool#
(Experimentell) Ob temporäre Dateien nach der Ausführung automatisch bereinigt werden sollen.
- 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.
cancellation_token (CancellationToken) – ein Token zum Abbrechen der Operation
- Gibt zurück:
CommandLineCodeResult – Das Ergebnis der Codeausführung.
- async start() None[Quelle]#
(Experimentell) Startet den Code-Executor.
Initialisiert den lokalen Code-Executor und sollte aufgerufen werden, bevor Codeblöcke ausgeführt werden. Er markiert den internen Zustand des Executors als gestartet. Wenn kein Arbeitsverzeichnis angegeben wird, erstellt die Methode ein temporäres Verzeichnis, das vom Executor verwendet werden kann.
- async stop() None[Quelle]#
(Experimentell) Stoppt den Code-Executor.
Stoppt den lokalen Code-Executor und führt die Bereinigung des temporären Arbeitsverzeichnisses durch (falls es erstellt wurde). Der interne Zustand des Executors wird als nicht mehr gestartet markiert.