mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-12-16 17:02:36 +00:00
feat: convert Benchmarks API to use FastAPI router (#4309)
# What does this PR do? Convert the Benchmarks API from @webmethod decorators to FastAPI router pattern, matching the Batches API structure. One notable change is the update of stack.py to handle request models in register_resources(). Closes: #4308 ## Test Plan CI and `curl http://localhost:8321/v1/inspect/routes | jq '.data[] | select(.route | contains("benchmark"))'` --------- Signed-off-by: Sébastien Han <seb@redhat.com>
This commit is contained in:
parent
661985e240
commit
ff375f1abb
18 changed files with 862 additions and 195 deletions
|
|
@ -22,14 +22,17 @@ from llama_stack_api import (
|
|||
Api,
|
||||
Dataset,
|
||||
DatasetPurpose,
|
||||
ListBenchmarksRequest,
|
||||
ListToolDefsResponse,
|
||||
Model,
|
||||
ModelNotFoundError,
|
||||
ModelType,
|
||||
NumberType,
|
||||
RegisterBenchmarkRequest,
|
||||
Shield,
|
||||
ToolDef,
|
||||
ToolGroup,
|
||||
UnregisterBenchmarkRequest,
|
||||
URIDataSource,
|
||||
)
|
||||
|
||||
|
|
@ -420,24 +423,26 @@ async def test_benchmarks_routing_table(cached_disk_dist_registry):
|
|||
|
||||
# Register multiple benchmarks and verify listing
|
||||
await table.register_benchmark(
|
||||
benchmark_id="test-benchmark",
|
||||
dataset_id="test-dataset",
|
||||
scoring_functions=["test-scoring-fn", "test-scoring-fn-2"],
|
||||
RegisterBenchmarkRequest(
|
||||
benchmark_id="test-benchmark",
|
||||
dataset_id="test-dataset",
|
||||
scoring_functions=["test-scoring-fn", "test-scoring-fn-2"],
|
||||
)
|
||||
)
|
||||
benchmarks = await table.list_benchmarks()
|
||||
benchmarks = await table.list_benchmarks(ListBenchmarksRequest())
|
||||
|
||||
assert len(benchmarks.data) == 1
|
||||
benchmark_ids = {b.identifier for b in benchmarks.data}
|
||||
assert "test-benchmark" in benchmark_ids
|
||||
|
||||
# Unregister the benchmark and verify removal
|
||||
await table.unregister_benchmark(benchmark_id="test-benchmark")
|
||||
benchmarks_after = await table.list_benchmarks()
|
||||
await table.unregister_benchmark(UnregisterBenchmarkRequest(benchmark_id="test-benchmark"))
|
||||
benchmarks_after = await table.list_benchmarks(ListBenchmarksRequest())
|
||||
assert len(benchmarks_after.data) == 0
|
||||
|
||||
# Unregistering a non-existent benchmark should raise a clear error
|
||||
with pytest.raises(ValueError, match="Benchmark 'dummy_benchmark' not found"):
|
||||
await table.unregister_benchmark(benchmark_id="dummy_benchmark")
|
||||
await table.unregister_benchmark(UnregisterBenchmarkRequest(benchmark_id="dummy_benchmark"))
|
||||
|
||||
|
||||
async def test_tool_groups_routing_table(cached_disk_dist_registry):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue