Metadata-Version: 2.4
Name: raginject
Version: 0.1.0
Summary: Evaluation harness for indirect prompt injection and retrieval poisoning resistance in RAG pipelines
Author: Junichi Nagasawa
License: Apache-2.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security
Classifier: Intended Audience :: Developers
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pyyaml>=6.0
Requires-Dist: pydantic>=2.0
Requires-Dist: httpx>=0.27
Requires-Dist: click>=8.0
Provides-Extra: llm-judge
Requires-Dist: openai>=1.0; extra == "llm-judge"
Requires-Dist: anthropic>=0.30; extra == "llm-judge"
Dynamic: license-file

# raginject

[![CI](https://github.com/jnagasawa/RAGinject/actions/workflows/ci.yml/badge.svg)](https://github.com/jnagasawa/RAGinject/actions/workflows/ci.yml)

An open-source evaluation harness for indirect prompt injection and retrieval
poisoning resistance in RAG (Retrieval-Augmented Generation) pipelines.

Test your RAG app's security like you write pytest tests — locally, and as a
CI gate.


## Install

```bash
pip install raginject
```

## Quickstart

```python
from raginject import FunctionTarget, Runner


def my_rag(question: str) -> dict:
    # your existing RAG logic
    return {"answer": "...", "sources": ["doc1.txt"]}


target = FunctionTarget(my_rag)
runner = Runner(target=target)
runner.load_patterns()
result = runner.run()

print(result.score)  # e.g. 0.85 (85% of attacks blocked)
print(result.summary)
```

Or against an HTTP endpoint:

```python
from raginject import HTTPTarget, Runner

target = HTTPTarget(url="http://localhost:8000/query")
runner = Runner(target=target)
runner.load_patterns()
result = runner.run()
```

CLI:

```bash
raginject run --target-url http://localhost:8000/query --min-score 0.8
```

## Scope

Only run raginject against a RAG system you own, or one you have explicit
permission to test. It sends adversarial inputs designed to probe for
prompt-injection and data-exfiltration weaknesses.

## License

Apache-2.0
