chore(yaml)!: move registered resources to a sub-key (#3861)

**NOTE: this is a backwards incompatible change to the run-configs.**

A small QOL update, but this will prove useful when I do a rename for
"vector_dbs" to "vector_stores" next.

Moves all the `models, shields, ...` keys in run-config under a
`registered_resources` sub-key.
This commit is contained in:
Ashwin Bharambe 2025-10-20 14:52:48 -07:00 committed by GitHub
parent 483d53cc37
commit 94faec7bc5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 342 additions and 320 deletions

View file

@ -422,6 +422,18 @@ def process_cors_config(cors_config: bool | CORSConfig | None) -> CORSConfig | N
raise ValueError(f"Expected bool or CORSConfig, got {type(cors_config).__name__}") raise ValueError(f"Expected bool or CORSConfig, got {type(cors_config).__name__}")
class RegisteredResources(BaseModel):
"""Registry of resources available in the distribution."""
models: list[ModelInput] = Field(default_factory=list)
shields: list[ShieldInput] = Field(default_factory=list)
vector_dbs: list[VectorDBInput] = Field(default_factory=list)
datasets: list[DatasetInput] = Field(default_factory=list)
scoring_fns: list[ScoringFnInput] = Field(default_factory=list)
benchmarks: list[BenchmarkInput] = Field(default_factory=list)
tool_groups: list[ToolGroupInput] = Field(default_factory=list)
class ServerConfig(BaseModel): class ServerConfig(BaseModel):
port: int = Field( port: int = Field(
default=8321, default=8321,
@ -491,14 +503,10 @@ can be instantiated multiple times (with different configs) if necessary.
description="Catalog of named storage backends and references available to the stack", description="Catalog of named storage backends and references available to the stack",
) )
# registry of "resources" in the distribution registered_resources: RegisteredResources = Field(
models: list[ModelInput] = Field(default_factory=list) default_factory=RegisteredResources,
shields: list[ShieldInput] = Field(default_factory=list) description="Registry of resources available in the distribution",
vector_dbs: list[VectorDBInput] = Field(default_factory=list) )
datasets: list[DatasetInput] = Field(default_factory=list)
scoring_fns: list[ScoringFnInput] = Field(default_factory=list)
benchmarks: list[BenchmarkInput] = Field(default_factory=list)
tool_groups: list[ToolGroupInput] = Field(default_factory=list)
logging: LoggingConfig | None = Field(default=None, description="Configuration for Llama Stack Logging") logging: LoggingConfig | None = Field(default=None, description="Configuration for Llama Stack Logging")

View file

@ -110,7 +110,7 @@ TEST_RECORDING_CONTEXT = None
async def register_resources(run_config: StackRunConfig, impls: dict[Api, Any]): async def register_resources(run_config: StackRunConfig, impls: dict[Api, Any]):
for rsrc, api, register_method, list_method in RESOURCES: for rsrc, api, register_method, list_method in RESOURCES:
objects = getattr(run_config, rsrc) objects = getattr(run_config.registered_resources, rsrc)
if api not in impls: if api not in impls:
continue continue

View file

