mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-28 19:04:19 +00:00
Add X-LlamaStack-Client-Version, rename ProviderData -> Provider-Data (#735)
Add another header so client SDKs can identify their versions which can be used for immediate detection of possible compatibility issues. A semver mismatch against the wrong server should be immediately flagged and requests should be denied. Also change `X-LlamaStack-ProviderData` to `X-LlamaStack-Provider-Data` since that hyphenation is better.
This commit is contained in:
parent
a5c57cd381
commit
ffc6bd4805
13 changed files with 1281 additions and 152 deletions
|
@ -486,13 +486,22 @@ class Generator:
|
||||||
parameters = path_parameters + query_parameters
|
parameters = path_parameters + query_parameters
|
||||||
parameters += [
|
parameters += [
|
||||||
Parameter(
|
Parameter(
|
||||||
name="X-LlamaStack-ProviderData",
|
name="X-LlamaStack-Provider-Data",
|
||||||
in_=ParameterLocation.Header,
|
in_=ParameterLocation.Header,
|
||||||
description="JSON-encoded provider data which will be made available to the adapter servicing the API",
|
description="JSON-encoded provider data which will be made available to the adapter servicing the API",
|
||||||
required=False,
|
required=False,
|
||||||
schema=self.schema_builder.classdef_to_ref(str),
|
schema=self.schema_builder.classdef_to_ref(str),
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
parameters += [
|
||||||
|
Parameter(
|
||||||
|
name="X-LlamaStack-Client-Version",
|
||||||
|
in_=ParameterLocation.Header,
|
||||||
|
description="Version of the client making the request. This is used to ensure that the client and server are compatible.",
|
||||||
|
required=False,
|
||||||
|
schema=self.schema_builder.classdef_to_ref(str),
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
# data passed in payload
|
# data passed in payload
|
||||||
if op.request_params:
|
if op.request_params:
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -40,8 +40,8 @@ class NeedsRequestProviderData:
|
||||||
|
|
||||||
def set_request_provider_data(headers: Dict[str, str]):
|
def set_request_provider_data(headers: Dict[str, str]):
|
||||||
keys = [
|
keys = [
|
||||||
"X-LlamaStack-ProviderData",
|
"X-LlamaStack-Provider-Data",
|
||||||
"x-llamastack-providerdata",
|
"x-llamastack-provider-data",
|
||||||
]
|
]
|
||||||
for key in keys:
|
for key in keys:
|
||||||
val = headers.get(key, None)
|
val = headers.get(key, None)
|
||||||
|
|
|
@ -156,7 +156,7 @@ class BraintrustScoringImpl(
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.openai_api_key:
|
if provider_data is None or not provider_data.openai_api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass OpenAI API Key in the header X-LlamaStack-ProviderData as { "openai_api_key": <your api key>}'
|
'Pass OpenAI API Key in the header X-LlamaStack-Provider-Data as { "openai_api_key": <your api key>}'
|
||||||
)
|
)
|
||||||
self.config.openai_api_key = provider_data.openai_api_key
|
self.config.openai_api_key = provider_data.openai_api_key
|
||||||
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ class FireworksInferenceAdapter(
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.fireworks_api_key:
|
if provider_data is None or not provider_data.fireworks_api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass Fireworks API Key in the header X-LlamaStack-ProviderData as { "fireworks_api_key": <your api key>}'
|
'Pass Fireworks API Key in the header X-LlamaStack-Provider-Data as { "fireworks_api_key": <your api key>}'
|
||||||
)
|
)
|
||||||
return provider_data.fireworks_api_key
|
return provider_data.fireworks_api_key
|
||||||
|
|
||||||
|
|
|
@ -145,6 +145,6 @@ class GroqInferenceAdapter(Inference, ModelRegistryHelper, NeedsRequestProviderD
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.groq_api_key:
|
if provider_data is None or not provider_data.groq_api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass Groq API Key in the header X-LlamaStack-ProviderData as { "groq_api_key": "<your api key>" }'
|
'Pass Groq API Key in the header X-LlamaStack-Provider-Data as { "groq_api_key": "<your api key>" }'
|
||||||
)
|
)
|
||||||
return Groq(api_key=provider_data.groq_api_key)
|
return Groq(api_key=provider_data.groq_api_key)
|
||||||
|
|
|
@ -135,7 +135,7 @@ class TogetherInferenceAdapter(
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.together_api_key:
|
if provider_data is None or not provider_data.together_api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass Together API Key in the header X-LlamaStack-ProviderData as { "together_api_key": <your api key>}'
|
'Pass Together API Key in the header X-LlamaStack-Provider-Data as { "together_api_key": <your api key>}'
|
||||||
)
|
)
|
||||||
together_api_key = provider_data.together_api_key
|
together_api_key = provider_data.together_api_key
|
||||||
return Together(api_key=together_api_key)
|
return Together(api_key=together_api_key)
|
||||||
|
|
|
@ -46,7 +46,7 @@ class BingSearchToolRuntimeImpl(
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.api_key:
|
if provider_data is None or not provider_data.api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass Bing Search API Key in the header X-LlamaStack-ProviderData as { "api_key": <your api key>}'
|
'Pass Bing Search API Key in the header X-LlamaStack-Provider-Data as { "api_key": <your api key>}'
|
||||||
)
|
)
|
||||||
return provider_data.api_key
|
return provider_data.api_key
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ class BraveSearchToolRuntimeImpl(
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.api_key:
|
if provider_data is None or not provider_data.api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass Search provider\'s API Key in the header X-LlamaStack-ProviderData as { "api_key": <your api key>}'
|
'Pass Search provider\'s API Key in the header X-LlamaStack-Provider-Data as { "api_key": <your api key>}'
|
||||||
)
|
)
|
||||||
return provider_data.api_key
|
return provider_data.api_key
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@ class TavilySearchToolRuntimeImpl(
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.api_key:
|
if provider_data is None or not provider_data.api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass Search provider\'s API Key in the header X-LlamaStack-ProviderData as { "api_key": <your api key>}'
|
'Pass Search provider\'s API Key in the header X-LlamaStack-Provider-Data as { "api_key": <your api key>}'
|
||||||
)
|
)
|
||||||
return provider_data.api_key
|
return provider_data.api_key
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ class WolframAlphaToolRuntimeImpl(
|
||||||
provider_data = self.get_request_provider_data()
|
provider_data = self.get_request_provider_data()
|
||||||
if provider_data is None or not provider_data.api_key:
|
if provider_data is None or not provider_data.api_key:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
'Pass WolframAlpha API Key in the header X-LlamaStack-ProviderData as { "api_key": <your api key>}'
|
'Pass WolframAlpha API Key in the header X-LlamaStack-Provider-Data as { "api_key": <your api key>}'
|
||||||
)
|
)
|
||||||
return provider_data.api_key
|
return provider_data.api_key
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ async def construct_stack_for_test(
|
||||||
|
|
||||||
if provider_data:
|
if provider_data:
|
||||||
set_request_provider_data(
|
set_request_provider_data(
|
||||||
{"X-LlamaStack-ProviderData": json.dumps(provider_data)}
|
{"X-LlamaStack-Provider-Data": json.dumps(provider_data)}
|
||||||
)
|
)
|
||||||
|
|
||||||
return test_stack
|
return test_stack
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue