mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-28 02:53:30 +00:00
Splits the meta-reference safety implementation into three distinct providers: - inline::llama-guard - inline::prompt-guard - inline::code-scanner Note that this PR is a backward incompatible change to the llama stack server. I have added deprecation_error field to ProviderSpec -- the server reads it and immediately barfs. This is used to direct the user with a specific message on what action to perform. An automagical "config upgrade" is a bit too much work to implement right now :/ (Note that we will be gradually prefixing all inline providers with inline:: -- I am only doing this for this set of new providers because otherwise existing configuration files will break even more badly.)
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under the terms described in the LICENSE file in
|
|
# the root directory of this source tree.
|
|
|
|
from typing import List
|
|
|
|
from llama_models.sku_list import CoreModelId, safety_models
|
|
|
|
from pydantic import BaseModel, field_validator
|
|
|
|
|
|
class LlamaGuardConfig(BaseModel):
|
|
model: str = "Llama-Guard-3-1B"
|
|
excluded_categories: List[str] = []
|
|
|
|
@field_validator("model")
|
|
@classmethod
|
|
def validate_model(cls, model: str) -> str:
|
|
permitted_models = [
|
|
m.descriptor()
|
|
for m in safety_models()
|
|
if (
|
|
m.core_model_id
|
|
in {
|
|
CoreModelId.llama_guard_3_8b,
|
|
CoreModelId.llama_guard_3_1b,
|
|
CoreModelId.llama_guard_3_11b_vision,
|
|
}
|
|
)
|
|
]
|
|
if model not in permitted_models:
|
|
raise ValueError(
|
|
f"Invalid model: {model}. Must be one of {permitted_models}"
|
|
)
|
|
return model
|