diff --git a/.stats.yml b/.stats.yml index 06d05485..bc2174ee 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,2 +1,2 @@ configured_endpoints: 23 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-650f7cc87f2d7ce09046fff9ce81bb72053420165b687d1c5ef13a30ff9b4073.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-aa9836293a0be28e002df06d47ab3777622f1ab916e4e5f076e2f6dfaaaf870c.yml diff --git a/api.md b/api.md index 0b4fe96a..3df1432c 100644 --- a/api.md +++ b/api.md @@ -16,16 +16,18 @@ Methods: ## Parse +### Jobs + Types: ```python -from mixedbread.types.document_ai import ParseCreateJobResponse, ParseRetrieveJobResponse +from mixedbread.types.document_ai.parse import JobCreateResponse, JobRetrieveResponse ``` Methods: -- client.document_ai.parse.create_job(\*\*params) -> ParseCreateJobResponse -- client.document_ai.parse.retrieve_job(job_id) -> ParseRetrieveJobResponse +- client.document_ai.parse.jobs.create(\*\*params) -> JobCreateResponse +- client.document_ai.parse.jobs.retrieve(job_id) -> JobRetrieveResponse # Embeddings @@ -75,11 +77,11 @@ Types: ```python from mixedbread.types import ( SearchParams, - SearchResponse, VectorStore, VectorStoreListResponse, VectorStoreDeleteResponse, - VectorStoreQuestionAnsweringResponse, + VectorStoreQaResponse, + VectorStoreSearchResponse, ) ``` @@ -90,8 +92,8 @@ Methods: - client.vector_stores.update(vector_store_id, \*\*params) -> VectorStore - client.vector_stores.list(\*\*params) -> VectorStoreListResponse - client.vector_stores.delete(vector_store_id) -> VectorStoreDeleteResponse -- client.vector_stores.question_answering(\*\*params) -> object -- client.vector_stores.search(\*\*params) -> SearchResponse +- client.vector_stores.qa(\*\*params) -> object +- client.vector_stores.search(\*\*params) -> VectorStoreSearchResponse ## Files diff --git a/src/mixedbread/resources/document_ai/document_ai.py b/src/mixedbread/resources/document_ai/document_ai.py index af35dce6..758b28a0 100644 --- a/src/mixedbread/resources/document_ai/document_ai.py +++ b/src/mixedbread/resources/document_ai/document_ai.py @@ -2,7 +2,9 @@ from __future__ import annotations -from .parse import ( +from ..._compat import cached_property +from ..._resource import SyncAPIResource, AsyncAPIResource +from .parse.parse import ( ParseResource, AsyncParseResource, ParseResourceWithRawResponse, @@ -10,8 +12,6 @@ ParseResourceWithStreamingResponse, AsyncParseResourceWithStreamingResponse, ) -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource __all__ = ["DocumentAIResource", "AsyncDocumentAIResource"] diff --git a/src/mixedbread/resources/document_ai/parse/__init__.py b/src/mixedbread/resources/document_ai/parse/__init__.py new file mode 100644 index 00000000..4a42d805 --- /dev/null +++ b/src/mixedbread/resources/document_ai/parse/__init__.py @@ -0,0 +1,33 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from .jobs import ( + JobsResource, + AsyncJobsResource, + JobsResourceWithRawResponse, + AsyncJobsResourceWithRawResponse, + JobsResourceWithStreamingResponse, + AsyncJobsResourceWithStreamingResponse, +) +from .parse import ( + ParseResource, + AsyncParseResource, + ParseResourceWithRawResponse, + AsyncParseResourceWithRawResponse, + ParseResourceWithStreamingResponse, + AsyncParseResourceWithStreamingResponse, +) + +__all__ = [ + "JobsResource", + "AsyncJobsResource", + "JobsResourceWithRawResponse", + "AsyncJobsResourceWithRawResponse", + "JobsResourceWithStreamingResponse", + "AsyncJobsResourceWithStreamingResponse", + "ParseResource", + "AsyncParseResource", + "ParseResourceWithRawResponse", + "AsyncParseResourceWithRawResponse", + "ParseResourceWithStreamingResponse", + "AsyncParseResourceWithStreamingResponse", +] diff --git a/src/mixedbread/resources/document_ai/parse.py b/src/mixedbread/resources/document_ai/parse/jobs.py similarity index 74% rename from src/mixedbread/resources/document_ai/parse.py rename to src/mixedbread/resources/document_ai/parse/jobs.py index bc171afb..7eca8222 100644 --- a/src/mixedbread/resources/document_ai/parse.py +++ b/src/mixedbread/resources/document_ai/parse/jobs.py @@ -7,48 +7,48 @@ import httpx -from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven -from ..._utils import ( +from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven +from ...._utils import ( maybe_transform, async_maybe_transform, ) -from ..._compat import cached_property -from ..._resource import SyncAPIResource, AsyncAPIResource -from ..._response import ( +from ...._compat import cached_property +from ...._resource import SyncAPIResource, AsyncAPIResource +from ...._response import ( to_raw_response_wrapper, to_streamed_response_wrapper, async_to_raw_response_wrapper, async_to_streamed_response_wrapper, ) -from ..._base_client import make_request_options -from ...types.document_ai import parse_create_job_params -from ...types.document_ai.parse_create_job_response import ParseCreateJobResponse -from ...types.document_ai.parse_retrieve_job_response import ParseRetrieveJobResponse +from ...._base_client import make_request_options +from ....types.document_ai.parse import job_create_params +from ....types.document_ai.parse.job_create_response import JobCreateResponse +from ....types.document_ai.parse.job_retrieve_response import JobRetrieveResponse -__all__ = ["ParseResource", "AsyncParseResource"] +__all__ = ["JobsResource", "AsyncJobsResource"] -class ParseResource(SyncAPIResource): +class JobsResource(SyncAPIResource): @cached_property - def with_raw_response(self) -> ParseResourceWithRawResponse: + def with_raw_response(self) -> JobsResourceWithRawResponse: """ This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#accessing-raw-response-data-eg-headers """ - return ParseResourceWithRawResponse(self) + return JobsResourceWithRawResponse(self) @cached_property - def with_streaming_response(self) -> ParseResourceWithStreamingResponse: + def with_streaming_response(self) -> JobsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#with_streaming_response """ - return ParseResourceWithStreamingResponse(self) + return JobsResourceWithStreamingResponse(self) - def create_job( + def create( self, *, file_id: str, @@ -78,7 +78,7 @@ def create_job( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> ParseCreateJobResponse: + ) -> JobCreateResponse: """ Start a parse job for the provided file. @@ -104,7 +104,7 @@ def create_job( timeout: Override the client-level default timeout for this request, in seconds """ return cast( - ParseCreateJobResponse, + JobCreateResponse, self._post( "/v1/document-ai/parse", body=maybe_transform( @@ -114,18 +114,16 @@ def create_job( "element_types": element_types, "return_format": return_format, }, - parse_create_job_params.ParseCreateJobParams, + job_create_params.JobCreateParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=cast( - Any, ParseCreateJobResponse - ), # Union types cannot be passed in as arguments in the type system + cast_to=cast(Any, JobCreateResponse), # Union types cannot be passed in as arguments in the type system ), ) - def retrieve_job( + def retrieve( self, job_id: str, *, @@ -135,7 +133,7 @@ def retrieve_job( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> ParseRetrieveJobResponse: + ) -> JobRetrieveResponse: """ Get detailed information about a specific parse job. @@ -157,40 +155,40 @@ def retrieve_job( if not job_id: raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}") return cast( - ParseRetrieveJobResponse, + JobRetrieveResponse, self._get( f"/v1/document-ai/parse/{job_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), cast_to=cast( - Any, ParseRetrieveJobResponse + Any, JobRetrieveResponse ), # Union types cannot be passed in as arguments in the type system ), ) -class AsyncParseResource(AsyncAPIResource): +class AsyncJobsResource(AsyncAPIResource): @cached_property - def with_raw_response(self) -> AsyncParseResourceWithRawResponse: + def with_raw_response(self) -> AsyncJobsResourceWithRawResponse: """ This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#accessing-raw-response-data-eg-headers """ - return AsyncParseResourceWithRawResponse(self) + return AsyncJobsResourceWithRawResponse(self) @cached_property - def with_streaming_response(self) -> AsyncParseResourceWithStreamingResponse: + def with_streaming_response(self) -> AsyncJobsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#with_streaming_response """ - return AsyncParseResourceWithStreamingResponse(self) + return AsyncJobsResourceWithStreamingResponse(self) - async def create_job( + async def create( self, *, file_id: str, @@ -220,7 +218,7 @@ async def create_job( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> ParseCreateJobResponse: + ) -> JobCreateResponse: """ Start a parse job for the provided file. @@ -246,7 +244,7 @@ async def create_job( timeout: Override the client-level default timeout for this request, in seconds """ return cast( - ParseCreateJobResponse, + JobCreateResponse, await self._post( "/v1/document-ai/parse", body=await async_maybe_transform( @@ -256,18 +254,16 @@ async def create_job( "element_types": element_types, "return_format": return_format, }, - parse_create_job_params.ParseCreateJobParams, + job_create_params.JobCreateParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=cast( - Any, ParseCreateJobResponse - ), # Union types cannot be passed in as arguments in the type system + cast_to=cast(Any, JobCreateResponse), # Union types cannot be passed in as arguments in the type system ), ) - async def retrieve_job( + async def retrieve( self, job_id: str, *, @@ -277,7 +273,7 @@ async def retrieve_job( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> ParseRetrieveJobResponse: + ) -> JobRetrieveResponse: """ Get detailed information about a specific parse job. @@ -299,62 +295,62 @@ async def retrieve_job( if not job_id: raise ValueError(f"Expected a non-empty value for `job_id` but received {job_id!r}") return cast( - ParseRetrieveJobResponse, + JobRetrieveResponse, await self._get( f"/v1/document-ai/parse/{job_id}", options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), cast_to=cast( - Any, ParseRetrieveJobResponse + Any, JobRetrieveResponse ), # Union types cannot be passed in as arguments in the type system ), ) -class ParseResourceWithRawResponse: - def __init__(self, parse: ParseResource) -> None: - self._parse = parse +class JobsResourceWithRawResponse: + def __init__(self, jobs: JobsResource) -> None: + self._jobs = jobs - self.create_job = to_raw_response_wrapper( - parse.create_job, + self.create = to_raw_response_wrapper( + jobs.create, ) - self.retrieve_job = to_raw_response_wrapper( - parse.retrieve_job, + self.retrieve = to_raw_response_wrapper( + jobs.retrieve, ) -class AsyncParseResourceWithRawResponse: - def __init__(self, parse: AsyncParseResource) -> None: - self._parse = parse +class AsyncJobsResourceWithRawResponse: + def __init__(self, jobs: AsyncJobsResource) -> None: + self._jobs = jobs - self.create_job = async_to_raw_response_wrapper( - parse.create_job, + self.create = async_to_raw_response_wrapper( + jobs.create, ) - self.retrieve_job = async_to_raw_response_wrapper( - parse.retrieve_job, + self.retrieve = async_to_raw_response_wrapper( + jobs.retrieve, ) -class ParseResourceWithStreamingResponse: - def __init__(self, parse: ParseResource) -> None: - self._parse = parse +class JobsResourceWithStreamingResponse: + def __init__(self, jobs: JobsResource) -> None: + self._jobs = jobs - self.create_job = to_streamed_response_wrapper( - parse.create_job, + self.create = to_streamed_response_wrapper( + jobs.create, ) - self.retrieve_job = to_streamed_response_wrapper( - parse.retrieve_job, + self.retrieve = to_streamed_response_wrapper( + jobs.retrieve, ) -class AsyncParseResourceWithStreamingResponse: - def __init__(self, parse: AsyncParseResource) -> None: - self._parse = parse +class AsyncJobsResourceWithStreamingResponse: + def __init__(self, jobs: AsyncJobsResource) -> None: + self._jobs = jobs - self.create_job = async_to_streamed_response_wrapper( - parse.create_job, + self.create = async_to_streamed_response_wrapper( + jobs.create, ) - self.retrieve_job = async_to_streamed_response_wrapper( - parse.retrieve_job, + self.retrieve = async_to_streamed_response_wrapper( + jobs.retrieve, ) diff --git a/src/mixedbread/resources/document_ai/parse/parse.py b/src/mixedbread/resources/document_ai/parse/parse.py new file mode 100644 index 00000000..274a4760 --- /dev/null +++ b/src/mixedbread/resources/document_ai/parse/parse.py @@ -0,0 +1,102 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from .jobs import ( + JobsResource, + AsyncJobsResource, + JobsResourceWithRawResponse, + AsyncJobsResourceWithRawResponse, + JobsResourceWithStreamingResponse, + AsyncJobsResourceWithStreamingResponse, +) +from ...._compat import cached_property +from ...._resource import SyncAPIResource, AsyncAPIResource + +__all__ = ["ParseResource", "AsyncParseResource"] + + +class ParseResource(SyncAPIResource): + @cached_property + def jobs(self) -> JobsResource: + return JobsResource(self._client) + + @cached_property + def with_raw_response(self) -> ParseResourceWithRawResponse: + """ + This property can be used as a prefix for any HTTP method call to return the + the raw response object instead of the parsed content. + + For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#accessing-raw-response-data-eg-headers + """ + return ParseResourceWithRawResponse(self) + + @cached_property + def with_streaming_response(self) -> ParseResourceWithStreamingResponse: + """ + An alternative to `.with_raw_response` that doesn't eagerly read the response body. + + For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#with_streaming_response + """ + return ParseResourceWithStreamingResponse(self) + + +class AsyncParseResource(AsyncAPIResource): + @cached_property + def jobs(self) -> AsyncJobsResource: + return AsyncJobsResource(self._client) + + @cached_property + def with_raw_response(self) -> AsyncParseResourceWithRawResponse: + """ + This property can be used as a prefix for any HTTP method call to return the + the raw response object instead of the parsed content. + + For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#accessing-raw-response-data-eg-headers + """ + return AsyncParseResourceWithRawResponse(self) + + @cached_property + def with_streaming_response(self) -> AsyncParseResourceWithStreamingResponse: + """ + An alternative to `.with_raw_response` that doesn't eagerly read the response body. + + For more information, see https://www.github.com/mixedbread-ai/mixedbread-python#with_streaming_response + """ + return AsyncParseResourceWithStreamingResponse(self) + + +class ParseResourceWithRawResponse: + def __init__(self, parse: ParseResource) -> None: + self._parse = parse + + @cached_property + def jobs(self) -> JobsResourceWithRawResponse: + return JobsResourceWithRawResponse(self._parse.jobs) + + +class AsyncParseResourceWithRawResponse: + def __init__(self, parse: AsyncParseResource) -> None: + self._parse = parse + + @cached_property + def jobs(self) -> AsyncJobsResourceWithRawResponse: + return AsyncJobsResourceWithRawResponse(self._parse.jobs) + + +class ParseResourceWithStreamingResponse: + def __init__(self, parse: ParseResource) -> None: + self._parse = parse + + @cached_property + def jobs(self) -> JobsResourceWithStreamingResponse: + return JobsResourceWithStreamingResponse(self._parse.jobs) + + +class AsyncParseResourceWithStreamingResponse: + def __init__(self, parse: AsyncParseResource) -> None: + self._parse = parse + + @cached_property + def jobs(self) -> AsyncJobsResourceWithStreamingResponse: + return AsyncJobsResourceWithStreamingResponse(self._parse.jobs) diff --git a/src/mixedbread/resources/vector_stores/vector_stores.py b/src/mixedbread/resources/vector_stores/vector_stores.py index e890f8b2..31961623 100644 --- a/src/mixedbread/resources/vector_stores/vector_stores.py +++ b/src/mixedbread/resources/vector_stores/vector_stores.py @@ -15,11 +15,11 @@ AsyncFilesResourceWithStreamingResponse, ) from ...types import ( + vector_store_qa_params, vector_store_list_params, vector_store_create_params, vector_store_search_params, vector_store_update_params, - vector_store_question_answering_params, ) from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven from ..._utils import ( @@ -36,9 +36,9 @@ ) from ..._base_client import make_request_options from ...types.vector_store import VectorStore -from ...types.search_response import SearchResponse from ...types.vector_store_list_response import VectorStoreListResponse from ...types.vector_store_delete_response import VectorStoreDeleteResponse +from ...types.vector_store_search_response import VectorStoreSearchResponse __all__ = ["VectorStoresResource", "AsyncVectorStoresResource"] @@ -317,15 +317,15 @@ def delete( cast_to=VectorStoreDeleteResponse, ) - def question_answering( + def qa( self, *, vector_store_ids: List[str], - filters: Optional[vector_store_question_answering_params.Filters] | NotGiven = NOT_GIVEN, - pagination: vector_store_question_answering_params.Pagination | NotGiven = NOT_GIVEN, - qa_options: vector_store_question_answering_params.QaOptions | NotGiven = NOT_GIVEN, + filters: Optional[vector_store_qa_params.Filters] | NotGiven = NOT_GIVEN, + pagination: vector_store_qa_params.Pagination | NotGiven = NOT_GIVEN, + qa_options: vector_store_qa_params.QaOptions | NotGiven = NOT_GIVEN, query: str | NotGiven = NOT_GIVEN, - search_options: vector_store_question_answering_params.SearchOptions | NotGiven = NOT_GIVEN, + search_options: vector_store_qa_params.SearchOptions | NotGiven = NOT_GIVEN, stream: bool | NotGiven = NOT_GIVEN, # 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. @@ -373,7 +373,7 @@ def question_answering( "search_options": search_options, "stream": stream, }, - vector_store_question_answering_params.VectorStoreQuestionAnsweringParams, + vector_store_qa_params.VectorStoreQaParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout @@ -395,7 +395,7 @@ def search( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> SearchResponse: + ) -> VectorStoreSearchResponse: """ Perform a search based on the provided query. @@ -438,7 +438,7 @@ def search( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=SearchResponse, + cast_to=VectorStoreSearchResponse, ) @@ -716,15 +716,15 @@ async def delete( cast_to=VectorStoreDeleteResponse, ) - async def question_answering( + async def qa( self, *, vector_store_ids: List[str], - filters: Optional[vector_store_question_answering_params.Filters] | NotGiven = NOT_GIVEN, - pagination: vector_store_question_answering_params.Pagination | NotGiven = NOT_GIVEN, - qa_options: vector_store_question_answering_params.QaOptions | NotGiven = NOT_GIVEN, + filters: Optional[vector_store_qa_params.Filters] | NotGiven = NOT_GIVEN, + pagination: vector_store_qa_params.Pagination | NotGiven = NOT_GIVEN, + qa_options: vector_store_qa_params.QaOptions | NotGiven = NOT_GIVEN, query: str | NotGiven = NOT_GIVEN, - search_options: vector_store_question_answering_params.SearchOptions | NotGiven = NOT_GIVEN, + search_options: vector_store_qa_params.SearchOptions | NotGiven = NOT_GIVEN, stream: bool | NotGiven = NOT_GIVEN, # 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. @@ -772,7 +772,7 @@ async def question_answering( "search_options": search_options, "stream": stream, }, - vector_store_question_answering_params.VectorStoreQuestionAnsweringParams, + vector_store_qa_params.VectorStoreQaParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout @@ -794,7 +794,7 @@ async def search( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> SearchResponse: + ) -> VectorStoreSearchResponse: """ Perform a search based on the provided query. @@ -837,7 +837,7 @@ async def search( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=SearchResponse, + cast_to=VectorStoreSearchResponse, ) @@ -860,8 +860,8 @@ def __init__(self, vector_stores: VectorStoresResource) -> None: self.delete = to_raw_response_wrapper( vector_stores.delete, ) - self.question_answering = to_raw_response_wrapper( - vector_stores.question_answering, + self.qa = to_raw_response_wrapper( + vector_stores.qa, ) self.search = to_raw_response_wrapper( vector_stores.search, @@ -891,8 +891,8 @@ def __init__(self, vector_stores: AsyncVectorStoresResource) -> None: self.delete = async_to_raw_response_wrapper( vector_stores.delete, ) - self.question_answering = async_to_raw_response_wrapper( - vector_stores.question_answering, + self.qa = async_to_raw_response_wrapper( + vector_stores.qa, ) self.search = async_to_raw_response_wrapper( vector_stores.search, @@ -922,8 +922,8 @@ def __init__(self, vector_stores: VectorStoresResource) -> None: self.delete = to_streamed_response_wrapper( vector_stores.delete, ) - self.question_answering = to_streamed_response_wrapper( - vector_stores.question_answering, + self.qa = to_streamed_response_wrapper( + vector_stores.qa, ) self.search = to_streamed_response_wrapper( vector_stores.search, @@ -953,8 +953,8 @@ def __init__(self, vector_stores: AsyncVectorStoresResource) -> None: self.delete = async_to_streamed_response_wrapper( vector_stores.delete, ) - self.question_answering = async_to_streamed_response_wrapper( - vector_stores.question_answering, + self.qa = async_to_streamed_response_wrapper( + vector_stores.qa, ) self.search = async_to_streamed_response_wrapper( vector_stores.search, diff --git a/src/mixedbread/types/__init__.py b/src/mixedbread/types/__init__.py index d64379e8..87d5d5ed 100644 --- a/src/mixedbread/types/__init__.py +++ b/src/mixedbread/types/__init__.py @@ -8,13 +8,13 @@ from .info_response import InfoResponse as InfoResponse from .embed_response import EmbedResponse as EmbedResponse from .rerank_response import RerankResponse as RerankResponse -from .search_response import SearchResponse as SearchResponse from .file_list_params import FileListParams as FileListParams from .file_create_params import FileCreateParams as FileCreateParams from .file_list_response import FileListResponse as FileListResponse from .file_update_params import FileUpdateParams as FileUpdateParams from .client_embed_params import ClientEmbedParams as ClientEmbedParams from .client_rerank_params import ClientRerankParams as ClientRerankParams +from .vector_store_qa_params import VectorStoreQaParams as VectorStoreQaParams from .embedding_create_params import EmbeddingCreateParams as EmbeddingCreateParams from .reranking_create_params import RerankingCreateParams as RerankingCreateParams from .vector_store_list_params import VectorStoreListParams as VectorStoreListParams @@ -25,6 +25,4 @@ from .vector_store_search_params import VectorStoreSearchParams as VectorStoreSearchParams from .vector_store_update_params import VectorStoreUpdateParams as VectorStoreUpdateParams from .vector_store_delete_response import VectorStoreDeleteResponse as VectorStoreDeleteResponse -from .vector_store_question_answering_params import ( - VectorStoreQuestionAnsweringParams as VectorStoreQuestionAnsweringParams, -) +from .vector_store_search_response import VectorStoreSearchResponse as VectorStoreSearchResponse diff --git a/src/mixedbread/types/document_ai/__init__.py b/src/mixedbread/types/document_ai/__init__.py index 709be7be..f8ee8b14 100644 --- a/src/mixedbread/types/document_ai/__init__.py +++ b/src/mixedbread/types/document_ai/__init__.py @@ -1,7 +1,3 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. from __future__ import annotations - -from .parse_create_job_params import ParseCreateJobParams as ParseCreateJobParams -from .parse_create_job_response import ParseCreateJobResponse as ParseCreateJobResponse -from .parse_retrieve_job_response import ParseRetrieveJobResponse as ParseRetrieveJobResponse diff --git a/src/mixedbread/types/document_ai/parse/__init__.py b/src/mixedbread/types/document_ai/parse/__init__.py new file mode 100644 index 00000000..1b278c49 --- /dev/null +++ b/src/mixedbread/types/document_ai/parse/__init__.py @@ -0,0 +1,7 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from .job_create_params import JobCreateParams as JobCreateParams +from .job_create_response import JobCreateResponse as JobCreateResponse +from .job_retrieve_response import JobRetrieveResponse as JobRetrieveResponse diff --git a/src/mixedbread/types/document_ai/parse_create_job_params.py b/src/mixedbread/types/document_ai/parse/job_create_params.py similarity index 91% rename from src/mixedbread/types/document_ai/parse_create_job_params.py rename to src/mixedbread/types/document_ai/parse/job_create_params.py index cc230849..a0d4602d 100644 --- a/src/mixedbread/types/document_ai/parse_create_job_params.py +++ b/src/mixedbread/types/document_ai/parse/job_create_params.py @@ -5,10 +5,10 @@ from typing import List, Optional from typing_extensions import Literal, Required, TypedDict -__all__ = ["ParseCreateJobParams"] +__all__ = ["JobCreateParams"] -class ParseCreateJobParams(TypedDict, total=False): +class JobCreateParams(TypedDict, total=False): file_id: Required[str] """The ID of the file to parse""" diff --git a/src/mixedbread/types/document_ai/parse_create_job_response.py b/src/mixedbread/types/document_ai/parse/job_create_response.py similarity index 96% rename from src/mixedbread/types/document_ai/parse_create_job_response.py rename to src/mixedbread/types/document_ai/parse/job_create_response.py index c583524e..8ef119b6 100644 --- a/src/mixedbread/types/document_ai/parse_create_job_response.py +++ b/src/mixedbread/types/document_ai/parse/job_create_response.py @@ -5,10 +5,10 @@ from datetime import datetime from typing_extensions import Literal, TypeAlias -from ..._models import BaseModel +from ...._models import BaseModel __all__ = [ - "ParseCreateJobResponse", + "JobCreateResponse", "RunningJob", "FailedJob", "SuccessfulParsingJob", @@ -158,4 +158,4 @@ class SuccessfulParsingJob(BaseModel): """The status of the job""" -ParseCreateJobResponse: TypeAlias = Union[RunningJob, FailedJob, SuccessfulParsingJob] +JobCreateResponse: TypeAlias = Union[RunningJob, FailedJob, SuccessfulParsingJob] diff --git a/src/mixedbread/types/document_ai/parse_retrieve_job_response.py b/src/mixedbread/types/document_ai/parse/job_retrieve_response.py similarity index 96% rename from src/mixedbread/types/document_ai/parse_retrieve_job_response.py rename to src/mixedbread/types/document_ai/parse/job_retrieve_response.py index 7afbd803..c1bb798f 100644 --- a/src/mixedbread/types/document_ai/parse_retrieve_job_response.py +++ b/src/mixedbread/types/document_ai/parse/job_retrieve_response.py @@ -5,10 +5,10 @@ from datetime import datetime from typing_extensions import Literal, TypeAlias -from ..._models import BaseModel +from ...._models import BaseModel __all__ = [ - "ParseRetrieveJobResponse", + "JobRetrieveResponse", "RunningJob", "FailedJob", "SuccessfulParsingJob", @@ -158,4 +158,4 @@ class SuccessfulParsingJob(BaseModel): """The status of the job""" -ParseRetrieveJobResponse: TypeAlias = Union[RunningJob, FailedJob, SuccessfulParsingJob] +JobRetrieveResponse: TypeAlias = Union[RunningJob, FailedJob, SuccessfulParsingJob] diff --git a/src/mixedbread/types/vector_store_question_answering_params.py b/src/mixedbread/types/vector_store_qa_params.py similarity index 92% rename from src/mixedbread/types/vector_store_question_answering_params.py rename to src/mixedbread/types/vector_store_qa_params.py index 76c31eda..dfb28c93 100644 --- a/src/mixedbread/types/vector_store_question_answering_params.py +++ b/src/mixedbread/types/vector_store_qa_params.py @@ -6,7 +6,7 @@ from typing_extensions import Literal, Required, TypeAlias, TypedDict __all__ = [ - "VectorStoreQuestionAnsweringParams", + "VectorStoreQaParams", "Filters", "FiltersFilter", "FiltersFilterAll", @@ -27,12 +27,11 @@ "FiltersUnionMember2Condition", "Pagination", "QaOptions", - "QaOptionsPrompts", "SearchOptions", ] -class VectorStoreQuestionAnsweringParams(TypedDict, total=False): +class VectorStoreQaParams(TypedDict, total=False): vector_store_ids: Required[List[str]] """IDs of vector stores to search""" @@ -199,27 +198,10 @@ class Pagination(TypedDict, total=False): """Cursor from which to start returning items""" -class QaOptionsPrompts(TypedDict, total=False): - citation_prompt: Optional[str] - """Citation prompt""" - - system_prompt: Optional[str] - """System prompt""" - - user_prompt: Optional[str] - """User prompt""" - - class QaOptions(TypedDict, total=False): cite: bool """Whether to use citations""" - prompts: QaOptionsPrompts - """Prompts used for question answering""" - - return_sources: bool - """Whether to return sources""" - class SearchOptions(TypedDict, total=False): return_chunks: bool diff --git a/src/mixedbread/types/search_response.py b/src/mixedbread/types/vector_store_search_response.py similarity index 96% rename from src/mixedbread/types/search_response.py rename to src/mixedbread/types/vector_store_search_response.py index 231636c6..4476951a 100644 --- a/src/mixedbread/types/search_response.py +++ b/src/mixedbread/types/vector_store_search_response.py @@ -7,7 +7,7 @@ from .._models import BaseModel __all__ = [ - "SearchResponse", + "VectorStoreSearchResponse", "Data", "DataChunk", "DataChunkValue", @@ -93,7 +93,7 @@ class Pagination(BaseModel): """Total number of items available""" -class SearchResponse(BaseModel): +class VectorStoreSearchResponse(BaseModel): data: List[Data] pagination: Pagination diff --git a/tests/api_resources/document_ai/parse/__init__.py b/tests/api_resources/document_ai/parse/__init__.py new file mode 100644 index 00000000..fd8019a9 --- /dev/null +++ b/tests/api_resources/document_ai/parse/__init__.py @@ -0,0 +1 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. diff --git a/tests/api_resources/document_ai/parse/test_jobs.py b/tests/api_resources/document_ai/parse/test_jobs.py new file mode 100644 index 00000000..2a7477ea --- /dev/null +++ b/tests/api_resources/document_ai/parse/test_jobs.py @@ -0,0 +1,180 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +import os +from typing import Any, cast + +import pytest + +from mixedbread import Mixedbread, AsyncMixedbread +from tests.utils import assert_matches_type +from mixedbread.types.document_ai.parse import JobCreateResponse, JobRetrieveResponse + +base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") + + +class TestJobs: + parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) + + @parametrize + def test_method_create(self, client: Mixedbread) -> None: + job = client.document_ai.parse.jobs.create( + file_id="file_id", + ) + assert_matches_type(JobCreateResponse, job, path=["response"]) + + @parametrize + def test_method_create_with_all_params(self, client: Mixedbread) -> None: + job = client.document_ai.parse.jobs.create( + file_id="file_id", + chunking_strategy="page", + element_types=["caption"], + return_format="html", + ) + assert_matches_type(JobCreateResponse, job, path=["response"]) + + @parametrize + def test_raw_response_create(self, client: Mixedbread) -> None: + response = client.document_ai.parse.jobs.with_raw_response.create( + file_id="file_id", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + job = response.parse() + assert_matches_type(JobCreateResponse, job, path=["response"]) + + @parametrize + def test_streaming_response_create(self, client: Mixedbread) -> None: + with client.document_ai.parse.jobs.with_streaming_response.create( + file_id="file_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + job = response.parse() + assert_matches_type(JobCreateResponse, job, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @parametrize + def test_method_retrieve(self, client: Mixedbread) -> None: + job = client.document_ai.parse.jobs.retrieve( + "job_id", + ) + assert_matches_type(JobRetrieveResponse, job, path=["response"]) + + @parametrize + def test_raw_response_retrieve(self, client: Mixedbread) -> None: + response = client.document_ai.parse.jobs.with_raw_response.retrieve( + "job_id", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + job = response.parse() + assert_matches_type(JobRetrieveResponse, job, path=["response"]) + + @parametrize + def test_streaming_response_retrieve(self, client: Mixedbread) -> None: + with client.document_ai.parse.jobs.with_streaming_response.retrieve( + "job_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + job = response.parse() + assert_matches_type(JobRetrieveResponse, job, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @parametrize + def test_path_params_retrieve(self, client: Mixedbread) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"): + client.document_ai.parse.jobs.with_raw_response.retrieve( + "", + ) + + +class TestAsyncJobs: + parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"]) + + @parametrize + async def test_method_create(self, async_client: AsyncMixedbread) -> None: + job = await async_client.document_ai.parse.jobs.create( + file_id="file_id", + ) + assert_matches_type(JobCreateResponse, job, path=["response"]) + + @parametrize + async def test_method_create_with_all_params(self, async_client: AsyncMixedbread) -> None: + job = await async_client.document_ai.parse.jobs.create( + file_id="file_id", + chunking_strategy="page", + element_types=["caption"], + return_format="html", + ) + assert_matches_type(JobCreateResponse, job, path=["response"]) + + @parametrize + async def test_raw_response_create(self, async_client: AsyncMixedbread) -> None: + response = await async_client.document_ai.parse.jobs.with_raw_response.create( + file_id="file_id", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + job = await response.parse() + assert_matches_type(JobCreateResponse, job, path=["response"]) + + @parametrize + async def test_streaming_response_create(self, async_client: AsyncMixedbread) -> None: + async with async_client.document_ai.parse.jobs.with_streaming_response.create( + file_id="file_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + job = await response.parse() + assert_matches_type(JobCreateResponse, job, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @parametrize + async def test_method_retrieve(self, async_client: AsyncMixedbread) -> None: + job = await async_client.document_ai.parse.jobs.retrieve( + "job_id", + ) + assert_matches_type(JobRetrieveResponse, job, path=["response"]) + + @parametrize + async def test_raw_response_retrieve(self, async_client: AsyncMixedbread) -> None: + response = await async_client.document_ai.parse.jobs.with_raw_response.retrieve( + "job_id", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + job = await response.parse() + assert_matches_type(JobRetrieveResponse, job, path=["response"]) + + @parametrize + async def test_streaming_response_retrieve(self, async_client: AsyncMixedbread) -> None: + async with async_client.document_ai.parse.jobs.with_streaming_response.retrieve( + "job_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + job = await response.parse() + assert_matches_type(JobRetrieveResponse, job, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @parametrize + async def test_path_params_retrieve(self, async_client: AsyncMixedbread) -> None: + with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"): + await async_client.document_ai.parse.jobs.with_raw_response.retrieve( + "", + ) diff --git a/tests/api_resources/document_ai/test_parse.py b/tests/api_resources/document_ai/test_parse.py deleted file mode 100644 index d832c447..00000000 --- a/tests/api_resources/document_ai/test_parse.py +++ /dev/null @@ -1,180 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -import os -from typing import Any, cast - -import pytest - -from mixedbread import Mixedbread, AsyncMixedbread -from tests.utils import assert_matches_type -from mixedbread.types.document_ai import ParseCreateJobResponse, ParseRetrieveJobResponse - -base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") - - -class TestParse: - parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"]) - - @parametrize - def test_method_create_job(self, client: Mixedbread) -> None: - parse = client.document_ai.parse.create_job( - file_id="file_id", - ) - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - @parametrize - def test_method_create_job_with_all_params(self, client: Mixedbread) -> None: - parse = client.document_ai.parse.create_job( - file_id="file_id", - chunking_strategy="page", - element_types=["caption"], - return_format="html", - ) - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - @parametrize - def test_raw_response_create_job(self, client: Mixedbread) -> None: - response = client.document_ai.parse.with_raw_response.create_job( - file_id="file_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - parse = response.parse() - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - @parametrize - def test_streaming_response_create_job(self, client: Mixedbread) -> None: - with client.document_ai.parse.with_streaming_response.create_job( - file_id="file_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - parse = response.parse() - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_method_retrieve_job(self, client: Mixedbread) -> None: - parse = client.document_ai.parse.retrieve_job( - "job_id", - ) - assert_matches_type(ParseRetrieveJobResponse, parse, path=["response"]) - - @parametrize - def test_raw_response_retrieve_job(self, client: Mixedbread) -> None: - response = client.document_ai.parse.with_raw_response.retrieve_job( - "job_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - parse = response.parse() - assert_matches_type(ParseRetrieveJobResponse, parse, path=["response"]) - - @parametrize - def test_streaming_response_retrieve_job(self, client: Mixedbread) -> None: - with client.document_ai.parse.with_streaming_response.retrieve_job( - "job_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - parse = response.parse() - assert_matches_type(ParseRetrieveJobResponse, parse, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_retrieve_job(self, client: Mixedbread) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"): - client.document_ai.parse.with_raw_response.retrieve_job( - "", - ) - - -class TestAsyncParse: - parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"]) - - @parametrize - async def test_method_create_job(self, async_client: AsyncMixedbread) -> None: - parse = await async_client.document_ai.parse.create_job( - file_id="file_id", - ) - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - @parametrize - async def test_method_create_job_with_all_params(self, async_client: AsyncMixedbread) -> None: - parse = await async_client.document_ai.parse.create_job( - file_id="file_id", - chunking_strategy="page", - element_types=["caption"], - return_format="html", - ) - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - @parametrize - async def test_raw_response_create_job(self, async_client: AsyncMixedbread) -> None: - response = await async_client.document_ai.parse.with_raw_response.create_job( - file_id="file_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - parse = await response.parse() - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - @parametrize - async def test_streaming_response_create_job(self, async_client: AsyncMixedbread) -> None: - async with async_client.document_ai.parse.with_streaming_response.create_job( - file_id="file_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - parse = await response.parse() - assert_matches_type(ParseCreateJobResponse, parse, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_retrieve_job(self, async_client: AsyncMixedbread) -> None: - parse = await async_client.document_ai.parse.retrieve_job( - "job_id", - ) - assert_matches_type(ParseRetrieveJobResponse, parse, path=["response"]) - - @parametrize - async def test_raw_response_retrieve_job(self, async_client: AsyncMixedbread) -> None: - response = await async_client.document_ai.parse.with_raw_response.retrieve_job( - "job_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - parse = await response.parse() - assert_matches_type(ParseRetrieveJobResponse, parse, path=["response"]) - - @parametrize - async def test_streaming_response_retrieve_job(self, async_client: AsyncMixedbread) -> None: - async with async_client.document_ai.parse.with_streaming_response.retrieve_job( - "job_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - parse = await response.parse() - assert_matches_type(ParseRetrieveJobResponse, parse, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_retrieve_job(self, async_client: AsyncMixedbread) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `job_id` but received ''"): - await async_client.document_ai.parse.with_raw_response.retrieve_job( - "", - ) diff --git a/tests/api_resources/test_vector_stores.py b/tests/api_resources/test_vector_stores.py index b1c9a512..be6820c1 100644 --- a/tests/api_resources/test_vector_stores.py +++ b/tests/api_resources/test_vector_stores.py @@ -11,9 +11,9 @@ from tests.utils import assert_matches_type from mixedbread.types import ( VectorStore, - SearchResponse, VectorStoreListResponse, VectorStoreDeleteResponse, + VectorStoreSearchResponse, ) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -223,15 +223,15 @@ def test_path_params_delete(self, client: Mixedbread) -> None: ) @parametrize - def test_method_question_answering(self, client: Mixedbread) -> None: - vector_store = client.vector_stores.question_answering( + def test_method_qa(self, client: Mixedbread) -> None: + vector_store = client.vector_stores.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) assert_matches_type(object, vector_store, path=["response"]) @parametrize - def test_method_question_answering_with_all_params(self, client: Mixedbread) -> None: - vector_store = client.vector_stores.question_answering( + def test_method_qa_with_all_params(self, client: Mixedbread) -> None: + vector_store = client.vector_stores.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], filters={ "all": [ @@ -260,15 +260,7 @@ def test_method_question_answering_with_all_params(self, client: Mixedbread) -> "limit": 0, "offset": 0, }, - qa_options={ - "cite": True, - "prompts": { - "citation_prompt": "x", - "system_prompt": "x", - "user_prompt": "x", - }, - "return_sources": True, - }, + qa_options={"cite": True}, query="x", search_options={ "return_chunks": True, @@ -281,8 +273,8 @@ def test_method_question_answering_with_all_params(self, client: Mixedbread) -> assert_matches_type(object, vector_store, path=["response"]) @parametrize - def test_raw_response_question_answering(self, client: Mixedbread) -> None: - response = client.vector_stores.with_raw_response.question_answering( + def test_raw_response_qa(self, client: Mixedbread) -> None: + response = client.vector_stores.with_raw_response.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) @@ -292,8 +284,8 @@ def test_raw_response_question_answering(self, client: Mixedbread) -> None: assert_matches_type(object, vector_store, path=["response"]) @parametrize - def test_streaming_response_question_answering(self, client: Mixedbread) -> None: - with client.vector_stores.with_streaming_response.question_answering( + def test_streaming_response_qa(self, client: Mixedbread) -> None: + with client.vector_stores.with_streaming_response.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) as response: assert not response.is_closed @@ -310,7 +302,7 @@ def test_method_search(self, client: Mixedbread) -> None: query="how to configure SSL", vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) @parametrize def test_method_search_with_all_params(self, client: Mixedbread) -> None: @@ -351,7 +343,7 @@ def test_method_search_with_all_params(self, client: Mixedbread) -> None: "score_threshold": 0, }, ) - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) @parametrize def test_raw_response_search(self, client: Mixedbread) -> None: @@ -363,7 +355,7 @@ def test_raw_response_search(self, client: Mixedbread) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" vector_store = response.parse() - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) @parametrize def test_streaming_response_search(self, client: Mixedbread) -> None: @@ -375,7 +367,7 @@ def test_streaming_response_search(self, client: Mixedbread) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" vector_store = response.parse() - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) assert cast(Any, response.is_closed) is True @@ -584,15 +576,15 @@ async def test_path_params_delete(self, async_client: AsyncMixedbread) -> None: ) @parametrize - async def test_method_question_answering(self, async_client: AsyncMixedbread) -> None: - vector_store = await async_client.vector_stores.question_answering( + async def test_method_qa(self, async_client: AsyncMixedbread) -> None: + vector_store = await async_client.vector_stores.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) assert_matches_type(object, vector_store, path=["response"]) @parametrize - async def test_method_question_answering_with_all_params(self, async_client: AsyncMixedbread) -> None: - vector_store = await async_client.vector_stores.question_answering( + async def test_method_qa_with_all_params(self, async_client: AsyncMixedbread) -> None: + vector_store = await async_client.vector_stores.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], filters={ "all": [ @@ -621,15 +613,7 @@ async def test_method_question_answering_with_all_params(self, async_client: Asy "limit": 0, "offset": 0, }, - qa_options={ - "cite": True, - "prompts": { - "citation_prompt": "x", - "system_prompt": "x", - "user_prompt": "x", - }, - "return_sources": True, - }, + qa_options={"cite": True}, query="x", search_options={ "return_chunks": True, @@ -642,8 +626,8 @@ async def test_method_question_answering_with_all_params(self, async_client: Asy assert_matches_type(object, vector_store, path=["response"]) @parametrize - async def test_raw_response_question_answering(self, async_client: AsyncMixedbread) -> None: - response = await async_client.vector_stores.with_raw_response.question_answering( + async def test_raw_response_qa(self, async_client: AsyncMixedbread) -> None: + response = await async_client.vector_stores.with_raw_response.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) @@ -653,8 +637,8 @@ async def test_raw_response_question_answering(self, async_client: AsyncMixedbre assert_matches_type(object, vector_store, path=["response"]) @parametrize - async def test_streaming_response_question_answering(self, async_client: AsyncMixedbread) -> None: - async with async_client.vector_stores.with_streaming_response.question_answering( + async def test_streaming_response_qa(self, async_client: AsyncMixedbread) -> None: + async with async_client.vector_stores.with_streaming_response.qa( vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) as response: assert not response.is_closed @@ -671,7 +655,7 @@ async def test_method_search(self, async_client: AsyncMixedbread) -> None: query="how to configure SSL", vector_store_ids=["182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"], ) - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) @parametrize async def test_method_search_with_all_params(self, async_client: AsyncMixedbread) -> None: @@ -712,7 +696,7 @@ async def test_method_search_with_all_params(self, async_client: AsyncMixedbread "score_threshold": 0, }, ) - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) @parametrize async def test_raw_response_search(self, async_client: AsyncMixedbread) -> None: @@ -724,7 +708,7 @@ async def test_raw_response_search(self, async_client: AsyncMixedbread) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" vector_store = await response.parse() - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) @parametrize async def test_streaming_response_search(self, async_client: AsyncMixedbread) -> None: @@ -736,6 +720,6 @@ async def test_streaming_response_search(self, async_client: AsyncMixedbread) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" vector_store = await response.parse() - assert_matches_type(SearchResponse, vector_store, path=["response"]) + assert_matches_type(VectorStoreSearchResponse, vector_store, path=["response"]) assert cast(Any, response.is_closed) is True