From 5f6dd227af6628f570242215db91995d1cb0bec2 Mon Sep 17 00:00:00 2001 From: Jonathan Adly Date: Mon, 21 Oct 2024 11:49:41 -0400 Subject: [PATCH] uv --- .gitignore | 2 +- README.md | 5 +++-- agentrun/__init__.py | 15 +++++++++++---- docs/assets/benchmarkv2.5.png | Bin 0 -> 107550 bytes docs/index.md | 5 +++-- docs/release_notes.md | 4 ++++ pyproject.toml | 2 +- tests/test_agentrun.py | 5 +++-- 8 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 docs/assets/benchmarkv2.5.png diff --git a/.gitignore b/.gitignore index 7c1d638..d960957 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.agent_run_venv/ +.venv/ __pycache__/ *.py[cod] *$py.class diff --git a/README.md b/README.md index eb42c2f..2cfccdb 100644 --- a/README.md +++ b/README.md @@ -324,9 +324,10 @@ print(result) ## Benchmarks -AgentRun Median execution time is <200ms without dependencies. Dependency installing is usually the bottleneck and depends on the size of package and if the package has many dependencies as well as caching. +AgentRun Median execution time is <200ms without dependencies and ~400ms with 1 "average" dependency like requests. Dependency installing is usually the bottleneck and depends on the size of package and if the package has many dependencies as well as caching. + +![benchmarks]() -![benchmarks]() ## Development diff --git a/agentrun/__init__.py b/agentrun/__init__.py index 9115d2e..b5e00fd 100644 --- a/agentrun/__init__.py +++ b/agentrun/__init__.py @@ -76,10 +76,17 @@ def __init__( and not self.validate_cached_dependencies() ): raise ValueError("Some cached dependencies are not in the whitelist.") + container = self.client.containers.get(self.container_name) + command = f"pip install uv" + exit_code, output = self.execute_command_in_container( + container, command, timeout=120 + ) + if exit_code != 0: + raise ValueError("Failed to install uv.") if self.cached_dependencies: self.install_cached_dependencies() - + class CommandTimeout(Exception): """Exception raised when a command execution times out.""" @@ -293,7 +300,7 @@ def install_dependencies(self, container: Container, dependencies: list) -> str: return f"Dependency: {dep} is not in the whitelist." # if we are doing caching, we need to check if the dependencies are already installed if self.cached_dependencies: - exec_log = container.exec_run(cmd="pip list", workdir="/code") + exec_log = container.exec_run(cmd="uv pip list", workdir="/code") exit_code, output = exec_log.exit_code, exec_log.output.decode("utf-8") installed_packages = output.splitlines() installed_packages = [ @@ -305,7 +312,7 @@ def install_dependencies(self, container: Container, dependencies: list) -> str: for dep in dependencies: if dep.lower() in installed_packages: continue - command = f"pip install --user {dep}" + command = f"uv pip install {dep} --system" exit_code, output = self.execute_command_in_container( container, command, timeout=120 ) @@ -326,7 +333,7 @@ def uninstall_dependencies(self, container: Container, dependencies: list) -> st # do not uninstall dependencies that are cached_dependencies if dep in self.cached_dependencies: continue - command = f"pip uninstall -y {dep}" + command = f"uv pip uninstall -y {dep}" exit_code, output = self.execute_command_in_container( container, command, timeout=120 ) diff --git a/docs/assets/benchmarkv2.5.png b/docs/assets/benchmarkv2.5.png new file mode 100644 index 0000000000000000000000000000000000000000..6725b633673c125e2659571f5c1c33b11e4aac45 GIT binary patch literal 107550 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

orHlDTih&Ue<=ZVo4V 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 DQuz7i literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index eb42c2f..2cfccdb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -324,9 +324,10 @@ print(result) ## Benchmarks -AgentRun Median execution time is <200ms without dependencies. Dependency installing is usually the bottleneck and depends on the size of package and if the package has many dependencies as well as caching. +AgentRun Median execution time is <200ms without dependencies and ~400ms with 1 "average" dependency like requests. Dependency installing is usually the bottleneck and depends on the size of package and if the package has many dependencies as well as caching. + +![benchmarks]() -![benchmarks]() ## Development diff --git a/docs/release_notes.md b/docs/release_notes.md index cded82f..384fb3d 100644 --- a/docs/release_notes.md +++ b/docs/release_notes.md @@ -1,3 +1,7 @@ +## V0.2.5(10-21-2024) +- Added uv as the dependency manager +- improved performance and execution time through uv + ## V0.2.3(04-20-2024) - Added llama-3 example - Cleaned up API dependencies diff --git a/pyproject.toml b/pyproject.toml index d4a08d0..5ba484e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "agentrun" -version = "0.2.4" +version = "0.2.5" description = "The easiest way to run AI or user generated python code safely in a docker container" readme = "README.md" requires-python = ">=3.10" diff --git a/tests/test_agentrun.py b/tests/test_agentrun.py index 7d49e61..86a268f 100644 --- a/tests/test_agentrun.py +++ b/tests/test_agentrun.py @@ -297,9 +297,10 @@ def test_dependency_benchmark(benchmark, docker_container): result = benchmark( execute_code_in_container_benchmark, runner=runner, - code="import numpy as np\nprint(np.array([1, 2, 3]))", + # use requests + code="import requests\nprint(requests.get('https://example.com').status_code)", ) - assert result == "[1 2 3]\n" + assert result == "200\n" def test_exception_benchmark(benchmark, docker_container):