@ -247,22 +247,23 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: [] registered_resources:
shields: models: []
- shield_id: llama-guard shields:
- shield_id: llama-guard
provider_id: ${env.SAFETY_MODEL:+llama-guard} provider_id: ${env.SAFETY_MODEL:+llama-guard}
provider_shield_id: ${env.SAFETY_MODEL:=} provider_shield_id: ${env.SAFETY_MODEL:=}
- shield_id: code-scanner - shield_id: code-scanner
provider_id: ${env.CODE_SCANNER_MODEL:+code-scanner} provider_id: ${env.CODE_SCANNER_MODEL:+code-scanner}
provider_shield_id: ${env.CODE_SCANNER_MODEL:=} provider_shield_id: ${env.CODE_SCANNER_MODEL:=}
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -109,30 +109,31 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: registered_resources:
- metadata: {} models:
- metadata: {}
model_id: ${env.INFERENCE_MODEL} model_id: ${env.INFERENCE_MODEL}
provider_id: tgi0 provider_id: tgi0
model_type: llm model_type: llm
- metadata: {} - metadata: {}
model_id: ${env.SAFETY_MODEL} model_id: ${env.SAFETY_MODEL}
provider_id: tgi1 provider_id: tgi1
model_type: llm model_type: llm
- metadata: - metadata:
embedding_dimension: 768 embedding_dimension: 768
model_id: nomic-embed-text-v1.5 model_id: nomic-embed-text-v1.5
provider_id: sentence-transformers provider_id: sentence-transformers
model_type: embedding model_type: embedding
shields: shields:
- shield_id: ${env.SAFETY_MODEL} - shield_id: ${env.SAFETY_MODEL}
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: brave-search provider_id: brave-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -105,25 +105,26 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: registered_resources:
- metadata: {} models:
- metadata: {}
model_id: ${env.INFERENCE_MODEL} model_id: ${env.INFERENCE_MODEL}
provider_id: tgi0 provider_id: tgi0
model_type: llm model_type: llm
- metadata: - metadata:
embedding_dimension: 768 embedding_dimension: 768
model_id: nomic-embed-text-v1.5 model_id: nomic-embed-text-v1.5
provider_id: sentence-transformers provider_id: sentence-transformers
model_type: embedding model_type: embedding
shields: [] shields: []
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: brave-search provider_id: brave-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -122,30 +122,31 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: registered_resources:
- metadata: {} models:
- metadata: {}
model_id: ${env.INFERENCE_MODEL} model_id: ${env.INFERENCE_MODEL}
provider_id: meta-reference-inference provider_id: meta-reference-inference
model_type: llm model_type: llm
- metadata: {} - metadata: {}
model_id: ${env.SAFETY_MODEL} model_id: ${env.SAFETY_MODEL}
provider_id: meta-reference-safety provider_id: meta-reference-safety
model_type: llm model_type: llm
- metadata: - metadata:
embedding_dimension: 768 embedding_dimension: 768
model_id: nomic-embed-text-v1.5 model_id: nomic-embed-text-v1.5
provider_id: sentence-transformers provider_id: sentence-transformers
model_type: embedding model_type: embedding
shields: shields:
- shield_id: ${env.SAFETY_MODEL} - shield_id: ${env.SAFETY_MODEL}
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -112,25 +112,26 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: registered_resources:
- metadata: {} models:
- metadata: {}
model_id: ${env.INFERENCE_MODEL} model_id: ${env.INFERENCE_MODEL}
provider_id: meta-reference-inference provider_id: meta-reference-inference
model_type: llm model_type: llm
- metadata: - metadata:
embedding_dimension: 768 embedding_dimension: 768
model_id: nomic-embed-text-v1.5 model_id: nomic-embed-text-v1.5
provider_id: sentence-transformers provider_id: sentence-transformers
model_type: embedding model_type: embedding
shields: [] shields: []
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -111,24 +111,25 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: registered_resources:
- metadata: {} models:
- metadata: {}
model_id: ${env.INFERENCE_MODEL} model_id: ${env.INFERENCE_MODEL}
provider_id: nvidia provider_id: nvidia
model_type: llm model_type: llm
- metadata: {} - metadata: {}
model_id: ${env.SAFETY_MODEL} model_id: ${env.SAFETY_MODEL}
provider_id: nvidia provider_id: nvidia
model_type: llm model_type: llm
shields: shields:
- shield_id: ${env.SAFETY_MODEL} - shield_id: ${env.SAFETY_MODEL}
provider_id: nvidia provider_id: nvidia
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -100,14 +100,15 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: [] registered_resources:
shields: [] models: []
vector_dbs: [] shields: []
datasets: [] vector_dbs: []
scoring_fns: [] datasets: []
benchmarks: [] scoring_fns: []
tool_groups: benchmarks: []
- toolgroup_id: builtin::rag tool_groups:
- toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -142,108 +142,109 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: registered_resources:
- metadata: {} models:
- metadata: {}
model_id: gpt-4o model_id: gpt-4o
provider_id: openai provider_id: openai
provider_model_id: gpt-4o provider_model_id: gpt-4o
model_type: llm model_type: llm
- metadata: {} - metadata: {}
model_id: claude-3-5-sonnet-latest model_id: claude-3-5-sonnet-latest
provider_id: anthropic provider_id: anthropic
provider_model_id: claude-3-5-sonnet-latest provider_model_id: claude-3-5-sonnet-latest
model_type: llm model_type: llm
- metadata: {} - metadata: {}
model_id: gemini/gemini-1.5-flash model_id: gemini/gemini-1.5-flash
provider_id: gemini provider_id: gemini
provider_model_id: gemini/gemini-1.5-flash provider_model_id: gemini/gemini-1.5-flash
model_type: llm model_type: llm
- metadata: {} - metadata: {}
model_id: meta-llama/Llama-3.3-70B-Instruct model_id: meta-llama/Llama-3.3-70B-Instruct
provider_id: groq provider_id: groq
provider_model_id: groq/llama-3.3-70b-versatile provider_model_id: groq/llama-3.3-70b-versatile
model_type: llm model_type: llm
- metadata: {} - metadata: {}
model_id: meta-llama/Llama-3.1-405B-Instruct model_id: meta-llama/Llama-3.1-405B-Instruct
provider_id: together provider_id: together
provider_model_id: meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo provider_model_id: meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo
model_type: llm model_type: llm
shields: shields:
- shield_id: meta-llama/Llama-Guard-3-8B - shield_id: meta-llama/Llama-Guard-3-8B
vector_dbs: [] vector_dbs: []
datasets: datasets:
- purpose: eval/messages-answer - purpose: eval/messages-answer
source: source:
type: uri type: uri
uri: huggingface://datasets/llamastack/simpleqa?split=train uri: huggingface://datasets/llamastack/simpleqa?split=train
metadata: {} metadata: {}
dataset_id: simpleqa dataset_id: simpleqa
- purpose: eval/messages-answer - purpose: eval/messages-answer
source: source:
type: uri type: uri
uri: huggingface://datasets/llamastack/mmlu_cot?split=test&name=all uri: huggingface://datasets/llamastack/mmlu_cot?split=test&name=all
metadata: {} metadata: {}
dataset_id: mmlu_cot dataset_id: mmlu_cot
- purpose: eval/messages-answer - purpose: eval/messages-answer
source: source:
type: uri type: uri
uri: huggingface://datasets/llamastack/gpqa_0shot_cot?split=test&name=gpqa_main uri: huggingface://datasets/llamastack/gpqa_0shot_cot?split=test&name=gpqa_main
metadata: {} metadata: {}
dataset_id: gpqa_cot dataset_id: gpqa_cot
- purpose: eval/messages-answer - purpose: eval/messages-answer
source: source:
type: uri type: uri
uri: huggingface://datasets/llamastack/math_500?split=test uri: huggingface://datasets/llamastack/math_500?split=test
metadata: {} metadata: {}
dataset_id: math_500 dataset_id: math_500
- purpose: eval/messages-answer - purpose: eval/messages-answer
source: source:
type: uri type: uri
uri: huggingface://datasets/llamastack/IfEval?split=train uri: huggingface://datasets/llamastack/IfEval?split=train
metadata: {} metadata: {}
dataset_id: ifeval dataset_id: ifeval
- purpose: eval/messages-answer - purpose: eval/messages-answer
source: source:
type: uri type: uri
uri: huggingface://datasets/llamastack/docvqa?split=val uri: huggingface://datasets/llamastack/docvqa?split=val
metadata: {} metadata: {}
dataset_id: docvqa dataset_id: docvqa
scoring_fns: [] scoring_fns: []
benchmarks: benchmarks:
- dataset_id: simpleqa - dataset_id: simpleqa
scoring_functions: scoring_functions:
- llm-as-judge::405b-simpleqa - llm-as-judge::405b-simpleqa
metadata: {} metadata: {}
benchmark_id: meta-reference-simpleqa benchmark_id: meta-reference-simpleqa
- dataset_id: mmlu_cot - dataset_id: mmlu_cot
scoring_functions: scoring_functions:
- basic::regex_parser_multiple_choice_answer - basic::regex_parser_multiple_choice_answer
metadata: {} metadata: {}
benchmark_id: meta-reference-mmlu-cot benchmark_id: meta-reference-mmlu-cot
- dataset_id: gpqa_cot - dataset_id: gpqa_cot
scoring_functions: scoring_functions:
- basic::regex_parser_multiple_choice_answer - basic::regex_parser_multiple_choice_answer
metadata: {} metadata: {}
benchmark_id: meta-reference-gpqa-cot benchmark_id: meta-reference-gpqa-cot
- dataset_id: math_500 - dataset_id: math_500
scoring_functions: scoring_functions:
- basic::regex_parser_math_response - basic::regex_parser_math_response
metadata: {} metadata: {}
benchmark_id: meta-reference-math-500 benchmark_id: meta-reference-math-500
- dataset_id: ifeval - dataset_id: ifeval
scoring_functions: scoring_functions:
- basic::ifeval - basic::ifeval
metadata: {} metadata: {}
benchmark_id: meta-reference-ifeval benchmark_id: meta-reference-ifeval
- dataset_id: docvqa - dataset_id: docvqa
scoring_functions: scoring_functions:
- basic::docvqa - basic::docvqa
metadata: {} metadata: {}
benchmark_id: meta-reference-docvqa benchmark_id: meta-reference-docvqa
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -87,26 +87,27 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: registered_resources:
- metadata: {} models:
- metadata: {}
model_id: ${env.INFERENCE_MODEL} model_id: ${env.INFERENCE_MODEL}
provider_id: vllm-inference provider_id: vllm-inference
model_type: llm model_type: llm
- metadata: - metadata:
embedding_dimension: 768 embedding_dimension: 768
model_id: nomic-embed-text-v1.5 model_id: nomic-embed-text-v1.5
provider_id: sentence-transformers provider_id: sentence-transformers
model_type: embedding model_type: embedding
shields: shields:
- shield_id: meta-llama/Llama-Guard-3-8B - shield_id: meta-llama/Llama-Guard-3-8B
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -250,22 +250,23 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: [] registered_resources:
shields: models: []
- shield_id: llama-guard shields:
- shield_id: llama-guard
provider_id: ${env.SAFETY_MODEL:+llama-guard} provider_id: ${env.SAFETY_MODEL:+llama-guard}
provider_shield_id: ${env.SAFETY_MODEL:=} provider_shield_id: ${env.SAFETY_MODEL:=}
- shield_id: code-scanner - shield_id: code-scanner
provider_id: ${env.CODE_SCANNER_MODEL:+code-scanner} provider_id: ${env.CODE_SCANNER_MODEL:+code-scanner}
provider_shield_id: ${env.CODE_SCANNER_MODEL:=} provider_shield_id: ${env.CODE_SCANNER_MODEL:=}
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -247,22 +247,23 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: [] registered_resources:
shields: models: []
- shield_id: llama-guard shields:
- shield_id: llama-guard
provider_id: ${env.SAFETY_MODEL:+llama-guard} provider_id: ${env.SAFETY_MODEL:+llama-guard}
provider_shield_id: ${env.SAFETY_MODEL:=} provider_shield_id: ${env.SAFETY_MODEL:=}
- shield_id: code-scanner - shield_id: code-scanner
provider_id: ${env.CODE_SCANNER_MODEL:+code-scanner} provider_id: ${env.CODE_SCANNER_MODEL:+code-scanner}
provider_shield_id: ${env.CODE_SCANNER_MODEL:=} provider_shield_id: ${env.CODE_SCANNER_MODEL:=}
vector_dbs: [] vector_dbs: []
datasets: [] datasets: []
scoring_fns: [] scoring_fns: []
benchmarks: [] benchmarks: []
tool_groups: tool_groups:
- toolgroup_id: builtin::websearch - toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321

