add --version to llama stack CLI & /version endpoint (#732)

# What does this PR do?

- add --version to llama stack CLI 
- add /version endpoint
- run OpenAPI generator for the new endpoint

## Test Plan

**CLI**
<img width="184" alt="image"
src="https://github.com/user-attachments/assets/3acb1d22-453e-4b79-baf6-e98e88d0671c"
/>



**endpoint**
<img width="430" alt="image"
src="https://github.com/user-attachments/assets/79cdd670-493b-40cf-8f9e-28a4ac0988ac"
/>


## Sources

Please link relevant resources if necessary.


## Before submitting

- [ ] This PR fixes a typo or improves the docs (you can dismiss the
other checks if that's the case).
- [ ] Ran pre-commit to handle lint / formatting issues.
- [ ] Read the [contributor
guideline](https://github.com/meta-llama/llama-stack/blob/main/CONTRIBUTING.md),
      Pull Request section?
- [ ] Updated relevant documentation.
- [ ] Wrote necessary unit or integration tests.
This commit is contained in:
Xi Yan 2025-01-08 16:30:06 -08:00 committed by GitHub
parent a5e6f10e33
commit 596afc6497
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 110 additions and 1 deletions

View file

@ -2467,6 +2467,36 @@
"required": true "required": true
} }
} }
},
"/alpha/version": {
"get": {
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VersionInfo"
}
}
}
}
},
"tags": [
"Inspect"
],
"parameters": [
{
"name": "X-LlamaStack-ProviderData",
"in": "header",
"description": "JSON-encoded provider data which will be made available to the adapter servicing the API",
"required": false,
"schema": {
"type": "string"
}
}
]
}
} }
}, },
"jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
@ -6457,6 +6487,9 @@
"gradient_accumulation_steps": { "gradient_accumulation_steps": {
"type": "integer" "type": "integer"
}, },
"max_validation_steps": {
"type": "integer"
},
"data_config": { "data_config": {
"$ref": "#/components/schemas/DataConfig" "$ref": "#/components/schemas/DataConfig"
}, },
@ -6476,6 +6509,7 @@
"n_epochs", "n_epochs",
"max_steps_per_epoch", "max_steps_per_epoch",
"gradient_accumulation_steps", "gradient_accumulation_steps",
"max_validation_steps",
"data_config", "data_config",
"optimizer_config" "optimizer_config"
] ]
@ -7686,6 +7720,18 @@
"required": [ "required": [
"model_id" "model_id"
] ]
},
"VersionInfo": {
"type": "object",
"properties": {
"version": {
"type": "string"
}
},
"additionalProperties": false,
"required": [
"version"
]
} }
}, },
"responses": {} "responses": {}
@ -8382,6 +8428,10 @@
"name": "VectorMemoryBankParams", "name": "VectorMemoryBankParams",
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/VectorMemoryBankParams\" />" "description": "<SchemaDefinition schemaRef=\"#/components/schemas/VectorMemoryBankParams\" />"
}, },
{
"name": "VersionInfo",
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/VersionInfo\" />"
},
{ {
"name": "ViolationLevel", "name": "ViolationLevel",
"description": "<SchemaDefinition schemaRef=\"#/components/schemas/ViolationLevel\" />" "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ViolationLevel\" />"
@ -8576,6 +8626,7 @@
"UserMessage", "UserMessage",
"VectorMemoryBank", "VectorMemoryBank",
"VectorMemoryBankParams", "VectorMemoryBankParams",
"VersionInfo",
"ViolationLevel", "ViolationLevel",
"WolframAlphaToolDefinition" "WolframAlphaToolDefinition"
] ]

View file

