mirror of
https://github.com/katanemo/plano.git
synced 2026-05-24 14:05:14 +02:00
Validate model listener filter references before serving traffic (#947)
* Validate output filter references * ci: trigger workflows for org member
This commit is contained in:
parent
5a4487fc6e
commit
241a181d3a
3 changed files with 160 additions and 26 deletions
|
|
@ -562,15 +562,15 @@ def validate_and_render_schema():
|
|||
"Please provide model_providers either under listeners or at root level, not both. Currently we don't support multiple listeners with model_providers"
|
||||
)
|
||||
|
||||
# Validate input_filters IDs on listeners reference valid agent/filter IDs
|
||||
# Validate listener-level filter IDs reference valid agent/filter IDs.
|
||||
for listener in listeners:
|
||||
listener_input_filters = listener.get("input_filters", [])
|
||||
for fc_id in listener_input_filters:
|
||||
if fc_id not in agent_id_keys:
|
||||
raise Exception(
|
||||
f"Listener '{listener.get('name', 'unknown')}' references input_filters id '{fc_id}' "
|
||||
f"which is not defined in agents or filters. Available ids: {', '.join(sorted(agent_id_keys))}"
|
||||
)
|
||||
for filter_field in ("input_filters", "output_filters"):
|
||||
for fc_id in listener.get(filter_field, []):
|
||||
if fc_id not in agent_id_keys:
|
||||
raise Exception(
|
||||
f"Listener '{listener.get('name', 'unknown')}' references {filter_field} id '{fc_id}' "
|
||||
f"which is not defined in agents or filters. Available ids: {', '.join(sorted(agent_id_keys))}"
|
||||
)
|
||||
|
||||
# Validate model aliases if present
|
||||
if "model_aliases" in config_yaml:
|
||||
|
|
|
|||
|
|
@ -327,6 +327,63 @@ routing_preferences:
|
|||
tracing:
|
||||
random_sampling: 100
|
||||
|
||||
""",
|
||||
},
|
||||
{
|
||||
"id": "unknown_listener_output_filter",
|
||||
"expected_error": "references output_filters id 'missing_output_guard'",
|
||||
"plano_config": """
|
||||
version: v0.4.0
|
||||
|
||||
filters:
|
||||
- id: input_guard
|
||||
url: http://localhost:10500
|
||||
type: http
|
||||
|
||||
listeners:
|
||||
- name: llm
|
||||
type: model
|
||||
port: 12000
|
||||
input_filters:
|
||||
- input_guard
|
||||
output_filters:
|
||||
- missing_output_guard
|
||||
|
||||
model_providers:
|
||||
- model: openai/gpt-4o-mini
|
||||
access_key: $OPENAI_API_KEY
|
||||
default: true
|
||||
|
||||
""",
|
||||
},
|
||||
{
|
||||
"id": "valid_listener_output_filter",
|
||||
"expected_error": None,
|
||||
"plano_config": """
|
||||
version: v0.4.0
|
||||
|
||||
filters:
|
||||
- id: input_guard
|
||||
url: http://localhost:10500
|
||||
type: http
|
||||
- id: output_guard
|
||||
url: http://localhost:10501
|
||||
type: http
|
||||
|
||||
listeners:
|
||||
- name: llm
|
||||
type: model
|
||||
port: 12000
|
||||
input_filters:
|
||||
- input_guard
|
||||
output_filters:
|
||||
- output_guard
|
||||
|
||||
model_providers:
|
||||
- model: openai/gpt-4o-mini
|
||||
access_key: $OPENAI_API_KEY
|
||||
default: true
|
||||
|
||||
""",
|
||||
},
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue