Skip to content

Commit 7997543

Browse files
authored
Sync updates from stainless branch: hardikjshah/dev (#238)
Add client side resources for - files - vector_stores - embeddings Installed this package and tested llama-stack integration tests - ``` # files pytest -sv --stack-config=http://localhost:8321 tests/integration/files/test_files.py # embeddings pytest -sv --stack-config=http://localhost:8321 tests/integration/inference/test_openai_embeddings.py --embedding-model all-MiniLM-L6-v2 # vector stores pytest -sv --stack-config=http://localhost:8321 tests/integration/vector_io/test_openai_vector_stores.py --embedding-model all-MiniLM-L6-v2 ```
1 parent 3ee41da commit 7997543

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+4991
-40
lines changed

src/llama_stack_client/_base_client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -960,6 +960,9 @@ def request(
960960
if self.custom_auth is not None:
961961
kwargs["auth"] = self.custom_auth
962962

963+
if options.follow_redirects is not None:
964+
kwargs["follow_redirects"] = options.follow_redirects
965+
963966
log.debug("Sending HTTP Request: %s %s", request.method, request.url)
964967

965968
response = None
@@ -1460,6 +1463,9 @@ async def request(
14601463
if self.custom_auth is not None:
14611464
kwargs["auth"] = self.custom_auth
14621465

1466+
if options.follow_redirects is not None:
1467+
kwargs["follow_redirects"] = options.follow_redirects
1468+
14631469
log.debug("Sending HTTP Request: %s %s", request.method, request.url)
14641470

14651471
response = None

src/llama_stack_client/_client.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from ._utils import is_given, get_async_library
2424
from ._version import __version__
2525
from .resources import (
26+
files,
2627
tools,
2728
models,
2829
routes,
@@ -33,13 +34,14 @@
3334
datasets,
3435
inference,
3536
providers,
36-
responses,
3737
telemetry,
3838
vector_io,
3939
benchmarks,
40+
embeddings,
4041
toolgroups,
4142
vector_dbs,
4243
completions,
44+
vector_stores,
4345
scoring_functions,
4446
synthetic_data_generation,
4547
)
@@ -53,6 +55,7 @@
5355
from .resources.chat import chat
5456
from .resources.eval import eval
5557
from .resources.agents import agents
58+
from .resources.responses import responses
5659
from .resources.tool_runtime import tool_runtime
5760
from .resources.post_training import post_training
5861

@@ -78,10 +81,12 @@ class LlamaStackClient(SyncAPIClient):
7881
eval: eval.EvalResource
7982
inspect: inspect.InspectResource
8083
inference: inference.InferenceResource
84+
embeddings: embeddings.EmbeddingsResource
8185
chat: chat.ChatResource
8286
completions: completions.CompletionsResource
8387
vector_io: vector_io.VectorIoResource
8488
vector_dbs: vector_dbs.VectorDBsResource
89+
vector_stores: vector_stores.VectorStoresResource
8590
models: models.ModelsResource
8691
post_training: post_training.PostTrainingResource
8792
providers: providers.ProvidersResource
@@ -93,6 +98,7 @@ class LlamaStackClient(SyncAPIClient):
9398
scoring: scoring.ScoringResource
9499
scoring_functions: scoring_functions.ScoringFunctionsResource
95100
benchmarks: benchmarks.BenchmarksResource
101+
files: files.FilesResource
96102
with_raw_response: LlamaStackClientWithRawResponse
97103
with_streaming_response: LlamaStackClientWithStreamedResponse
98104

@@ -161,10 +167,12 @@ def __init__(
161167
self.eval = eval.EvalResource(self)
162168
self.inspect = inspect.InspectResource(self)
163169
self.inference = inference.InferenceResource(self)
170+
self.embeddings = embeddings.EmbeddingsResource(self)
164171
self.chat = chat.ChatResource(self)
165172
self.completions = completions.CompletionsResource(self)
166173
self.vector_io = vector_io.VectorIoResource(self)
167174
self.vector_dbs = vector_dbs.VectorDBsResource(self)
175+
self.vector_stores = vector_stores.VectorStoresResource(self)
168176
self.models = models.ModelsResource(self)
169177
self.post_training = post_training.PostTrainingResource(self)
170178
self.providers = providers.ProvidersResource(self)
@@ -176,6 +184,7 @@ def __init__(
176184
self.scoring = scoring.ScoringResource(self)
177185
self.scoring_functions = scoring_functions.ScoringFunctionsResource(self)
178186
self.benchmarks = benchmarks.BenchmarksResource(self)
187+
self.files = files.FilesResource(self)
179188
self.with_raw_response = LlamaStackClientWithRawResponse(self)
180189
self.with_streaming_response = LlamaStackClientWithStreamedResponse(self)
181190

@@ -296,10 +305,12 @@ class AsyncLlamaStackClient(AsyncAPIClient):
296305
eval: eval.AsyncEvalResource
297306
inspect: inspect.AsyncInspectResource
298307
inference: inference.AsyncInferenceResource
308+
embeddings: embeddings.AsyncEmbeddingsResource
299309
chat: chat.AsyncChatResource
300310
completions: completions.AsyncCompletionsResource
301311
vector_io: vector_io.AsyncVectorIoResource
302312
vector_dbs: vector_dbs.AsyncVectorDBsResource
313+
vector_stores: vector_stores.AsyncVectorStoresResource
303314
models: models.AsyncModelsResource
304315
post_training: post_training.AsyncPostTrainingResource
305316
providers: providers.AsyncProvidersResource
@@ -311,6 +322,7 @@ class AsyncLlamaStackClient(AsyncAPIClient):
311322
scoring: scoring.AsyncScoringResource
312323
scoring_functions: scoring_functions.AsyncScoringFunctionsResource
313324
benchmarks: benchmarks.AsyncBenchmarksResource
325+
files: files.AsyncFilesResource
314326
with_raw_response: AsyncLlamaStackClientWithRawResponse
315327
with_streaming_response: AsyncLlamaStackClientWithStreamedResponse
316328

@@ -379,10 +391,12 @@ def __init__(
379391
self.eval = eval.AsyncEvalResource(self)
380392
self.inspect = inspect.AsyncInspectResource(self)
381393
self.inference = inference.AsyncInferenceResource(self)
394+
self.embeddings = embeddings.AsyncEmbeddingsResource(self)
382395
self.chat = chat.AsyncChatResource(self)
383396
self.completions = completions.AsyncCompletionsResource(self)
384397
self.vector_io = vector_io.AsyncVectorIoResource(self)
385398
self.vector_dbs = vector_dbs.AsyncVectorDBsResource(self)
399+
self.vector_stores = vector_stores.AsyncVectorStoresResource(self)
386400
self.models = models.AsyncModelsResource(self)
387401
self.post_training = post_training.AsyncPostTrainingResource(self)
388402
self.providers = providers.AsyncProvidersResource(self)
@@ -394,6 +408,7 @@ def __init__(
394408
self.scoring = scoring.AsyncScoringResource(self)
395409
self.scoring_functions = scoring_functions.AsyncScoringFunctionsResource(self)
396410
self.benchmarks = benchmarks.AsyncBenchmarksResource(self)
411+
self.files = files.AsyncFilesResource(self)
397412
self.with_raw_response = AsyncLlamaStackClientWithRawResponse(self)
398413
self.with_streaming_response = AsyncLlamaStackClientWithStreamedResponse(self)
399414

@@ -515,10 +530,12 @@ def __init__(self, client: LlamaStackClient) -> None:
515530
self.eval = eval.EvalResourceWithRawResponse(client.eval)
516531
self.inspect = inspect.InspectResourceWithRawResponse(client.inspect)
517532
self.inference = inference.InferenceResourceWithRawResponse(client.inference)
533+
self.embeddings = embeddings.EmbeddingsResourceWithRawResponse(client.embeddings)
518534
self.chat = chat.ChatResourceWithRawResponse(client.chat)
519535
self.completions = completions.CompletionsResourceWithRawResponse(client.completions)
520536
self.vector_io = vector_io.VectorIoResourceWithRawResponse(client.vector_io)
521537
self.vector_dbs = vector_dbs.VectorDBsResourceWithRawResponse(client.vector_dbs)
538+
self.vector_stores = vector_stores.VectorStoresResourceWithRawResponse(client.vector_stores)
522539
self.models = models.ModelsResourceWithRawResponse(client.models)
523540
self.post_training = post_training.PostTrainingResourceWithRawResponse(client.post_training)
524541
self.providers = providers.ProvidersResourceWithRawResponse(client.providers)
@@ -532,6 +549,7 @@ def __init__(self, client: LlamaStackClient) -> None:
532549
self.scoring = scoring.ScoringResourceWithRawResponse(client.scoring)
533550
self.scoring_functions = scoring_functions.ScoringFunctionsResourceWithRawResponse(client.scoring_functions)
534551
self.benchmarks = benchmarks.BenchmarksResourceWithRawResponse(client.benchmarks)
552+
self.files = files.FilesResourceWithRawResponse(client.files)
535553

536554

537555
class AsyncLlamaStackClientWithRawResponse:
@@ -545,10 +563,12 @@ def __init__(self, client: AsyncLlamaStackClient) -> None:
545563
self.eval = eval.AsyncEvalResourceWithRawResponse(client.eval)
546564
self.inspect = inspect.AsyncInspectResourceWithRawResponse(client.inspect)
547565
self.inference = inference.AsyncInferenceResourceWithRawResponse(client.inference)
566+
self.embeddings = embeddings.AsyncEmbeddingsResourceWithRawResponse(client.embeddings)
548567
self.chat = chat.AsyncChatResourceWithRawResponse(client.chat)
549568
self.completions = completions.AsyncCompletionsResourceWithRawResponse(client.completions)
550569
self.vector_io = vector_io.AsyncVectorIoResourceWithRawResponse(client.vector_io)
551570
self.vector_dbs = vector_dbs.AsyncVectorDBsResourceWithRawResponse(client.vector_dbs)
571+
self.vector_stores = vector_stores.AsyncVectorStoresResourceWithRawResponse(client.vector_stores)
552572
self.models = models.AsyncModelsResourceWithRawResponse(client.models)
553573
self.post_training = post_training.AsyncPostTrainingResourceWithRawResponse(client.post_training)
554574
self.providers = providers.AsyncProvidersResourceWithRawResponse(client.providers)
@@ -564,6 +584,7 @@ def __init__(self, client: AsyncLlamaStackClient) -> None:
564584
client.scoring_functions
565585
)
566586
self.benchmarks = benchmarks.AsyncBenchmarksResourceWithRawResponse(client.benchmarks)
587+
self.files = files.AsyncFilesResourceWithRawResponse(client.files)
567588

568589

569590
class LlamaStackClientWithStreamedResponse:
@@ -577,10 +598,12 @@ def __init__(self, client: LlamaStackClient) -> None:
577598
self.eval = eval.EvalResourceWithStreamingResponse(client.eval)
578599
self.inspect = inspect.InspectResourceWithStreamingResponse(client.inspect)
579600
self.inference = inference.InferenceResourceWithStreamingResponse(client.inference)
601+
self.embeddings = embeddings.EmbeddingsResourceWithStreamingResponse(client.embeddings)
580602
self.chat = chat.ChatResourceWithStreamingResponse(client.chat)
581603
self.completions = completions.CompletionsResourceWithStreamingResponse(client.completions)
582604
self.vector_io = vector_io.VectorIoResourceWithStreamingResponse(client.vector_io)
583605
self.vector_dbs = vector_dbs.VectorDBsResourceWithStreamingResponse(client.vector_dbs)
606+
self.vector_stores = vector_stores.VectorStoresResourceWithStreamingResponse(client.vector_stores)
584607
self.models = models.ModelsResourceWithStreamingResponse(client.models)
585608
self.post_training = post_training.PostTrainingResourceWithStreamingResponse(client.post_training)
586609
self.providers = providers.ProvidersResourceWithStreamingResponse(client.providers)
@@ -596,6 +619,7 @@ def __init__(self, client: LlamaStackClient) -> None:
596619
client.scoring_functions
597620
)
598621
self.benchmarks = benchmarks.BenchmarksResourceWithStreamingResponse(client.benchmarks)
622+
self.files = files.FilesResourceWithStreamingResponse(client.files)
599623

600624

601625
class AsyncLlamaStackClientWithStreamedResponse:
@@ -609,10 +633,12 @@ def __init__(self, client: AsyncLlamaStackClient) -> None:
609633
self.eval = eval.AsyncEvalResourceWithStreamingResponse(client.eval)
610634
self.inspect = inspect.AsyncInspectResourceWithStreamingResponse(client.inspect)
611635
self.inference = inference.AsyncInferenceResourceWithStreamingResponse(client.inference)
636+
self.embeddings = embeddings.AsyncEmbeddingsResourceWithStreamingResponse(client.embeddings)
612637
self.chat = chat.AsyncChatResourceWithStreamingResponse(client.chat)
613638
self.completions = completions.AsyncCompletionsResourceWithStreamingResponse(client.completions)
614639
self.vector_io = vector_io.AsyncVectorIoResourceWithStreamingResponse(client.vector_io)
615640
self.vector_dbs = vector_dbs.AsyncVectorDBsResourceWithStreamingResponse(client.vector_dbs)
641+
self.vector_stores = vector_stores.AsyncVectorStoresResourceWithStreamingResponse(client.vector_stores)
616642
self.models = models.AsyncModelsResourceWithStreamingResponse(client.models)
617643
self.post_training = post_training.AsyncPostTrainingResourceWithStreamingResponse(client.post_training)
618644
self.providers = providers.AsyncProvidersResourceWithStreamingResponse(client.providers)
@@ -630,6 +656,7 @@ def __init__(self, client: AsyncLlamaStackClient) -> None:
630656
client.scoring_functions
631657
)
632658
self.benchmarks = benchmarks.AsyncBenchmarksResourceWithStreamingResponse(client.benchmarks)
659+
self.files = files.AsyncFilesResourceWithStreamingResponse(client.files)
633660

634661

635662
Client = LlamaStackClient

src/llama_stack_client/_files.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def assert_is_file_content(obj: object, *, key: str | None = None) -> None:
3434
if not is_file_content(obj):
3535
prefix = f"Expected entry at `{key}`" if key is not None else f"Expected file input `{obj!r}`"
3636
raise RuntimeError(
37-
f"{prefix} to be bytes, an io.IOBase instance, PathLike or a tuple but received {type(obj)} instead."
37+
f"{prefix} to be bytes, an io.IOBase instance, PathLike or a tuple but received {type(obj)} instead. See https://github.com/stainless-sdks/llama-stack-python/tree/main#file-uploads"
3838
) from None
3939

4040

src/llama_stack_client/_models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,7 @@ class FinalRequestOptionsInput(TypedDict, total=False):
737737
idempotency_key: str
738738
json_data: Body
739739
extra_json: AnyMapping
740+
follow_redirects: bool
740741

741742

742743
@final
@@ -750,6 +751,7 @@ class FinalRequestOptions(pydantic.BaseModel):
750751
files: Union[HttpxRequestFiles, None] = None
751752
idempotency_key: Union[str, None] = None
752753
post_parser: Union[Callable[[Any], Any], NotGiven] = NotGiven()
754+
follow_redirects: Union[bool, None] = None
753755

754756
# It should be noted that we cannot use `json` here as that would override
755757
# a BaseModel method in an incompatible fashion.

src/llama_stack_client/_types.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class RequestOptions(TypedDict, total=False):
100100
params: Query
101101
extra_json: AnyMapping
102102
idempotency_key: str
103+
follow_redirects: bool
103104

104105

105106
# Sentinel class used until PEP 0661 is accepted
@@ -215,3 +216,4 @@ class _GenericAlias(Protocol):
215216

216217
class HttpxSendArgs(TypedDict, total=False):
217218
auth: httpx.Auth
219+
follow_redirects: bool

src/llama_stack_client/resources/__init__.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@
1616
EvalResourceWithStreamingResponse,
1717
AsyncEvalResourceWithStreamingResponse,
1818
)
19+
from .files import (
20+
FilesResource,
21+
AsyncFilesResource,
22+
FilesResourceWithRawResponse,
23+
AsyncFilesResourceWithRawResponse,
24+
FilesResourceWithStreamingResponse,
25+
AsyncFilesResourceWithStreamingResponse,
26+
)
1927
from .tools import (
2028
ToolsResource,
2129
AsyncToolsResource,
@@ -136,6 +144,14 @@
136144
BenchmarksResourceWithStreamingResponse,
137145
AsyncBenchmarksResourceWithStreamingResponse,
138146
)
147+
from .embeddings import (
148+
EmbeddingsResource,
149+
AsyncEmbeddingsResource,
150+
EmbeddingsResourceWithRawResponse,
151+
AsyncEmbeddingsResourceWithRawResponse,
152+
EmbeddingsResourceWithStreamingResponse,
153+
AsyncEmbeddingsResourceWithStreamingResponse,
154+
)
139155
from .toolgroups import (
140156
ToolgroupsResource,
141157
AsyncToolgroupsResource,
@@ -176,6 +192,14 @@
176192
PostTrainingResourceWithStreamingResponse,
177193
AsyncPostTrainingResourceWithStreamingResponse,
178194
)
195+
from .vector_stores import (
196+
VectorStoresResource,
197+
AsyncVectorStoresResource,
198+
VectorStoresResourceWithRawResponse,
199+
AsyncVectorStoresResourceWithRawResponse,
200+
VectorStoresResourceWithStreamingResponse,
201+
AsyncVectorStoresResourceWithStreamingResponse,
202+
)
179203
from .scoring_functions import (
180204
ScoringFunctionsResource,
181205
AsyncScoringFunctionsResource,
@@ -248,6 +272,12 @@
248272
"AsyncInferenceResourceWithRawResponse",
249273
"InferenceResourceWithStreamingResponse",
250274
"AsyncInferenceResourceWithStreamingResponse",
275+
"EmbeddingsResource",
276+
"AsyncEmbeddingsResource",
277+
"EmbeddingsResourceWithRawResponse",
278+
"AsyncEmbeddingsResourceWithRawResponse",
279+
"EmbeddingsResourceWithStreamingResponse",
280+
"AsyncEmbeddingsResourceWithStreamingResponse",
251281
"ChatResource",
252282
"AsyncChatResource",
253283
"ChatResourceWithRawResponse",
@@ -272,6 +302,12 @@
272302
"AsyncVectorDBsResourceWithRawResponse",
273303
"VectorDBsResourceWithStreamingResponse",
274304
"AsyncVectorDBsResourceWithStreamingResponse",
305+
"VectorStoresResource",
306+
"AsyncVectorStoresResource",
307+
"VectorStoresResourceWithRawResponse",
308+
"AsyncVectorStoresResourceWithRawResponse",
309+
"VectorStoresResourceWithStreamingResponse",
310+
"AsyncVectorStoresResourceWithStreamingResponse",
275311
"ModelsResource",
276312
"AsyncModelsResource",
277313
"ModelsResourceWithRawResponse",
@@ -338,4 +374,10 @@
338374
"AsyncBenchmarksResourceWithRawResponse",
339375
"BenchmarksResourceWithStreamingResponse",
340376
"AsyncBenchmarksResourceWithStreamingResponse",
377+
"FilesResource",
378+
"AsyncFilesResource",
379+
"FilesResourceWithRawResponse",
380+
"AsyncFilesResourceWithRawResponse",
381+
"FilesResourceWithStreamingResponse",
382+
"AsyncFilesResourceWithStreamingResponse",
341383
]

0 commit comments

Comments
 (0)