Skip to content

Commit e5e870e

Browse files
authored
add advanced-query (#15)
1 parent eca6e09 commit e5e870e

21 files changed

+720
-171
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/python/pyproject.toml

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,49 @@
1+
[project]
2+
name = "vectorize_client"
3+
version = "1.0.0"
4+
description = "Vectorize API (Beta)"
5+
license = "NoLicense"
6+
readme = "README.md"
7+
keywords = [ "OpenAPI", "OpenAPI-Generator", "Vectorize API (Beta)" ]
8+
requires-python = ">=3.9"
9+
dependencies = [
10+
"urllib3 (>=2.1.0,<3.0.0)",
11+
"python-dateutil (>=2.8.2)",
12+
"pydantic (>=2)",
13+
"typing-extensions (>=4.7.1)"
14+
]
15+
16+
[[project.authors]]
17+
name = "Vectorize"
18+
email = "team@openapitools.org"
19+
20+
[project.urls]
21+
Repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID"
22+
123
[tool.poetry]
2-
name = "vectorize-client"
24+
requires-poetry = ">=2.0"
325
version = "0.2.1"
26+
name = "vectorize-client"
427
description = "Python client for the Vectorize API"
528
authors = [ "Vectorize <contact@vectorize.io>" ]
629
license = "MIT"
7-
readme = "README.md"
830
repository = "https://github.com/vectorize-io/vectorize-clients"
31+
homepage = "https://vectorize.io"
932
keywords = [
1033
"vectorize",
1134
"vectorize.io",
1235
"generative-ai",
1336
"embeddings",
1437
"rag"
1538
]
16-
include = [ "vectorize_client/py.typed" ]
17-
homepage = "https://vectorize.io"
18-
19-
[tool.poetry.dependencies]
20-
python = "^3.8"
21-
urllib3 = ">= 1.25.3, < 3.0.0"
22-
python-dateutil = ">= 2.8.2"
23-
pydantic = ">= 2"
24-
typing-extensions = ">= 4.7.1"
2539

26-
[tool.poetry.dev-dependencies]
27-
pytest = ">= 7.2.1"
28-
pytest-cov = ">= 2.8.1"
29-
tox = ">= 3.9.0"
30-
flake8 = ">= 4.0.0"
31-
types-python-dateutil = ">= 2.8.19.14"
32-
mypy = ">= 1.5"
40+
[tool.poetry.group.dev.dependencies]
41+
pytest = ">= 7.2.1"
42+
pytest-cov = ">= 2.8.1"
43+
tox = ">= 3.9.0"
44+
flake8 = ">= 4.0.0"
45+
types-python-dateutil = ">= 2.8.19.14"
46+
mypy = ">= 1.5"
3347

3448
[tool.pylint."MESSAGES CONTROL"]
3549
extension-pkg-whitelist = "pydantic"

src/python/vectorize_client/__init__.py

Lines changed: 200 additions & 97 deletions
Large diffs are not rendered by default.

src/python/vectorize_client/api_client.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,10 @@ def sanitize_for_serialization(self, obj):
382382
else:
383383
obj_dict = obj.__dict__
384384

385+
if isinstance(obj_dict, list):
386+
# here we handle instances that can either be a list or something else, and only became a real list by calling to_dict()
387+
return self.sanitize_for_serialization(obj_dict)
388+
385389
return {
386390
key: self.sanitize_for_serialization(val)
387391
for key, val in obj_dict.items()

src/python/vectorize_client/configuration.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from logging import FileHandler
1919
import multiprocessing
2020
import sys
21-
from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict
21+
from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict, Union
2222
from typing_extensions import NotRequired, Self
2323

2424
import urllib3
@@ -161,6 +161,8 @@ class Configuration:
161161
:param ssl_ca_cert: str - the path to a file of concatenated CA certificates
162162
in PEM format.
163163
:param retries: Number of retries for API requests.
164+
:param ca_cert_data: verify the peer using concatenated CA certificate data
165+
in PEM (str) or DER (bytes) format.
164166
165167
:Example:
166168
"""
@@ -175,13 +177,14 @@ def __init__(
175177
username: Optional[str]=None,
176178
password: Optional[str]=None,
177179
access_token: Optional[str]=None,
178-
server_index: Optional[int]=None,
180+
server_index: Optional[int]=None,
179181
server_variables: Optional[ServerVariablesT]=None,
180182
server_operation_index: Optional[Dict[int, int]]=None,
181183
server_operation_variables: Optional[Dict[int, ServerVariablesT]]=None,
182184
ignore_operation_servers: bool=False,
183185
ssl_ca_cert: Optional[str]=None,
184186
retries: Optional[int] = None,
187+
ca_cert_data: Optional[Union[str, bytes]] = None,
185188
*,
186189
debug: Optional[bool] = None,
187190
) -> None:
@@ -259,6 +262,10 @@ def __init__(
259262
self.ssl_ca_cert = ssl_ca_cert
260263
"""Set this to customize the certificate file to verify the peer.
261264
"""
265+
self.ca_cert_data = ca_cert_data
266+
"""Set this to verify the peer using PEM (str) or DER (bytes)
267+
certificate data.
268+
"""
262269
self.cert_file = None
263270
"""client certificate file
264271
"""

src/python/vectorize_client/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from vectorize_client.models.add_user_from_source_connector_response import AddUserFromSourceConnectorResponse
2222
from vectorize_client.models.add_user_to_source_connector_request import AddUserToSourceConnectorRequest
2323
from vectorize_client.models.add_user_to_source_connector_request_selected_files_value import AddUserToSourceConnectorRequestSelectedFilesValue
24+
from vectorize_client.models.advanced_query import AdvancedQuery
2425
from vectorize_client.models.create_ai_platform_connector import CreateAIPlatformConnector
2526
from vectorize_client.models.create_ai_platform_connector_response import CreateAIPlatformConnectorResponse
2627
from vectorize_client.models.create_destination_connector import CreateDestinationConnector
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
# coding: utf-8
2+
3+
"""
4+
Vectorize API (Beta)
5+
6+
API for Vectorize services
7+
8+
The version of the OpenAPI document: 0.0.1
9+
Generated by OpenAPI Generator (https://openapi-generator.tech)
10+
11+
Do not edit the class manually.
12+
""" # noqa: E501
13+
14+
15+
from __future__ import annotations
16+
import pprint
17+
import re # noqa: F401
18+
import json
19+
20+
from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr, field_validator
21+
from typing import Any, ClassVar, Dict, List, Optional, Union
22+
from typing import Optional, Set
23+
from typing_extensions import Self
24+
25+
class AdvancedQuery(BaseModel):
26+
"""
27+
AdvancedQuery
28+
""" # noqa: E501
29+
mode: Optional[StrictStr] = 'vector'
30+
text_fields: Optional[List[StrictStr]] = Field(default=None, alias="text-fields")
31+
match_type: Optional[StrictStr] = Field(default=None, alias="match-type")
32+
text_boost: Optional[Union[StrictFloat, StrictInt]] = Field(default=1.0, alias="text-boost")
33+
filters: Optional[Dict[str, Any]] = None
34+
__properties: ClassVar[List[str]] = ["mode", "text-fields", "match-type", "text-boost", "filters"]
35+
36+
@field_validator('mode')
37+
def mode_validate_enum(cls, value):
38+
"""Validates the enum"""
39+
if value is None:
40+
return value
41+
42+
if value not in set(['text', 'vector', 'hybrid']):
43+
raise ValueError("must be one of enum values ('text', 'vector', 'hybrid')")
44+
return value
45+
46+
@field_validator('match_type')
47+
def match_type_validate_enum(cls, value):
48+
"""Validates the enum"""
49+
if value is None:
50+
return value
51+
52+
if value not in set(['match', 'match_phrase', 'multi_match']):
53+
raise ValueError("must be one of enum values ('match', 'match_phrase', 'multi_match')")
54+
return value
55+
56+
model_config = ConfigDict(
57+
populate_by_name=True,
58+
validate_assignment=True,
59+
protected_namespaces=(),
60+
)
61+
62+
63+
def to_str(self) -> str:
64+
"""Returns the string representation of the model using alias"""
65+
return pprint.pformat(self.model_dump(by_alias=True))
66+
67+
def to_json(self) -> str:
68+
"""Returns the JSON representation of the model using alias"""
69+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
70+
return json.dumps(self.to_dict())
71+
72+
@classmethod
73+
def from_json(cls, json_str: str) -> Optional[Self]:
74+
"""Create an instance of AdvancedQuery from a JSON string"""
75+
return cls.from_dict(json.loads(json_str))
76+
77+
def to_dict(self) -> Dict[str, Any]:
78+
"""Return the dictionary representation of the model using alias.
79+
80+
This has the following differences from calling pydantic's
81+
`self.model_dump(by_alias=True)`:
82+
83+
* `None` is only added to the output dict for nullable fields that
84+
were set at model initialization. Other fields with value `None`
85+
are ignored.
86+
"""
87+
excluded_fields: Set[str] = set([
88+
])
89+
90+
_dict = self.model_dump(
91+
by_alias=True,
92+
exclude=excluded_fields,
93+
exclude_none=True,
94+
)
95+
return _dict
96+
97+
@classmethod
98+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
99+
"""Create an instance of AdvancedQuery from a dict"""
100+
if obj is None:
101+
return None
102+
103+
if not isinstance(obj, dict):
104+
return cls.model_validate(obj)
105+
106+
_obj = cls.model_validate({
107+
"mode": obj.get("mode") if obj.get("mode") is not None else 'vector',
108+
"text-fields": obj.get("text-fields"),
109+
"match-type": obj.get("match-type"),
110+
"text-boost": obj.get("text-boost") if obj.get("text-boost") is not None else 1.0,
111+
"filters": obj.get("filters")
112+
})
113+
return _obj
114+
115+

src/python/vectorize_client/models/retrieve_documents_request.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
2121
from typing import Any, ClassVar, Dict, List, Optional, Union
2222
from typing_extensions import Annotated
23+
from vectorize_client.models.advanced_query import AdvancedQuery
2324
from vectorize_client.models.retrieve_context import RetrieveContext
2425
from typing import Optional, Set
2526
from typing_extensions import Self
@@ -33,7 +34,8 @@ class RetrieveDocumentsRequest(BaseModel):
3334
rerank: Optional[StrictBool] = True
3435
metadata_filters: Optional[List[Dict[str, Any]]] = Field(default=None, alias="metadata-filters")
3536
context: Optional[RetrieveContext] = None
36-
__properties: ClassVar[List[str]] = ["question", "numResults", "rerank", "metadata-filters", "context"]
37+
advanced_query: Optional[AdvancedQuery] = Field(default=None, alias="advanced-query")
38+
__properties: ClassVar[List[str]] = ["question", "numResults", "rerank", "metadata-filters", "context", "advanced-query"]
3739

3840
model_config = ConfigDict(
3941
populate_by_name=True,
@@ -77,6 +79,9 @@ def to_dict(self) -> Dict[str, Any]:
7779
# override the default output from pydantic by calling `to_dict()` of context
7880
if self.context:
7981
_dict['context'] = self.context.to_dict()
82+
# override the default output from pydantic by calling `to_dict()` of advanced_query
83+
if self.advanced_query:
84+
_dict['advanced-query'] = self.advanced_query.to_dict()
8085
return _dict
8186

8287
@classmethod
@@ -93,7 +98,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
9398
"numResults": obj.get("numResults"),
9499
"rerank": obj.get("rerank") if obj.get("rerank") is not None else True,
95100
"metadata-filters": obj.get("metadata-filters"),
96-
"context": RetrieveContext.from_dict(obj["context"]) if obj.get("context") is not None else None
101+
"context": RetrieveContext.from_dict(obj["context"]) if obj.get("context") is not None else None,
102+
"advanced-query": AdvancedQuery.from_dict(obj["advanced-query"]) if obj.get("advanced-query") is not None else None
97103
})
98104
return _obj
99105

src/python/vectorize_client/rest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ def __init__(self, configuration) -> None:
7676
"ca_certs": configuration.ssl_ca_cert,
7777
"cert_file": configuration.cert_file,
7878
"key_file": configuration.key_file,
79+
"ca_cert_data": configuration.ca_cert_data,
7980
}
8081
if configuration.assert_hostname is not None:
8182
pool_args['assert_hostname'] = (

src/ts/README.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# Vectorize Client
2-
Typescript Api Client for Vectorize
3-
For more information, please visit [https://vectorize.io](https://vectorize.io)
2+
Node Api Client for [Vectorize](https://vectorize.io).
3+
For the full documentation, please visit [docs.vectorize.io](https://docs.vectorize.io/api/api-getting-started).
44

5-
## Installation & Usage
5+
## Installation
66
```sh
77
npm install @vectorize-io/vectorize-client
88
```
99

1010
## Getting Started
1111

12-
Please follow the [installation procedure](#installation--usage) and then run the following:
12+
List all your pipelines:
1313

1414
```typescript
1515

@@ -23,8 +23,4 @@ const pipelines = connectorsApi.getPipelines({
2323
console.log(pipelines)
2424
```
2525

26-
## Documentation for API Endpoints
27-
28-
All URIs are relative to *https://api.vectorize.io/v1*
29-
30-
See the full [reference](https://vectorize.readme.io/reference) for more information.
26+
Visit [docs.vectorize.io](https://docs.vectorize.io/api/api-getting-started) to learn more about the API.

0 commit comments

Comments
 (0)