ollama_moderation
| Ollama connectors are currently only available on BYOC GCP clusters. |
|
When Redpanda Connect runs a data pipeline with a Ollama processor in it, Redpanda Cloud deploys a GPU-powered instance for the exclusive use of that pipeline. As pricing is based on resource consumption, this can have cost implications. |
Generates responses to messages in a chat conversation using the Ollama API, and checks the responses to make sure they do not violate safety or security standards.
-
Common
-
Advanced
processors:
label: ""
ollama_moderation:
model: "" # No default (required)
prompt: "" # No default (required)
response: "" # No default (required)
runner:
context_size: "" # No default (optional)
batch_size: "" # No default (optional)
gpu_layers: "" # No default (optional)
threads: "" # No default (optional)
use_mmap: "" # No default (optional)
server_address: "" # No default (optional)
processors:
label: ""
ollama_moderation:
model: "" # No default (required)
prompt: "" # No default (required)
response: "" # No default (required)
runner:
context_size: "" # No default (optional)
batch_size: "" # No default (optional)
gpu_layers: "" # No default (optional)
threads: "" # No default (optional)
use_mmap: "" # No default (optional)
server_address: "" # No default (optional)
cache_directory: "" # No default (optional)
download_url: "" # No default (optional)
This processor checks the safety of responses from your chosen large language model (LLM) using either Llama Guard 3 or ShieldGemma.
By default, the processor starts and runs a locally-installed Ollama server. Alternatively, to use an already running Ollama server, add your server details to the server_address field. You can download and install Ollama from the Ollama website.
For more information, see the Ollama documentation and Examples.
To check the safety of your prompts, see the ollama_chat processor documentation.
Fields
cache_directory
If the server_address is not set, download the Ollama binary to this directory and use it as a model cache.
Type: string
# Examples:
cache_directory: /opt/cache/connect/ollama
download_url
If server_address is not set, download the Ollama binary from this URL. The default value is the official Ollama GitHub release for this platform.
Type: string
model
The name of the Ollama LLM to use.
Type: string
| Option | Summary |
|---|---|
|
When using llama-guard3, two pieces of metadata is added: @safe with the value of |
|
When using shieldgemma, the model output is a single piece of metadata of @safe with a value of |
# Examples:
model: llama-guard3
# ---
model: shieldgemma
prompt
The prompt you used to generate a response from an LLM.
If you’re using the ollama_chat processor, you can set the save_prompt_metadata field to save the contents of your prompts. You can then run them through ollama_moderation processor to check the model responses for safety. For more details, see Examples.
You can also check the safety of your prompts. For more information, see the ollama_chat processor documentation.
This field supports interpolation functions.
Type: string
response
The LLM’s response that you want to check for safety.
This field supports interpolation functions.
Type: string
runner
Options for the model runner that are used when the model is first loaded into memory.
Type: object
runner.context_size
Sets the size of the context window used to generate the next token. Using a larger context window uses more memory and takes longer to process.
Type: int
runner.gpu_layers
Sets the number of layers to offload to the GPU for computation. This generally results in increased performance. By default, the runtime decides the number of layers dynamically.
Type: int
runner.threads
Sets the number of threads to use during response generation. For optimal performance, set this value to the number of physical CPU cores your system has. By default, the runtime decides the optimal number of threads.
Type: int
Examples
Use Llama Guard 3 classify a LLM response
This example uses Llama Guard 3 to check if another model responded with a safe or unsafe content.
input:
stdin:
scanner:
lines: {}
pipeline:
processors:
- ollama_chat:
model: llava
prompt: "${!content().string()}"
save_prompt_metadata: true
- ollama_moderation:
model: llama-guard3
prompt: "${!@prompt}"
response: "${!content().string()}"
- mapping: |
root.response = content().string()
root.is_safe = @safe
output:
stdout:
codec: lines