# Python library

Vigil can also be used within your own Python application as a library. This allows you to access the input and output scanners, canary token, and vector database functionality.

**The Vigil library must be installed via**

```
pip install -e .
```

**Then import the `Vigil` class and pass it your config file.**

## Initialize scanners

```python
from vigil.vigil import Vigil

app = Vigil.from_config('conf/openai.conf')
```

Pass your configuration file to `Vigil.from_config.` This exposes the following functions:

* `input_scanner.perform_scan(prompt)`
* `output_scanner.perform_scan(prompt, response)`
* `canary_tokens.add`
* `canary_tokens.check`
* `vectordb.add_texts`
* `vectordb.add_embeddings`
* `embedder.generate`

## Scan Prompts and Responses

<pre class="language-python"><code class="lang-python">app.input_scanner.perform_scan(
    input_prompt="prompt goes here"
)
<strong>
</strong>app.output_scanner.perform_scan(
    input_prompt="prompt goes here",
    input_resp="LLM response goes here"
)
</code></pre>

The scanners return a Python dictionary with the full results and any metadata.

## Canary Tokens

```python
updated_prompt = app.canary_tokens.add(
    prompt=application_prompt,          # prompt to add canary token to
    always=always if always else False, # add suffix to always include canary
    length=length if length else 16,    # canary token length
    header=header if header else '<-@!-- {canary} --@!->', # customize canary header
)

# canary_tokens.check() returns True if a canary is found
result = app.canary_tokens.check(prompt=llm_response)
```
