Views:

An example of Python code for the Trend Vision One AI Guard integration.

The following is an example of how to integrate AI Guard with your application.
import openai
import os
import requests


# Get your Trend Vision One API key from environment variable
api_key = os.environ.get("V1_API_KEY")
if not api_key:
    raise ValueError("Missing V1_API_KEY environment variable")

# Set your OpenAI API key
openai.api_key = "your-model-api-key"

# User prompt stored in a variable
user_prompt = "Explain the concept of machine learning in simple terms."

# Use the requests library to make the direct call to the /applyGuardrails endpoint
headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json",
    "TMV1-Application-Name": "my-ai-application",  # REQUIRED: Your application name
    "TMV1-Request-Type": "SimpleRequestGuardrails",  # Optional: Defaults to SimpleRequestGuardrails
    "Prefer": "return=minimal"  # Optional: "return=minimal" (default) or "return=representation" for detailed response
    "Accept": "application/json"
}

payload = {
    "prompt": user_prompt
}

response = requests.post(
    f"https://api.{region}.xdr.trendmicro.com/v3.0/aiSecurity/applyGuardrails",
    headers=headers,
    json=payload
)

# Check the response body for the 'action' field 
unsafe = False
if response.status_code == 200:
    response_data = response.json()
    action = response_data.get("action")
    if action and action == "Block":
        unsafe = True
        print(f"User prompt blocked. Reasons: {response_data.get('reasons', [])}")
else:
    print(f"Error calling guardrails API: {response.status_code}")
    exit(1)


if not unsafe:
    # Send the prompt to the OpenAI LLM
    openai_response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=[
            {"role": "user", "content": user_prompt}
        ],
        max_tokens=150,
        temperature=0.7
    )



    # Payload can also be the OpenAI response object from LLM
    response_headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
        "TMV1-Application-Name": "my-ai-application",
        "TMV1-Request-Type": "OpenAIChatCompletionResponseV1",  # Specify OpenAI response format
        "Prefer": "return=minimal"
        "Accept": "application/json"
    }

    # The payload is the complete OpenAI response object
    guard_response = requests.post(
        f"https://api.{region}.xdr.trendmicro.com/v3.0/aiSecurity/applyGuardrails",
        headers=response_headers,
        json=openai_response
    )

    # Check the response body for the 'action' field
    if guard_response.status_code == 200:
        guard_data = guard_response.json()
        action = guard_data.get("action")
        if action and action == "Block":
            print(f"LLM response blocked. Reasons: {guard_data.get('reasons', [])}")
            exit(0)
    else:
        print(f"Error evaluating LLM response: {guard_response.status_code}")
        exit(1)

    # Print the response
    print(openai_response.choices[0].message.content.strip())
else:
    print("User prompt is considered unsafe. No response will be generated.")
    exit(0)