diff --git a/src/llama_stack_client/lib/cli/providers/inspect.py b/src/llama_stack_client/lib/cli/providers/inspect.py new file mode 100644 index 00000000..546ef612 --- /dev/null +++ b/src/llama_stack_client/lib/cli/providers/inspect.py @@ -0,0 +1,27 @@ +import click +import yaml +from rich.console import Console + +from ..common.utils import handle_client_errors + + +@click.command(name="inspect") +@click.argument("provider_id") +@click.pass_context +@handle_client_errors("inspect providers") +def inspect_provider(ctx, provider_id): + """Show available providers on distribution endpoint""" + client = ctx.obj["client"] + console = Console() + + providers_response = client.providers.inspect(provider_id=provider_id) + + if providers_response is None: + click.secho("Provider not found", fg="red") + raise click.exceptions.Exit(1) + + console.print(f"provider_id={providers_response.provider_id}") + console.print(f"provider_type={providers_response.provider_type}") + console.print("config:") + for line in yaml.dump(providers_response.config, indent=2).split("\n"): + console.print(line) diff --git a/src/llama_stack_client/lib/cli/providers/providers.py b/src/llama_stack_client/lib/cli/providers/providers.py index 2c91b330..bd07628d 100644 --- a/src/llama_stack_client/lib/cli/providers/providers.py +++ b/src/llama_stack_client/lib/cli/providers/providers.py @@ -1,6 +1,7 @@ import click from .list import list_providers +from .inspect import inspect_provider @click.group() @@ -11,3 +12,4 @@ def providers(): # Register subcommands providers.add_command(list_providers) +providers.add_command(inspect_provider) diff --git a/src/llama_stack_client/resources/providers.py b/src/llama_stack_client/resources/providers.py index 1bddc809..3e9628da 100644 --- a/src/llama_stack_client/resources/providers.py +++ b/src/llama_stack_client/resources/providers.py @@ -18,6 +18,7 @@ from .._wrappers import DataWrapper from .._base_client import make_request_options from ..types.provider_list_response import ProviderListResponse +from ..types.provider_get_response import GetProviderResponse __all__ = ["ProvidersResource", "AsyncProvidersResource"] @@ -53,7 +54,7 @@ def list( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> ProviderListResponse: return self._get( - "/v1/inspect/providers", + "/v1/providers", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -64,6 +65,29 @@ def list( cast_to=cast(Type[ProviderListResponse], DataWrapper[ProviderListResponse]), ) + def inspect( + self, + provider_id, + *, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, + ) -> GetProviderResponse: + return self._get( + f"/v1/providers/{provider_id}", + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + post_parser=DataWrapper[GetProviderResponse]._unwrapper, + ), + cast_to=cast(Type[GetProviderResponse], DataWrapper[GetProviderResponse]), + ) + class AsyncProvidersResource(AsyncAPIResource): @cached_property @@ -96,7 +120,7 @@ async def list( timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, ) -> ProviderListResponse: return await self._get( - "/v1/inspect/providers", + "/v1/providers", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -106,6 +130,29 @@ async def list( ), cast_to=cast(Type[ProviderListResponse], DataWrapper[ProviderListResponse]), ) + + async def inspect( + self, + provider_id, + *, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, + ) -> GetProviderResponse: + return await self._get( + f"/v1/providers/{provider_id}", + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + post_parser=DataWrapper[GetProviderResponse]._unwrapper, + ), + cast_to=cast(Type[GetProviderResponse], DataWrapper[GetProviderResponse]), + ) class ProvidersResourceWithRawResponse: @@ -116,6 +163,9 @@ def __init__(self, providers: ProvidersResource) -> None: providers.list, ) + self.inspect = to_raw_response_wrapper( + providers.inspect, + ) class AsyncProvidersResourceWithRawResponse: def __init__(self, providers: AsyncProvidersResource) -> None: @@ -125,6 +175,11 @@ def __init__(self, providers: AsyncProvidersResource) -> None: providers.list, ) + self.inspect = async_to_raw_response_wrapper( + providers.inspect, + ) + + class ProvidersResourceWithStreamingResponse: def __init__(self, providers: ProvidersResource) -> None: @@ -134,6 +189,10 @@ def __init__(self, providers: ProvidersResource) -> None: providers.list, ) + self.inspect = to_streamed_response_wrapper( + providers.inspect, + ) + class AsyncProvidersResourceWithStreamingResponse: def __init__(self, providers: AsyncProvidersResource) -> None: @@ -142,3 +201,6 @@ def __init__(self, providers: AsyncProvidersResource) -> None: self.list = async_to_streamed_response_wrapper( providers.list, ) + self.inspect = async_to_streamed_response_wrapper( + providers.inspect, + ) diff --git a/src/llama_stack_client/types/provider_get_response.py b/src/llama_stack_client/types/provider_get_response.py new file mode 100644 index 00000000..24a1d552 --- /dev/null +++ b/src/llama_stack_client/types/provider_get_response.py @@ -0,0 +1,9 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing_extensions import TypeAlias + +from .provider_info import ProviderInfoWithConfig + +__all__ = ["GetProviderResponse"] + +GetProviderResponse: TypeAlias = ProviderInfoWithConfig diff --git a/src/llama_stack_client/types/provider_info.py b/src/llama_stack_client/types/provider_info.py index bccbf774..bfaf23b3 100644 --- a/src/llama_stack_client/types/provider_info.py +++ b/src/llama_stack_client/types/provider_info.py @@ -2,6 +2,7 @@ from .._models import BaseModel +from typing import Dict, Any __all__ = ["ProviderInfo"] @@ -12,3 +13,12 @@ class ProviderInfo(BaseModel): provider_id: str provider_type: str + +class ProviderInfoWithConfig(BaseModel): + api: str + + provider_id: str + + provider_type: str + + config: Dict[str, Any]