From 39fa5b34c0e230d0fdc380ced6361623ded3da3d Mon Sep 17 00:00:00 2001 From: TianHengZhuang <39034691+TianHengZhuang@users.noreply.github.com> Date: Mon, 7 Sep 2026 11:06:38 +0800 Subject: [PATCH] docs: add module docstrings --- .../probe_data/modules/inspect_ai_tool.py | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/agentic_security/probe_data/modules/inspect_ai_tool.py b/agentic_security/probe_data/modules/inspect_ai_tool.py index d2058e7..78afea8 100644 --- a/agentic_security/probe_data/modules/inspect_ai_tool.py +++ b/agentic_security/probe_data/modules/inspect_ai_tool.py @@ -1,4 +1,4 @@ -import asyncio +import asyncio import importlib.util import os @@ -12,17 +12,34 @@ inspect_ai_task = ( class Module: + """:class:`Module` that runs Inspect AI evaluations against an LLM proxy. + + Launches the `Inspect AI `_ + evaluation framework via ``inspect eval``, targeting a local LLM proxy. + The module requires ``inspect_ai`` to be installed + (``pip install inspect_ai``). + + Configuration is passed via ``opts``: + + * ``port`` (int): LLM proxy base URL port. Defaults to ``8718``. + + Attributes: + tools_inbox: Async queue that receives evaluation results. + opts: Configuration dictionary. + """ + name = "Inspect AI" def __init__(self, prompt_groups: [], tools_inbox: asyncio.Queue, opts: dict = {}): self.tools_inbox = tools_inbox if not self.is_tool_installed(): logger.error( - "inspect_ai module is not installed. Please install it using 'pip install inspect_ai'" + "inspect_ai module is not installed. Please install it using '"'"'pip install inspect_ai'"'"'" ) self.opts = opts def is_tool_installed(self) -> bool: + """Return ``True`` if the ``inspect_ai`` package is importable.""" inspect_ai = importlib.util.find_spec("inspect_ai") return inspect_ai is not None @@ -38,11 +55,9 @@ class Module: logger.info(f"Started {command}") - # Read output as it becomes available async for line in process.stdout: logger.info(line.decode().strip()) - # Check for errors err = await process.stderr.read() if err: logger.error(err.decode().strip()) @@ -52,7 +67,6 @@ class Module: async def apply(self) -> []: port = self.opts.get("port", 8718) - # Command to be executed command = f"inspect eval {inspect_ai_task} --model openai/gpt-4 --model-base-url=http://0.0.0.0:{port}/proxy" logger.info(f"Executing command: {command}") @@ -66,4 +80,4 @@ class Module: yield message ready.set() logger.info(f"{self.name} tool finished.") - await proc + await proc