Home/Evaluation & Observability/Open-Prompt-Injection
Open-Prompt-Injection logo

Open-Prompt-Injection

liu00222/Open-Prompt-Injection

Benchmark and toolkit for prompt injection attacks and defenses in LLMs

GraphCanon updated 2w · GitHub synced 2w

470 stars74 forksLast push 10mo Python MIT

Decision brief

Open-Prompt-Injection is a Python-based toolkit for benchmarking prompt injection attacks on LLMs, offering customization through config files and support for various LLM APIs.

Good fit when

  • You prioritize security testing specifically for prompt injection vulnerabilities in your LLM applications.
  • Your project involves evaluating or extending defense mechanisms against prompt injection.

Avoid when

  • You require broader, more generalized security features not centered on prompt injection attacks.
  • Your project does not involve working with Google PaLM2 or other specific models like Meta's Llama and OpenAI's GPT.

Observed Jul 17, 2026 · Source: enrich:decision_facts

Verify the decision

Maintenance and security

Full trust report
Maintenance
Slowing (279d since push)
As of 2w
Provenance
Not a fork · Personal account
As of 2w
Security (OSV)
No lockfile
As of 1mo

Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.

Install

pip install Open-Prompt-Injection
PyPI

Similar tools

Same-category neighbours. No typed graph edges are catalogued for this tool yet.

Evidence and technical details

Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.

Overview

Open-Prompt-Injection offers an open-source suite for implementing, evaluating, and extending prompt injection attacks, defense mechanisms, and integrating them into applications and agents.

Capability facts

Languages
python

Source: github.language · Aug 5, 2026

Categories

Compatibility

Sourced claims from the README excerpt - not unsourced marketing copy.

Python runtimePython

Source: README excerpt (regex_v1, Aug 5, 2026)

## Required Python packages
Source link

Tags

README

Open-Prompt-Injection

Introduction

This repository is an open-source toolkit for prompt injection attacks and defenses. It enables implementation, evaluation, and extension of attacks, defenses, and LLM-integrated applications and agents. For a deeper dive into prompt injection, see these slides, an extended version of a presentation given at the Safer with Google Summit 2025.

Required Python packages

Pre-requisite: conda

Install the environment using the following command:

conda env create -f environment.yml --name my_custom_env

Then activate the environment:

conda activate my_custom_env

Usage

A simple demo

Before you start, go to './configs/model_configs/palm2_config.json' and replace the API keys with your real keys. Please refer to Google's official site for how to obtain an API key for PaLM2. For Meta's Llama models and OpenAI's GPT models, please also refer to their websites for registration details.

The following code snippet creates a model and queries the model with the prompt "Write a poem about monkeys":

import OpenPromptInjection as PI
from OpenPromptInjection.utils import open_config

model_config_path = './configs/model_configs/palm2_config.json'
model_config = open_config(config_path=model_config_path)
model = PI.create_model(config=model_config)
model.print_model_info()

msg = "Write a poem about monkeys"
print(model.query(msg))

Combined attack

The following code snippet evaluates the ASV of the scenario where the target task is sentiment analysis (i.e., the target data is sst2), the injected task is spam detection (i.e., the injected data is spam detection), the model is PaLM2, and no defense is applied:

import OpenPromptInjection as PI
from OpenPromptInjection.utils import open_config

# Create the target task
target_task = PI.create_task(open_config(config_path='./configs/task_configs/sst2_config.json'), 100)

# Create the model
model_config = open_config(config_path='./configs/model_configs/palm2_config.json')
model = PI.create_model(config=model_config)

# Create the injected task
inject_task = PI.create_task(open_config(config_path='./configs/task_configs/sms_spam_config.json'), 100, for_injection=True)
attacker = PI.create_attacker('combine', inject_task)

# Create the LLM-integrated App
target_app = PI.create_app(target_task, model, defense='no')

# Queries the model with the attacked data prompt and save the responses
attack_responses = list()
for i, (data_prompt, ground_truth_label) in enumerate(target_app):
    data_prompt_after_attack = attacker.inject(data_prompt, i, target_task=target_task.task)
    response = target_app.query(data_prompt_after_attack, verbose=1, idx=i, total=len(target_app))
    attack_responses.append(response)

# Create an evaluator to calculate the ASV
evaluator = PI.create_evaluator(
    target_task_responses=None, 
    target_task=target_task,
    injected_task_responses=None, 
    injected_task=attacker.task,
    attack_responses=attack_responses
)

print(f"ASV = {evaluator.asv}")

To evaluate another defense (or attack strategy, target task, etc.), clients can change the config files and the path passed into the factory methods.

To run the experiments reported in the paper, please execute:

python3 run.py

after changing the configurations in the "run.py" file. This script will call "main.py" which is the main file for the experiments. Clients can also feel free to check how "main.py" uses the major classes, factory methods, and utils for their own use cases.

Prompt Injection Detection with DataSentinel

Here is an example of using DataSentinel as prompt injection detector. You may download the fine-tuned checkpoint from this link.

import OpenPromptInjec

For agents

This page has a .md twin and JSON over the API.

Was this helpful?

Anonymous feedback helps us improve pages and translations.