From 099e0ae517250b6bb2dc6214cba3eb1e2276e2e5 Mon Sep 17 00:00:00 2001 From: Richard Lundeen Date: Wed, 10 Dec 2025 12:50:23 -0800 Subject: [PATCH 1/5] Initializer doc fix --- doc/code/setup/pyrit_initializer.ipynb | 25 +++++++++++------- doc/code/setup/pyrit_initializer.py | 36 ++++++++++++++++---------- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/doc/code/setup/pyrit_initializer.ipynb b/doc/code/setup/pyrit_initializer.ipynb index 55b6d2c635..f1ef097712 100644 --- a/doc/code/setup/pyrit_initializer.ipynb +++ b/doc/code/setup/pyrit_initializer.ipynb @@ -31,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "2", "metadata": {}, "outputs": [], @@ -75,16 +75,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "4", "metadata": {}, "outputs": [], "source": [ - "from pyrit.setup import initialize_pyrit\n", + "from pyrit.setup import initialize_pyrit_async\n", "from pyrit.setup.initializers import SimpleInitializer\n", "\n", "# Using built-in initializer\n", - "initialize_pyrit(\n", + "await initialize_pyrit_async(\n", " memory_db_type=\"InMemory\",\n", " initializers=[SimpleInitializer()]\n", ")" @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "6", "metadata": {}, "outputs": [ @@ -117,7 +117,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Created: C:\\Users\\rlundeen\\AppData\\Local\\Temp\\tmpgs282kvw\\custom_init.py\n" + "Created: C:\\Users\\rlundeen\\AppData\\Local\\Temp\\tmprrbf1ats\\custom_init.py\n" ] } ], @@ -126,14 +126,14 @@ "import shutil\n", "import tempfile\n", "\n", - "from pyrit.setup import initialize_pyrit\n", + "from pyrit.setup import initialize_pyrit_async\n", "\n", "temp_dir = tempfile.mkdtemp()\n", "script_path = os.path.join(temp_dir, \"custom_init.py\")\n", "\n", "# This is the simple custom initializer from the \"Creating an Initializer\" section of this notebook\n", "script_content = '''\n", - "from pyrit.setup.initializers.base import PyRITInitializer\n", + "from pyrit.setup.initializers.pyrit_initializer import PyRITInitializer\n", "from pyrit.common.apply_defaults import set_default_value\n", "from pyrit.prompt_target import OpenAIChatTarget\n", "\n", @@ -146,7 +146,7 @@ " def execution_order(self) -> int:\n", " return 2 # Lower numbers run first (default is 1)\n", " \n", - " def initialize(self) -> None:\n", + " async def initialize_async(self) -> None:\n", " set_default_value(class_type=OpenAIChatTarget, parameter_name=\"temperature\", value=0.9)\n", "\n", " @property\n", @@ -161,7 +161,7 @@ "print(f\"Created: {script_path}\")\n", "\n", "\n", - "initialize_pyrit(\n", + "await initialize_pyrit_async( # type: ignore\n", " memory_db_type=\"InMemory\",\n", " initialization_scripts=[temp_dir + \"/custom_init.py\"]\n", ")\n", @@ -191,6 +191,11 @@ } ], "metadata": { + "kernelspec": { + "display_name": "pyrit-dev", + "language": "python", + "name": "python3" + }, "language_info": { "codemirror_mode": { "name": "ipython", diff --git a/doc/code/setup/pyrit_initializer.py b/doc/code/setup/pyrit_initializer.py index 0c8c6fcc1b..70ccf66dff 100644 --- a/doc/code/setup/pyrit_initializer.py +++ b/doc/code/setup/pyrit_initializer.py @@ -6,6 +6,10 @@ # format_name: percent # format_version: '1.3' # jupytext_version: 1.17.3 +# kernelspec: +# display_name: pyrit-dev +# language: python +# name: python3 # --- # %% [markdown] @@ -17,7 +21,7 @@ # # ## Execution Order # -# When `initialize_pyrit_async` is called: +# When `initialize_pyrit` is called: # 1. Environment files are loaded (`.env`, `.env.local`) # 2. Memory database is configured # 3. All initializers are sorted by `execution_order` and executed @@ -30,18 +34,18 @@ # %% from pyrit.common.apply_defaults import set_default_value from pyrit.prompt_target import OpenAIChatTarget -from pyrit.setup.initializers import PyRITInitializer +from pyrit.setup.initializers.pyrit_initializer import PyRITInitializer class CustomInitializer(PyRITInitializer): @property def name(self) -> str: return "Custom Configuration" - + @property def execution_order(self) -> int: return 2 # Lower numbers run first (default is 1) - + def initialize(self) -> None: set_default_value(class_type=OpenAIChatTarget, parameter_name="temperature", value=0.9) @@ -65,7 +69,10 @@ def description(self) -> str: from pyrit.setup.initializers import SimpleInitializer # Using built-in initializer -await initialize_pyrit_async(memory_db_type="InMemory", initializers=[SimpleInitializer()]) # type: ignore +await initialize_pyrit_async( + memory_db_type="InMemory", + initializers=[SimpleInitializer()] +) # %% [markdown] # ## External Scripts @@ -90,8 +97,8 @@ def description(self) -> str: script_path = os.path.join(temp_dir, "custom_init.py") # This is the simple custom initializer from the "Creating an Initializer" section of this notebook -script_content = """ -from pyrit.setup.initializers import PyRITInitializer +script_content = ''' +from pyrit.setup.initializers.pyrit_initializer import PyRITInitializer from pyrit.common.apply_defaults import set_default_value from pyrit.prompt_target import OpenAIChatTarget @@ -99,27 +106,30 @@ class CustomInitializer(PyRITInitializer): @property def name(self) -> str: return "Custom Configuration" - + @property def execution_order(self) -> int: return 2 # Lower numbers run first (default is 1) - - def initialize(self) -> None: + + async def initialize_async(self) -> None: set_default_value(class_type=OpenAIChatTarget, parameter_name="temperature", value=0.9) @property def description(self) -> str: return "Sets custom temperature for OpenAI targets" -""" +''' with open(script_path, "w") as f: f.write(script_content) - + print(f"Created: {script_path}") -await initialize_pyrit_async(memory_db_type="InMemory", initialization_scripts=[temp_dir + "/custom_init.py"]) # type: ignore +await initialize_pyrit_async( # type: ignore + memory_db_type="InMemory", + initialization_scripts=[temp_dir + "/custom_init.py"] +) if os.path.exists(temp_dir): From a66ae7e444324f3ba54454c3c44d3e3e3538b826 Mon Sep 17 00:00:00 2001 From: Richard Lundeen Date: Wed, 10 Dec 2025 12:54:39 -0800 Subject: [PATCH 2/5] pre-commit --- doc/code/scoring/prompt_shield_scorer.ipynb | 2 +- doc/code/setup/pyrit_initializer.ipynb | 33 +++++++++++------- doc/code/setup/pyrit_initializer.py | 35 +++++++++----------- doc/code/targets/1_openai_chat_target.ipynb | 2 +- doc/code/targets/5_multi_modal_targets.ipynb | 2 +- 5 files changed, 39 insertions(+), 35 deletions(-) diff --git a/doc/code/scoring/prompt_shield_scorer.ipynb b/doc/code/scoring/prompt_shield_scorer.ipynb index a745d6ed5e..34dd34d5db 100644 --- a/doc/code/scoring/prompt_shield_scorer.ipynb +++ b/doc/code/scoring/prompt_shield_scorer.ipynb @@ -148,7 +148,7 @@ "\n", "for score in scores:\n", " prompt_text = memory.get_message_pieces(prompt_ids=[str(score.message_piece_id)])[0].original_value\n", - " print(f\"{score} : {prompt_text}\") # We can see that the attack was detected\n" + " print(f\"{score} : {prompt_text}\") # We can see that the attack was detected" ] } ], diff --git a/doc/code/setup/pyrit_initializer.ipynb b/doc/code/setup/pyrit_initializer.ipynb index f1ef097712..f5c0e56a82 100644 --- a/doc/code/setup/pyrit_initializer.ipynb +++ b/doc/code/setup/pyrit_initializer.ipynb @@ -31,10 +31,21 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "2", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "<__main__.CustomInitializer at 0x230d9e527b0>" + ] + }, + "execution_count": null, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from pyrit.common.apply_defaults import set_default_value\n", "from pyrit.prompt_target import OpenAIChatTarget\n", @@ -50,12 +61,15 @@ " def execution_order(self) -> int:\n", " return 2 # Lower numbers run first (default is 1)\n", " \n", - " def initialize(self) -> None:\n", + " async def initialize_async(self) -> None:\n", " set_default_value(class_type=OpenAIChatTarget, parameter_name=\"temperature\", value=0.9)\n", "\n", " @property\n", " def description(self) -> str:\n", - " return \"Sets custom temperature for OpenAI targets\"" + " return \"Sets custom temperature for OpenAI targets\"\n", + " \n", + "\n", + "CustomInitializer()" ] }, { @@ -75,7 +89,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "4", "metadata": {}, "outputs": [], @@ -109,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "6", "metadata": {}, "outputs": [ @@ -117,7 +131,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Created: C:\\Users\\rlundeen\\AppData\\Local\\Temp\\tmprrbf1ats\\custom_init.py\n" + "Created: C:\\Users\\rlundeen\\AppData\\Local\\Temp\\tmpa2k36reo\\custom_init.py\n" ] } ], @@ -191,11 +205,6 @@ } ], "metadata": { - "kernelspec": { - "display_name": "pyrit-dev", - "language": "python", - "name": "python3" - }, "language_info": { "codemirror_mode": { "name": "ipython", diff --git a/doc/code/setup/pyrit_initializer.py b/doc/code/setup/pyrit_initializer.py index 70ccf66dff..552bc88432 100644 --- a/doc/code/setup/pyrit_initializer.py +++ b/doc/code/setup/pyrit_initializer.py @@ -6,10 +6,6 @@ # format_name: percent # format_version: '1.3' # jupytext_version: 1.17.3 -# kernelspec: -# display_name: pyrit-dev -# language: python -# name: python3 # --- # %% [markdown] @@ -31,9 +27,10 @@ # %% [markdown] # The following is a minimal `PyRITInitializer` class. It doesn't need much! In this case, it sets the default value for temperature for all OpenAIChatTargets to .9. -# %% from pyrit.common.apply_defaults import set_default_value from pyrit.prompt_target import OpenAIChatTarget + +# %% from pyrit.setup.initializers.pyrit_initializer import PyRITInitializer @@ -41,12 +38,12 @@ class CustomInitializer(PyRITInitializer): @property def name(self) -> str: return "Custom Configuration" - + @property def execution_order(self) -> int: return 2 # Lower numbers run first (default is 1) - - def initialize(self) -> None: + + async def initialize_async(self) -> None: set_default_value(class_type=OpenAIChatTarget, parameter_name="temperature", value=0.9) @property @@ -54,6 +51,8 @@ def description(self) -> str: return "Sets custom temperature for OpenAI targets" +CustomInitializer() + # %% [markdown] # ## Built-in Initializers # @@ -69,10 +68,7 @@ def description(self) -> str: from pyrit.setup.initializers import SimpleInitializer # Using built-in initializer -await initialize_pyrit_async( - memory_db_type="InMemory", - initializers=[SimpleInitializer()] -) +await initialize_pyrit_async(memory_db_type="InMemory", initializers=[SimpleInitializer()]) # %% [markdown] # ## External Scripts @@ -97,7 +93,7 @@ def description(self) -> str: script_path = os.path.join(temp_dir, "custom_init.py") # This is the simple custom initializer from the "Creating an Initializer" section of this notebook -script_content = ''' +script_content = """ from pyrit.setup.initializers.pyrit_initializer import PyRITInitializer from pyrit.common.apply_defaults import set_default_value from pyrit.prompt_target import OpenAIChatTarget @@ -106,11 +102,11 @@ class CustomInitializer(PyRITInitializer): @property def name(self) -> str: return "Custom Configuration" - + @property def execution_order(self) -> int: return 2 # Lower numbers run first (default is 1) - + async def initialize_async(self) -> None: set_default_value(class_type=OpenAIChatTarget, parameter_name="temperature", value=0.9) @@ -118,17 +114,16 @@ async def initialize_async(self) -> None: def description(self) -> str: return "Sets custom temperature for OpenAI targets" -''' +""" with open(script_path, "w") as f: f.write(script_content) - + print(f"Created: {script_path}") -await initialize_pyrit_async( # type: ignore - memory_db_type="InMemory", - initialization_scripts=[temp_dir + "/custom_init.py"] +await initialize_pyrit_async( # type: ignore + memory_db_type="InMemory", initialization_scripts=[temp_dir + "/custom_init.py"] ) diff --git a/doc/code/targets/1_openai_chat_target.ipynb b/doc/code/targets/1_openai_chat_target.ipynb index 332207476c..60cda5488e 100644 --- a/doc/code/targets/1_openai_chat_target.ipynb +++ b/doc/code/targets/1_openai_chat_target.ipynb @@ -81,7 +81,7 @@ "attack = PromptSendingAttack(objective_target=target)\n", "\n", "result = await attack.execute_async(objective=jailbreak_prompt) # type: ignore\n", - "await ConsoleAttackResultPrinter().print_conversation_async(result=result) # type: ignore\n" + "await ConsoleAttackResultPrinter().print_conversation_async(result=result) # type: ignore" ] }, { diff --git a/doc/code/targets/5_multi_modal_targets.ipynb b/doc/code/targets/5_multi_modal_targets.ipynb index e5d97ce7f8..e7a5f0be49 100644 --- a/doc/code/targets/5_multi_modal_targets.ipynb +++ b/doc/code/targets/5_multi_modal_targets.ipynb @@ -150,7 +150,7 @@ ")\n", "\n", "result = await attack.execute_async(objective=objective) # type: ignore\n", - "await ConsoleAttackResultPrinter().print_result_async(result=result) # type: ignore\n" + "await ConsoleAttackResultPrinter().print_result_async(result=result) # type: ignore" ] }, { From 4f7f43a8824f96869151a1b5163cbb1ff3faf8b9 Mon Sep 17 00:00:00 2001 From: Richard Lundeen Date: Wed, 10 Dec 2025 14:44:06 -0800 Subject: [PATCH 3/5] reverting notebooks --- doc/code/scoring/prompt_shield_scorer.ipynb | 2 +- doc/code/targets/1_openai_chat_target.ipynb | 2 +- doc/code/targets/5_multi_modal_targets.ipynb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/code/scoring/prompt_shield_scorer.ipynb b/doc/code/scoring/prompt_shield_scorer.ipynb index 34dd34d5db..a745d6ed5e 100644 --- a/doc/code/scoring/prompt_shield_scorer.ipynb +++ b/doc/code/scoring/prompt_shield_scorer.ipynb @@ -148,7 +148,7 @@ "\n", "for score in scores:\n", " prompt_text = memory.get_message_pieces(prompt_ids=[str(score.message_piece_id)])[0].original_value\n", - " print(f\"{score} : {prompt_text}\") # We can see that the attack was detected" + " print(f\"{score} : {prompt_text}\") # We can see that the attack was detected\n" ] } ], diff --git a/doc/code/targets/1_openai_chat_target.ipynb b/doc/code/targets/1_openai_chat_target.ipynb index 60cda5488e..332207476c 100644 --- a/doc/code/targets/1_openai_chat_target.ipynb +++ b/doc/code/targets/1_openai_chat_target.ipynb @@ -81,7 +81,7 @@ "attack = PromptSendingAttack(objective_target=target)\n", "\n", "result = await attack.execute_async(objective=jailbreak_prompt) # type: ignore\n", - "await ConsoleAttackResultPrinter().print_conversation_async(result=result) # type: ignore" + "await ConsoleAttackResultPrinter().print_conversation_async(result=result) # type: ignore\n" ] }, { diff --git a/doc/code/targets/5_multi_modal_targets.ipynb b/doc/code/targets/5_multi_modal_targets.ipynb index e7a5f0be49..e5d97ce7f8 100644 --- a/doc/code/targets/5_multi_modal_targets.ipynb +++ b/doc/code/targets/5_multi_modal_targets.ipynb @@ -150,7 +150,7 @@ ")\n", "\n", "result = await attack.execute_async(objective=objective) # type: ignore\n", - "await ConsoleAttackResultPrinter().print_result_async(result=result) # type: ignore" + "await ConsoleAttackResultPrinter().print_result_async(result=result) # type: ignore\n" ] }, { From 5591e1b1220cd814298aca27b6f366b67ef28fd6 Mon Sep 17 00:00:00 2001 From: Richard Lundeen Date: Wed, 10 Dec 2025 15:13:12 -0800 Subject: [PATCH 4/5] pre-commit --- doc/code/scoring/prompt_shield_scorer.ipynb | 2 +- doc/code/setup/pyrit_initializer.ipynb | 7 ++++++- doc/code/setup/pyrit_initializer.py | 2 +- doc/code/targets/1_openai_chat_target.ipynb | 2 +- doc/code/targets/5_multi_modal_targets.ipynb | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/code/scoring/prompt_shield_scorer.ipynb b/doc/code/scoring/prompt_shield_scorer.ipynb index a745d6ed5e..34dd34d5db 100644 --- a/doc/code/scoring/prompt_shield_scorer.ipynb +++ b/doc/code/scoring/prompt_shield_scorer.ipynb @@ -148,7 +148,7 @@ "\n", "for score in scores:\n", " prompt_text = memory.get_message_pieces(prompt_ids=[str(score.message_piece_id)])[0].original_value\n", - " print(f\"{score} : {prompt_text}\") # We can see that the attack was detected\n" + " print(f\"{score} : {prompt_text}\") # We can see that the attack was detected" ] } ], diff --git a/doc/code/setup/pyrit_initializer.ipynb b/doc/code/setup/pyrit_initializer.ipynb index f5c0e56a82..18d161b3f8 100644 --- a/doc/code/setup/pyrit_initializer.ipynb +++ b/doc/code/setup/pyrit_initializer.ipynb @@ -98,7 +98,7 @@ "from pyrit.setup.initializers import SimpleInitializer\n", "\n", "# Using built-in initializer\n", - "await initialize_pyrit_async(\n", + "await initialize_pyrit_async( # type: ignore\n", " memory_db_type=\"InMemory\",\n", " initializers=[SimpleInitializer()]\n", ")" @@ -205,6 +205,11 @@ } ], "metadata": { + "kernelspec": { + "display_name": "pyrit-dev", + "language": "python", + "name": "python3" + }, "language_info": { "codemirror_mode": { "name": "ipython", diff --git a/doc/code/setup/pyrit_initializer.py b/doc/code/setup/pyrit_initializer.py index 552bc88432..2a3ef73354 100644 --- a/doc/code/setup/pyrit_initializer.py +++ b/doc/code/setup/pyrit_initializer.py @@ -68,7 +68,7 @@ def description(self) -> str: from pyrit.setup.initializers import SimpleInitializer # Using built-in initializer -await initialize_pyrit_async(memory_db_type="InMemory", initializers=[SimpleInitializer()]) +await initialize_pyrit_async(memory_db_type="InMemory", initializers=[SimpleInitializer()]) # type: ignore # %% [markdown] # ## External Scripts diff --git a/doc/code/targets/1_openai_chat_target.ipynb b/doc/code/targets/1_openai_chat_target.ipynb index 332207476c..60cda5488e 100644 --- a/doc/code/targets/1_openai_chat_target.ipynb +++ b/doc/code/targets/1_openai_chat_target.ipynb @@ -81,7 +81,7 @@ "attack = PromptSendingAttack(objective_target=target)\n", "\n", "result = await attack.execute_async(objective=jailbreak_prompt) # type: ignore\n", - "await ConsoleAttackResultPrinter().print_conversation_async(result=result) # type: ignore\n" + "await ConsoleAttackResultPrinter().print_conversation_async(result=result) # type: ignore" ] }, { diff --git a/doc/code/targets/5_multi_modal_targets.ipynb b/doc/code/targets/5_multi_modal_targets.ipynb index e5d97ce7f8..e7a5f0be49 100644 --- a/doc/code/targets/5_multi_modal_targets.ipynb +++ b/doc/code/targets/5_multi_modal_targets.ipynb @@ -150,7 +150,7 @@ ")\n", "\n", "result = await attack.execute_async(objective=objective) # type: ignore\n", - "await ConsoleAttackResultPrinter().print_result_async(result=result) # type: ignore\n" + "await ConsoleAttackResultPrinter().print_result_async(result=result) # type: ignore" ] }, { From ce1f41a4f5702fe95e2745c6b041f72277e89f17 Mon Sep 17 00:00:00 2001 From: Richard Lundeen Date: Wed, 10 Dec 2025 15:35:14 -0800 Subject: [PATCH 5/5] pre-commit --- doc/code/setup/pyrit_initializer.ipynb | 5 ----- doc/code/setup/pyrit_initializer.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/doc/code/setup/pyrit_initializer.ipynb b/doc/code/setup/pyrit_initializer.ipynb index 18d161b3f8..e803c90817 100644 --- a/doc/code/setup/pyrit_initializer.ipynb +++ b/doc/code/setup/pyrit_initializer.ipynb @@ -205,11 +205,6 @@ } ], "metadata": { - "kernelspec": { - "display_name": "pyrit-dev", - "language": "python", - "name": "python3" - }, "language_info": { "codemirror_mode": { "name": "ipython", diff --git a/doc/code/setup/pyrit_initializer.py b/doc/code/setup/pyrit_initializer.py index 2a3ef73354..95bb086eb7 100644 --- a/doc/code/setup/pyrit_initializer.py +++ b/doc/code/setup/pyrit_initializer.py @@ -68,7 +68,7 @@ def description(self) -> str: from pyrit.setup.initializers import SimpleInitializer # Using built-in initializer -await initialize_pyrit_async(memory_db_type="InMemory", initializers=[SimpleInitializer()]) # type: ignore +await initialize_pyrit_async(memory_db_type="InMemory", initializers=[SimpleInitializer()]) # type: ignore # %% [markdown] # ## External Scripts