autogen_ext.code_executors.docker_jupyter#
- class DockerJupyterCodeExecutor(jupyter_server: JupyterConnectable | JupyterConnectionInfo, kernel_name: str = 'python3', timeout: int = 60, output_dir: Path | None = None)[Quelle]#
Bases:
CodeExecutor,Component[DockerJupyterCodeExecutorConfig](Experimentell) Eine Code-Executor-Klasse, die Code zustandsbehaftet über einen dieser Klasse bereitgestellten Jupyter-Server ausführt.
Jede Ausführung ist zustandsbehaftet und kann auf Variablen zugreifen, die aus früheren Ausführungen in derselben Sitzung erstellt wurden.
Um dies zu verwenden, müssen Sie die folgenden Abhängigkeiten installieren
pip install "autogen-ext[docker-jupyter-executor]"
- Parameter:
jupyter_server (Union[JupyterConnectable, JupyterConnectionInfo]) – Der zu verwendende Jupyter-Server.
kernel_name (str) – Der zu verwendende Kernel-Name. Stellen Sie sicher, dass er installiert ist. Standardmäßig ist dies „python3“.
timeout (int) – Das Timeout für die Codeausführung, standardmäßig 60.
output_dir (str) – Das Verzeichnis zum Speichern von Ausgabedateien, standardmäßig None.
Beispiel für die direkte Verwendung
import asyncio from autogen_core import CancellationToken from autogen_core.code_executor import CodeBlock from autogen_ext.code_executors.docker_jupyter import DockerJupyterCodeExecutor, DockerJupyterServer async def main() -> None: async with DockerJupyterServer() as jupyter_server: async with DockerJupyterCodeExecutor(jupyter_server=jupyter_server) as executor: code_blocks = [CodeBlock(code="print('hello world!')", language="python")] code_result = await executor.execute_code_blocks(code_blocks, cancellation_token=CancellationToken()) print(code_result) asyncio.run(main())
Beispiel für die Verwendung mit Ihrem eigenen Jupyter-Image
import asyncio from autogen_core import CancellationToken from autogen_core.code_executor import CodeBlock from autogen_ext.code_executors.docker_jupyter import DockerJupyterCodeExecutor, DockerJupyterServer async def main() -> None: async with DockerJupyterServer(custom_image_name="your_custom_images_name", expose_port=8888) as jupyter_server: async with DockerJupyterCodeExecutor(jupyter_server=jupyter_server) as executor: code_blocks = [CodeBlock(code="print('hello world!')", language="python")] code_result = await executor.execute_code_blocks(code_blocks, cancellation_token=CancellationToken()) print(code_result) asyncio.run(main())
Beispiel für die Verwendung mit
PythonCodeExecutionToolimport asyncio from autogen_agentchat.agents import AssistantAgent from autogen_ext.code_executors.docker_jupyter import DockerJupyterCodeExecutor, DockerJupyterServer from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.tools.code_execution import PythonCodeExecutionTool async def main() -> None: async with DockerJupyterServer() as jupyter_server: async with DockerJupyterCodeExecutor(jupyter_server=jupyter_server) as executor: tool = PythonCodeExecutionTool(executor) model_client = OpenAIChatCompletionClient(model="gpt-4o") agent = AssistantAgent("assistant", model_client=model_client, tools=[tool]) result = await agent.run(task="What is the 10th Fibonacci number? Use Python to calculate it.") print(result) asyncio.run(main())
Beispiel für die Verwendung innerhalb eines
CodeExecutorAgentimport asyncio from autogen_agentchat.agents import CodeExecutorAgent from autogen_agentchat.messages import TextMessage from autogen_ext.code_executors.docker_jupyter import DockerJupyterCodeExecutor, DockerJupyterServer from autogen_core import CancellationToken async def main() -> None: async with DockerJupyterServer() as jupyter_server: async with DockerJupyterCodeExecutor(jupyter_server=jupyter_server) as executor: code_executor_agent = CodeExecutorAgent("code_executor", code_executor=executor) task = TextMessage( content='''Here is some code ```python print('Hello world') ``` ''', source="user", ) response = await code_executor_agent.on_messages([task], CancellationToken()) print(response.chat_message) asyncio.run(main())
- component_config_schema#
Alias von
DockerJupyterCodeExecutorConfig
- component_provider_override: ClassVar[str | None] = 'autogen_ext.code_executors.docker_jupyter.DockerJupyterCodeExecutor'#
Überschreibe den Anbieter-String für die Komponente. Dies sollte verwendet werden, um zu verhindern, dass interne Modulnamen Teil des Modulnamens werden.
- async execute_code_blocks(code_blocks: List[CodeBlock], cancellation_token: CancellationToken) DockerJupyterCodeResult[Quelle]#
(Experimentell) Führt eine Liste von Codeblöcken aus und gibt das Ergebnis zurück.
Diese Methode führt eine Liste von Codeblöcken als Zellen im Jupyter-Kernel aus. Siehe: https://jupyter-client.readthedocs.io/en/stable/messaging.html für das Nachrichtenprotokoll.
- Parameter:
code_blocks (List[CodeBlock]) – Eine Liste von auszuführenden Codeblöcken.
- Gibt zurück:
DockerJupyterCodeResult – Das Ergebnis der Codeausführung.
- class DockerJupyterServer(*, custom_image_name: str | None = None, container_name: str | None = None, auto_remove: bool = True, stop_container: bool = True, docker_env: Dict[str, str] | None = None, expose_port: int = 8888, token: str | GenerateToken | None = None, work_dir: Path | str = '/workspace', bind_dir: Path | str | None = None)[Quelle]#
Bases:
JupyterConnectable- DEFAULT_DOCKERFILE = 'FROM quay.io/jupyter/docker-stacks-foundation\n\n SHELL ["/bin/bash", "-o", "pipefail", "-c"]\n\n USER ${NB_UID}\n RUN mamba install --yes jupyter_kernel_gateway ipykernel && mamba clean --all -f -y && fix-permissions "${CONDA_DIR}" && fix-permissions "/home/${NB_USER}"\n\n ENV TOKEN="UNSET"\n CMD python -m jupyter kernelgateway --KernelGatewayApp.ip=0.0.0.0 --KernelGatewayApp.port=8888 --KernelGatewayApp.auth_token="${TOKEN}" --JupyterApp.answer_yes=true --JupyterWebsocketPersonality.list_kernels=true\n\n EXPOSE 8888\n\n WORKDIR "${HOME}"\n '#
- property connection_info: JupyterConnectionInfo#
Gibt die Verbindungsinformationen für diesen Connectable zurück.
- async get_client() JupyterClient[Quelle]#
- class JupyterClient(connection_info: JupyterConnectionInfo)[Quelle]#
Basiert auf:
object- async start_kernel(kernel_spec_name: str) str[Quelle]#
Startet asynchron einen neuen Kernel.
- Parameter:
kernel_spec_name (str) – Name der zu startenden Kernel-Spezifikation
- Gibt zurück:
str – ID des gestarteten Kernels
- async get_kernel_client(kernel_id: str) JupyterKernelClient[Quelle]#