forked from phoenix-oss/llama-stack-mirror
optional api dependencies (#793)
Co-authored-by: Dinesh Yeduguru <yvdinesh@gmail.com>
This commit is contained in:
parent
1f60c0286d
commit
eb60f04f86
5 changed files with 15 additions and 4 deletions
|
@ -145,7 +145,9 @@ async def resolve_impls(
|
||||||
log.warning(
|
log.warning(
|
||||||
f"Provider `{provider.provider_type}` for API `{api}` is deprecated and will be removed in a future release: {p.deprecation_warning}",
|
f"Provider `{provider.provider_type}` for API `{api}` is deprecated and will be removed in a future release: {p.deprecation_warning}",
|
||||||
)
|
)
|
||||||
p.deps__ = [a.value for a in p.api_dependencies]
|
p.deps__ = [a.value for a in p.api_dependencies] + [
|
||||||
|
a.value for a in p.optional_api_dependencies
|
||||||
|
]
|
||||||
spec = ProviderWithSpec(
|
spec = ProviderWithSpec(
|
||||||
spec=p,
|
spec=p,
|
||||||
**(provider.model_dump()),
|
**(provider.model_dump()),
|
||||||
|
@ -229,6 +231,9 @@ async def resolve_impls(
|
||||||
inner_impls_by_provider_id = {f"inner-{x.value}": {} for x in router_apis}
|
inner_impls_by_provider_id = {f"inner-{x.value}": {} for x in router_apis}
|
||||||
for api_str, provider in sorted_providers:
|
for api_str, provider in sorted_providers:
|
||||||
deps = {a: impls[a] for a in provider.spec.api_dependencies}
|
deps = {a: impls[a] for a in provider.spec.api_dependencies}
|
||||||
|
for a in provider.spec.optional_api_dependencies:
|
||||||
|
if a in impls:
|
||||||
|
deps[a] = impls[a]
|
||||||
|
|
||||||
inner_impls = {}
|
inner_impls = {}
|
||||||
if isinstance(provider.spec, RoutingTableProviderSpec):
|
if isinstance(provider.spec, RoutingTableProviderSpec):
|
||||||
|
@ -265,7 +270,7 @@ def topological_sort(
|
||||||
deps.append(dep)
|
deps.append(dep)
|
||||||
|
|
||||||
for dep in deps:
|
for dep in deps:
|
||||||
if dep not in visited:
|
if dep not in visited and dep in providers_with_specs:
|
||||||
dfs((dep, providers_with_specs[dep]), visited, stack)
|
dfs((dep, providers_with_specs[dep]), visited, stack)
|
||||||
|
|
||||||
stack.append(api_str)
|
stack.append(api_str)
|
||||||
|
|
|
@ -96,6 +96,9 @@ class ProviderSpec(BaseModel):
|
||||||
default_factory=list,
|
default_factory=list,
|
||||||
description="Higher-level API surfaces may depend on other providers to provide their functionality",
|
description="Higher-level API surfaces may depend on other providers to provide their functionality",
|
||||||
)
|
)
|
||||||
|
optional_api_dependencies: List[Api] = Field(
|
||||||
|
default_factory=list,
|
||||||
|
)
|
||||||
deprecation_warning: Optional[str] = Field(
|
deprecation_warning: Optional[str] = Field(
|
||||||
default=None,
|
default=None,
|
||||||
description="If this provider is deprecated, specify the warning message here",
|
description="If this provider is deprecated, specify the warning message here",
|
||||||
|
|
|
@ -72,7 +72,7 @@ def is_tracing_enabled(tracer):
|
||||||
class TelemetryAdapter(TelemetryDatasetMixin, Telemetry):
|
class TelemetryAdapter(TelemetryDatasetMixin, Telemetry):
|
||||||
def __init__(self, config: TelemetryConfig, deps: Dict[str, Any]) -> None:
|
def __init__(self, config: TelemetryConfig, deps: Dict[str, Any]) -> None:
|
||||||
self.config = config
|
self.config = config
|
||||||
self.datasetio_api = deps[Api.datasetio]
|
self.datasetio_api = deps.get(Api.datasetio)
|
||||||
|
|
||||||
resource = Resource.create(
|
resource = Resource.create(
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,7 +24,7 @@ def available_providers() -> List[ProviderSpec]:
|
||||||
"opentelemetry-sdk",
|
"opentelemetry-sdk",
|
||||||
"opentelemetry-exporter-otlp-proto-http",
|
"opentelemetry-exporter-otlp-proto-http",
|
||||||
],
|
],
|
||||||
api_dependencies=[Api.datasetio],
|
optional_api_dependencies=[Api.datasetio],
|
||||||
module="llama_stack.providers.inline.telemetry.meta_reference",
|
module="llama_stack.providers.inline.telemetry.meta_reference",
|
||||||
config_class="llama_stack.providers.inline.telemetry.meta_reference.config.TelemetryConfig",
|
config_class="llama_stack.providers.inline.telemetry.meta_reference.config.TelemetryConfig",
|
||||||
),
|
),
|
||||||
|
|
|
@ -22,6 +22,9 @@ class TelemetryDatasetMixin:
|
||||||
dataset_id: str,
|
dataset_id: str,
|
||||||
max_depth: Optional[int] = None,
|
max_depth: Optional[int] = None,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
if self.datasetio_api is None:
|
||||||
|
raise RuntimeError("DatasetIO API not available")
|
||||||
|
|
||||||
spans = await self.query_spans(
|
spans = await self.query_spans(
|
||||||
attribute_filters=attribute_filters,
|
attribute_filters=attribute_filters,
|
||||||
attributes_to_return=attributes_to_save,
|
attributes_to_return=attributes_to_save,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue