CLI tool and Model Server for VirtueAI VirtueRed
Project description
VirtueRed
VirtueRed is a comprehensive package for the VirtueAI Redteaming system, providing both a CLI tool and a Model Server.
Installation
pip install virtuered
Components
1. Model Server
The Model Server allows you to serve your custom models for use with the VirtueRed system.
Usage
from virtuered.client import ModelServer
# Start the model server
server = ModelServer(
port=4299 # Optional, defaults to 4299
)
server.start()
Local Model Setup
- Create a models directory:
models/
├── model1.py
└── model2.py
- Create a new Python file in the
./modelsfolder with a descriptive name for your model, e.g.,model1.py. Create a function calledchatinmodel1.py, the chat function will takes a list of chat messages and returns the response from the language model. For example, if we want to create a chat function with LLAMA-3-8b from huggingface:
import os
from transformers import pipeline, LlamaTokenizer, LlamaForCausalLM
# Step 1: Load the LLaMA model and tokenizer
model_name = "meta-llama/Meta-Llama-3-8B" # Replace with the actual model name on Hugging Face Hub
tokenizer = LlamaTokenizer.from_pretrained(model_name)
model = LlamaForCausalLM.from_pretrained(model_name)
# Initialize the Hugging Face pipeline with the model and tokenizer
chatbot = pipeline("text-generation", model=model, tokenizer=tokenizer)
# Don't change the name of the function or the function signature
def chat(chats):
"""
This function takes a list of chat messages and returns the response from the language model.
Parameters:
chats (list): A list of dictionaries. Each dictionary contains a "prompt" and optionally an "answer".
The last item in the list should have a "prompt" without an "answer".
Returns:
str: The response from the language model.
Example of `chats` list with few-shot prompts:
[
{"prompt": "Hello, how are you?", "answer": "I'm an AI, so I don't have feelings, but thanks for asking!"},
{"prompt": "What is the capital of France?", "answer": "The capital of France is Paris."},
{"prompt": "Can you tell me a joke?"}
]
Another example of `chats` list with one-shot prompt:
[
{"prompt": "What is the weather like today?"}
]
"""
# Step 2: Prepare the chat history as a single string
chat_history = []
for c in chats:
# Add the user prompt and assistant's answer to the chat history
chat_history.append({"role": "user", "content": c["prompt"]})
if "answer" in c.keys():
chat_history.append({"role": "assistant", "content": c["answer"]})
else:
# If there is no answer, it means this is the prompt we need a response for
break
# Step 3: Generate the model's response
response = chatbot(chat_history, max_length=1000, num_return_sequences=1)
# Step 4: Extract and return the generated text
generated_text = response[0]['generated_text']
assistant_response = generated_text.split("Assistant:")[-1].strip()
return assistant_response
2. CLI Tool
The CLI tool provides a command-line interface for managing VirtueRed operations.
CLI Commands
# View all available commands
virtuered --help
# Configure a custom server address instead of the default http://localhost:4401(persistent)
virtuered config http://localhost:4403
virtuered show-config
# List all runs
virtuered list
# List all custom models
virtuered models
# Monitor ongoing scans
virtuered monitor
# Initialize a new scan
virtuered scan # Uses default scan_config.json
virtuered scan myconfig.json # Uses custom config file
# Get summary of a run
virtuered summary my_scan
virtuered summary 1
# Pause/Resume a scan
virtuered pause my_scan
virtuered resume 1
# Generate report
virtuered report my_scan
# Delete a run
virtuered delete 1
# For temporary custom server URL:
virtuered --server http://localhost:4403 list
Available Commands
--help: View all available commandsconfig: Set persistent default server URLshow-config: View current configurationlist: Show all runsmodels: Show all custom modelsscan: Initialize a new scan using configuration filemonitor: Monitor ongoing scanssummary: Get detailed summary of a runreport: Generate PDF reportpause: Pause a running scanresume: Resume a paused scandelete: Delete a run
Scan Configuration
Create a JSON configuration file (scan_config.json or custom name) before initiating a scan:
{
"name": "my_scan",
"model": "together_template",
"datasets": [
{
"name": "EU Artificial Intelligence Act",
"subcategories": [
"Criminal justice/Predictive policing",
"Persons (including murder)"
]
},
{
"name": "White House AI Executive Order"
}
],
"extra_args": {
"modelname": "model name",
"apikey": "your-api-key"
}
}
Configuration Fields:
- Required:
name: Unique scan identifier (alphanumeric and underscores only)model: Model specification (local or cloud-hosted template)datasets: Array of at least one dataset object withnamefield
- Optional:
subcategories: Array of specific subcategories to evaluate within each datasetextra_args: Additional parameters for cloud-based models (credentials, settings)
Architecture
The package consists of two main components:
- Model Server: Serves your custom models, making them accessible to the VirtueRed system
- CLI Tool: Provides command-line interface for managing VirtueRed operations
The typical setup involves:
- Running the Model Server to serve your custom models
- Running the VirtueRed Docker container, configured to connect to your Model Server
- Using the CLI tool to manage and monitor operations
Notes
- The Model Server must be running and accessible to the Docker container
- For local setup, use
http://127.0.0.1:4299as client address - For remote setup, use
http://<server-ip>:4299as client address - Ensure your models directory is properly structured with required model files
Support
If you need further assistance, please contact our support team at contact@virtueai.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file virtuered-2.0.0.tar.gz.
File metadata
- Download URL: virtuered-2.0.0.tar.gz
- Upload date:
- Size: 4.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61f950234de1dff6b2f9eeb3daebc05c97c1ebaa29f11268a4669d6a84f45e7b
|
|
| MD5 |
b7224e088d1faa447abfa44f66548b34
|
|
| BLAKE2b-256 |
67ef7e6a50372ec0e9d2ae10462c3be032d85e13d24a68e0b545990ecdf6e7ab
|
File details
Details for the file virtuered-2.0.0-py3-none-any.whl.
File metadata
- Download URL: virtuered-2.0.0-py3-none-any.whl
- Upload date:
- Size: 4.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b44c820043607d72f50c68323c1696b504fce6e9a789a644a5e85c1b3beb0271
|
|
| MD5 |
67b2233d2812f686d9e5a2c2be6a21b8
|
|
| BLAKE2b-256 |
f729bdebd7a765a532375ea0273526ff3839158aaad6d0cfb2d47713b2105edc
|