llama-stack/distributions
cdgamarose-nv 252a487085
feat: added nvidia as safety provider (#1248)
# What does this PR do?
Adds nvidia as a safety provider by interfacing with the nemo guardrails
microservice.
This enables checking user’s input or the LLM’s output against input and
output guardrails by using the `/v1/guardrails/checks` endpoint of the[
guardrails
API.](https://developer.nvidia.com/docs/nemo-microservices/guardrails/source/guides/checks-guide.html)

## Test Plan
Deploy nemo guardrails service following the documentation:
https://developer.nvidia.com/docs/nemo-microservices/guardrails/source/getting-started/deploy-docker.html

### Standalone:
```bash
(venv) local-cdgamarose@a1u1g-rome-0153:~/llama-stack$ pytest -v -s llama_stack/providers/tests/safety/test_safety.py --providers inference=nvidia,safety=nvidia --safety-shield meta/llama-3.1-8b-instruct

=================================================================================== test session starts ===================================================================================
platform linux -- Python 3.10.12, pytest-8.3.4, pluggy-1.5.0 -- /localhome/local-cdgamarose/llama-stack/venv/bin/python3
cachedir: .pytest_cache
metadata: {'Python': '3.10.12', 'Platform': 'Linux-5.15.0-122-generic-x86_64-with-glibc2.35', 'Packages': {'pytest': '8.3.4', 'pluggy': '1.5.0'}, 'Plugins': {'metadata': '3.1.1', 'asyncio': '0.25.3', 'anyio': '4.8.0', 'html': '4.1.1'}}
rootdir: /localhome/local-cdgamarose/llama-stack
configfile: pyproject.toml
plugins: metadata-3.1.1, asyncio-0.25.3, anyio-4.8.0, html-4.1.1
asyncio: mode=strict, asyncio_default_fixture_loop_scope=None
collected 2 items

llama_stack/providers/tests/safety/test_safety.py::TestSafety::test_shield_list[--inference=nvidia:safety=nvidia] Initializing NVIDIASafetyAdapter(http://0.0.0.0:7331)...
PASSED
llama_stack/providers/tests/safety/test_safety.py::TestSafety::test_run_shield[--inference=nvidia:safety=nvidia] PASSED

============================================================================== 2 passed, 2 warnings in 4.78s ==============================================================================

```
### Distribution:
```
llama stack run llama_stack/templates/nvidia/run-with-safety.yaml
curl -v -X 'POST' "http://localhost:8321/v1/safety/run-shield" -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"shield_id": "meta/llama-3.1-8b-instruct", "messages":[{"role": "user", "content": "you are stupid"}]}'
{"violation":{"violation_level":"error","user_message":"Sorry I cannot do this.","metadata":{"self check input":{"status":"blocked"}}}}
```

[//]: # (## Documentation)

---------

Co-authored-by: Ashwin Bharambe <ashwin.bharambe@gmail.com>
2025-03-17 14:39:23 -07:00
..
bedrock Update default port from 5000 -> 8321 2025-01-16 15:26:48 -08:00
cerebras Update default port from 5000 -> 8321 2025-01-16 15:26:48 -08:00
dell-tgi More generic image type for OCI-compliant container technologies (#802) 2025-01-17 16:37:42 -08:00
fireworks [CICD] add simple test step for docker build workflow, fix prefix bug (#821) 2025-01-18 15:16:05 -08:00
meta-reference-gpu Update default port from 5000 -> 8321 2025-01-16 15:26:48 -08:00
meta-reference-quantized-gpu More generic image type for OCI-compliant container technologies (#802) 2025-01-17 16:37:42 -08:00
ollama Auto-generate distro yamls + docs (#468) 2024-11-18 14:57:06 -08:00
remote-nvidia Update default port from 5000 -> 8321 2025-01-16 15:26:48 -08:00
remote-vllm fix: Fixed bad file name in inline::localfs (#1358) 2025-03-11 12:46:11 -07:00
runpod Add Runpod Provider + Distribution (#362) 2025-01-23 12:19:02 -08:00
sambanova Sambanova - LlamaGuard (#886) 2025-01-27 15:46:30 -08:00
tgi Auto-generate distro yamls + docs (#468) 2024-11-18 14:57:06 -08:00
together kill old readme 2025-02-02 06:49:01 -08:00
vllm-gpu More generic image type for OCI-compliant container technologies (#802) 2025-01-17 16:37:42 -08:00
dependencies.json feat: added nvidia as safety provider (#1248) 2025-03-17 14:39:23 -07:00