@ -3002,6 +3002,8 @@ components:
type: integer type: integer
max_steps_per_epoch: max_steps_per_epoch:
type: integer type: integer
max_validation_steps:
type: integer
n_epochs: n_epochs:
type: integer type: integer
optimizer_config: optimizer_config:
@ -3010,6 +3012,7 @@ components:
- n_epochs - n_epochs
- max_steps_per_epoch - max_steps_per_epoch
- gradient_accumulation_steps - gradient_accumulation_steps
- max_validation_steps
- data_config - data_config
- optimizer_config - optimizer_config
type: object type: object
@ -3192,6 +3195,14 @@ components:
- embedding_model - embedding_model
- chunk_size_in_tokens - chunk_size_in_tokens
type: object type: object
VersionInfo:
additionalProperties: false
properties:
version:
type: string
required:
- version
type: object
ViolationLevel: ViolationLevel:
enum: enum:
- info - info
@ -4731,6 +4742,25 @@ paths:
description: OK description: OK
tags: tags:
- Telemetry - Telemetry
/alpha/version:
get:
parameters:
- description: JSON-encoded provider data which will be made available to the
adapter servicing the API
in: header
name: X-LlamaStack-ProviderData
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/VersionInfo'
description: OK
tags:
- Inspect
security: security:
- Default: [] - Default: []
servers: servers:
@ -5225,6 +5255,8 @@ tags:
- description: <SchemaDefinition schemaRef="#/components/schemas/VectorMemoryBankParams" - description: <SchemaDefinition schemaRef="#/components/schemas/VectorMemoryBankParams"
/> />
name: VectorMemoryBankParams name: VectorMemoryBankParams
- description: <SchemaDefinition schemaRef="#/components/schemas/VersionInfo" />
name: VersionInfo
- description: <SchemaDefinition schemaRef="#/components/schemas/ViolationLevel" /> - description: <SchemaDefinition schemaRef="#/components/schemas/ViolationLevel" />
name: ViolationLevel name: ViolationLevel
- description: <SchemaDefinition schemaRef="#/components/schemas/WolframAlphaToolDefinition" - description: <SchemaDefinition schemaRef="#/components/schemas/WolframAlphaToolDefinition"
@ -5411,5 +5443,6 @@ x-tagGroups:
- UserMessage - UserMessage
- VectorMemoryBank - VectorMemoryBank
- VectorMemoryBankParams - VectorMemoryBankParams
- VersionInfo
- ViolationLevel - ViolationLevel
- WolframAlphaToolDefinition - WolframAlphaToolDefinition

View file

@ -29,6 +29,11 @@ class HealthInfo(BaseModel):
# TODO: add a provider level status # TODO: add a provider level status
@json_schema_type
class VersionInfo(BaseModel):
version: str
@runtime_checkable @runtime_checkable
class Inspect(Protocol): class Inspect(Protocol):
@webmethod(route="/providers/list", method="GET") @webmethod(route="/providers/list", method="GET")
@ -39,3 +44,6 @@ class Inspect(Protocol):
@webmethod(route="/health", method="GET") @webmethod(route="/health", method="GET")
async def health(self) -> HealthInfo: ... async def health(self) -> HealthInfo: ...
@webmethod(route="/version", method="GET")
async def version(self) -> VersionInfo: ...

View file

@ -5,6 +5,7 @@
# the root directory of this source tree. # the root directory of this source tree.
import argparse import argparse
from importlib.metadata import version
from llama_stack.cli.subcommand import Subcommand from llama_stack.cli.subcommand import Subcommand
@ -24,6 +25,12 @@ class StackParser(Subcommand):
description="Operations for the Llama Stack / Distributions", description="Operations for the Llama Stack / Distributions",
) )
self.parser.add_argument(
"--version",
action="version",
version=f"{version('llama-stack')}",
)
subparsers = self.parser.add_subparsers(title="stack_subcommands") subparsers = self.parser.add_subparsers(title="stack_subcommands")
# Add sub-commands # Add sub-commands

View file

@ -4,11 +4,18 @@
# This source code is licensed under the terms described in the LICENSE file in # This source code is licensed under the terms described in the LICENSE file in
# the root directory of this source tree. # the root directory of this source tree.
from importlib.metadata import version
from typing import Dict, List from typing import Dict, List
from pydantic import BaseModel from pydantic import BaseModel
from llama_stack.apis.inspect import HealthInfo, Inspect, ProviderInfo, RouteInfo from llama_stack.apis.inspect import (
HealthInfo,
Inspect,
ProviderInfo,
RouteInfo,
VersionInfo,
)
from llama_stack.distribution.datatypes import StackRunConfig from llama_stack.distribution.datatypes import StackRunConfig
from llama_stack.distribution.server.endpoints import get_all_api_endpoints from llama_stack.distribution.server.endpoints import get_all_api_endpoints
@ -65,3 +72,6 @@ class DistributionInspectImpl(Inspect):
async def health(self) -> HealthInfo: async def health(self) -> HealthInfo:
return HealthInfo(status="OK") return HealthInfo(status="OK")
async def version(self) -> VersionInfo:
return VersionInfo(version=version("llama-stack"))