View file

@ -272,6 +272,7 @@ class RunConfigSettings(BaseModel):
"apis": apis, "apis": apis,
"providers": provider_configs, "providers": provider_configs,
"storage": storage_config, "storage": storage_config,
"registered_resources": {
"models": [m.model_dump(exclude_none=True) for m in (self.default_models or [])], "models": [m.model_dump(exclude_none=True) for m in (self.default_models or [])],
"shields": [s.model_dump(exclude_none=True) for s in (self.default_shields or [])], "shields": [s.model_dump(exclude_none=True) for s in (self.default_shields or [])],
"vector_dbs": [], "vector_dbs": [],
@ -279,6 +280,7 @@ class RunConfigSettings(BaseModel):
"scoring_fns": [], "scoring_fns": [],
"benchmarks": [b.model_dump(exclude_none=True) for b in (self.default_benchmarks or [])], "benchmarks": [b.model_dump(exclude_none=True) for b in (self.default_benchmarks or [])],
"tool_groups": [t.model_dump(exclude_none=True) for t in (self.default_tool_groups or [])], "tool_groups": [t.model_dump(exclude_none=True) for t in (self.default_tool_groups or [])],
},
"server": { "server": {
"port": 8321, "port": 8321,
}, },

View file

@ -115,16 +115,17 @@ storage:
conversations: conversations:
table_name: openai_conversations table_name: openai_conversations
backend: sql_default backend: sql_default
models: [] registered_resources:
shields: [] models: []
vector_dbs: [] shields: []
datasets: [] vector_dbs: []
scoring_fns: [] datasets: []
benchmarks: [] scoring_fns: []
tool_groups: benchmarks: []
- toolgroup_id: builtin::websearch tool_groups:
- toolgroup_id: builtin::websearch
provider_id: tavily-search provider_id: tavily-search
- toolgroup_id: builtin::rag - toolgroup_id: builtin::rag
provider_id: rag-runtime provider_id: rag-runtime
server: server:
port: 8321 port: 8321