Running evals as real-time guardrails

Running evals as real-time guardrails

athina.guard() is a simple function that allows you to run evals as guardrails around your AI application.

It's a simple function that takes in a suite (list) of evals to run, and an input text.

guard will run all the evals in parallel on the given input. If any eval fails, it will raise an AthinaGuardException which you can catch and handle in your application.

Guarding User Queries

Here's a simple example of using guard to detect Prompt Injection attacks in a user query:

import athina
import os
 
def safeguard_query(query: str):
 
    try:
        # GUARD YOUR USER QUERY
        athina.guard(
            suite=[
                athina.evals.PromptInjection()
            ],
            text=query,
        )
    except athina.AthinaGuardException as e:
        print("ERROR: Detected a prompt injection attack. Using fallback message.")
        # YOUR FALLBACK STRATEGY
 

In this example, we're using PromptInjection eval to detect prompt injection attacks in the user query.

If the eval fails, we catch the AthinaGuardException and handle it by using a fallback message.

Guarding LLM Responses

You can also use athina.guard() to guard LLM responses. Here's an example:

def guard_response(response: str) -> str:
    # If evals pass, return the original response
    final_response = response
 
    # Guard your response
    try:
        # Eval suite to guard the response
        competitor_names = ["intercom", "drift"]
        eval_suite = [
            athina.evals.ContainsNone(display_name="Response should not mention competitors", keywords=competitor_names),
            athina.evals.PiiDetection(),
        ]
 
        # Run guard
        athina.guard(
            suite=eval_suite,
            text=response,
        )
    except athina.AthinaGuardException as e:
        print("\nERROR: Detected a bad response. Fallback strategy initiated.")
        # Fallback strategy if the original response is not safe
        final_response = "I'm sorry, I can't help with that."
 
    return final_response

In this example, we're guarding the AI response by checking if it contains any of our competitor names or if it contains any PII.

If either eval fails, we catch the AthinaGuardException and handle it by using a fallback message.

How does athina.guard() impact latency?

To minimize latency impact, we recommend only running the following evals using athina.guard()

Evaluations will automatically run in parallel to minimize latency impact.