Skip to content

Commit d8f43a5

Browse files
committed
RDBC-935 Add missing connection strings
1 parent 714cfb4 commit d8f43a5

26 files changed

Lines changed: 624 additions & 35 deletions
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from abc import ABC, abstractmethod
2+
from typing import Dict, Any
3+
4+
5+
class AbstractAiSettings(ABC):
6+
def __init__(self):
7+
self.embeddings_max_concurrent_batches = None
8+
9+
@classmethod
10+
@abstractmethod
11+
def from_json(cls, json_dict: Dict[str, Any]) -> Any:
12+
pass
13+
14+
@abstractmethod
15+
def to_json(self) -> Dict[str, Any]:
16+
pass
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import enum
2+
from typing import Optional, Dict, Any
3+
4+
import ravendb.serverwide.server_operation_executor
5+
from ravendb.documents.operations.ai.azure_open_ai_settings import AzureOpenAiSettings
6+
from ravendb.documents.operations.ai.embedded_settings import EmbeddedSettings
7+
from ravendb.documents.operations.ai.google_settings import GoogleSettings
8+
from ravendb.documents.operations.ai.hugging_face_settings import HuggingFaceSettings
9+
from ravendb.documents.operations.ai.mistral_ai_settings import MistralAiSettings
10+
from ravendb.documents.operations.ai.ollama_settings import OllamaSettings
11+
from ravendb.documents.operations.ai.open_ai_settings import OpenAiSettings
12+
from ravendb.documents.operations.connection_strings import ConnectionString
13+
14+
15+
class AiModelType(enum.Enum):
16+
TEXT_EMBEDDINGS = "TextEmbeddings",
17+
CHAT = "Chat"
18+
19+
20+
class AiConnectionString(ConnectionString): # todo kuba
21+
def __init__(
22+
self,
23+
name: str,
24+
identifier: str,
25+
openai_settings: Optional[OpenAiSettings] = None,
26+
azure_openai_settings: Optional[AzureOpenAiSettings] = None,
27+
ollama_settings: Optional[OllamaSettings] = None,
28+
embedded_settings: Optional[EmbeddedSettings] = None,
29+
google_settings: Optional[GoogleSettings] = None,
30+
huggingface_settings: Optional[HuggingFaceSettings] = None,
31+
mistral_ai_settings: Optional[MistralAiSettings] = None,
32+
model_type: AiModelType = None
33+
):
34+
super().__init__(name)
35+
self.identifier = identifier
36+
self.openai_settings = openai_settings
37+
self.azure_openai_settings = azure_openai_settings
38+
self.ollama_settings = ollama_settings
39+
self.embedded_settings = embedded_settings
40+
self.google_settings = google_settings
41+
self.huggingface_settings = huggingface_settings
42+
self.mistral_ai_settings = mistral_ai_settings
43+
self.model_type = model_type
44+
45+
@property
46+
def get_type(self):
47+
return ravendb.serverwide.server_operation_executor.ConnectionStringType.AI.value
48+
49+
def to_json(self) -> Dict[str, Any]:
50+
return {
51+
"Name": self.name,
52+
"Identifier": self.identifier,
53+
"OpenaiSettings": self.openai_settings,
54+
"AzureOpenaiSettings": self.azure_openai_settings,
55+
"ollama_settings": self.ollama_settings,
56+
"EmbeddedSettings": self.embedded_settings,
57+
"GoogleSettings": self.google_settings,
58+
"HuggingfaceSettings": self.huggingface_settings,
59+
"MistralAiSettings": self.mistral_ai_settings,
60+
"ModelType": self.model_type,
61+
"Type": ravendb.serverwide.server_operation_executor.ConnectionStringType.OLAP,
62+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from typing import Dict, Any
2+
3+
from ravendb.documents.operations.ai.open_ai_base_settings import OpenAiBaseSettings
4+
5+
6+
class AzureOpenAiSettings(OpenAiBaseSettings):
7+
def __init__(self, api_key: str = None, endpoint: str = None, model: str = None, deployment_name: str = None, dimensions: int = None, temperature: float = None):
8+
super().__init__(api_key, endpoint, model, dimensions, temperature)
9+
self.deployment_name = deployment_name
10+
11+
@classmethod
12+
def from_json(cls, json_dict: Dict[str, Any]) -> "AzureOpenAiSettings":
13+
return cls(
14+
api_key=json_dict["ApiKey"],
15+
endpoint=json_dict["Endpoint"],
16+
model=json_dict["Model"],
17+
dimensions=json_dict["Dimensions"],
18+
temperature=json_dict["Temperature"],
19+
deployment_name=json_dict["DeploymentName"],
20+
)
21+
22+
def to_json(self) -> Dict[str, Any]:
23+
return {
24+
"ApiKey": self.api_key,
25+
"Endpoint": self.endpoint,
26+
"Model": self.model,
27+
"Dimensions": self.dimensions,
28+
"Temperature": self.temperature,
29+
"DeploymentName": self.deployment_name,
30+
"EmbeddingsMaxConcurrentBatches": self.embeddings_max_concurrent_batches,
31+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from typing import Dict, Any
2+
3+
from ravendb.documents.operations.ai.abstract_ai_settings import AbstractAiSettings
4+
5+
6+
class EmbeddedSettings(AbstractAiSettings):
7+
def __init__(self):
8+
super().__init__()
9+
10+
@classmethod
11+
def from_json(cls, json_dict: Dict[str, Any]) -> "EmbeddedSettings":
12+
return cls()
13+
14+
def to_json(self) -> Dict[str, Any]:
15+
return {"EmbeddingsMaxConcurrentBatches": self.embeddings_max_concurrent_batches}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from enum import Enum
2+
from typing import Dict, Any
3+
4+
from ravendb.documents.operations.ai.abstract_ai_settings import AbstractAiSettings
5+
6+
7+
class GoogleAiVersion(Enum):
8+
V1 = "V1",
9+
V1_Beta = "V1_Beta",
10+
11+
12+
class GoogleSettings(AbstractAiSettings):
13+
def __init__(self, model: str = None, api_key: str = None, ai_version: GoogleAiVersion = None, dimensions: int = None):
14+
super().__init__()
15+
self.model = model
16+
self.api_key = api_key
17+
self.ai_version = ai_version
18+
self.dimensions = dimensions
19+
20+
@classmethod
21+
def from_json(cls, json_dict: Dict[str, Any]) -> "GoogleSettings":
22+
return cls(
23+
model=json_dict["Model"],
24+
api_key=json_dict["ApiKey"],
25+
ai_version=GoogleAiVersion(json_dict["AiVersion"]),
26+
dimensions=json_dict["Dimensions"],
27+
)
28+
29+
def to_json(self) -> Dict[str, Any]:
30+
return {
31+
"Model": self.model,
32+
"ApiKey": self.api_key,
33+
"AiVersion": self.ai_version.value,
34+
"Dimensions": self.dimensions,
35+
"EmbeddingsMaxConcurrentBatches": self.embeddings_max_concurrent_batches,
36+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from typing import Dict, Any
2+
3+
from ravendb.documents.operations.ai.abstract_ai_settings import AbstractAiSettings
4+
5+
6+
class HuggingFaceSettings(AbstractAiSettings):
7+
def __init__(self, api_key: str = None, model: str = None, endpoint: str = None):
8+
super().__init__()
9+
self.api_key = api_key
10+
self.model = model
11+
self.endpoint = endpoint
12+
13+
@classmethod
14+
def from_json(cls, json_dict: Dict[str, Any]) -> "HuggingFaceSettings":
15+
return cls(
16+
api_key=json_dict["ApiKey"],
17+
model=json_dict["Model"],
18+
endpoint=json_dict["Endpoint"],
19+
)
20+
21+
def to_json(self) -> Dict[str, Any]:
22+
return {
23+
"ApiKey": self.api_key,
24+
"Model": self.model,
25+
"Endpoint": self.endpoint,
26+
"EmbeddingsMaxConcurrentBatches": self.embeddings_max_concurrent_batches,
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from typing import Dict, Any
2+
3+
from ravendb.documents.operations.ai.abstract_ai_settings import AbstractAiSettings
4+
5+
6+
class MistralAiSettings(AbstractAiSettings):
7+
def __init__(self, api_key: str = None, model: str = None, endpoint: str = None):
8+
super().__init__()
9+
self.api_key = api_key
10+
self.model = model
11+
self.endpoint = endpoint
12+
13+
@classmethod
14+
def from_json(cls, json_dict: Dict[str, Any]) -> "MistralAiSettings":
15+
return cls(
16+
api_key=json_dict["ApiKey"],
17+
model=json_dict["Model"],
18+
endpoint=json_dict["Endpoint"],
19+
)
20+
21+
def to_json(self) -> Dict[str, Any]:
22+
return {
23+
"ApiKey": self.api_key,
24+
"Model": self.model,
25+
"Endpoint": self.endpoint,
26+
"EmbeddingsMaxConcurrentBatches": self.embeddings_max_concurrent_batches,
27+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from typing import Dict, Any
2+
3+
from ravendb.documents.operations.ai.abstract_ai_settings import AbstractAiSettings
4+
5+
6+
class OllamaSettings(AbstractAiSettings):
7+
def __init__(self, uri: str = None, model: str = None):
8+
super().__init__()
9+
self.uri = uri
10+
self.model = model
11+
self.think: bool = None
12+
self.temperature: float = None
13+
14+
@classmethod
15+
def from_json(cls, json_dict: Dict[str, Any]) -> "OllamaSettings":
16+
return cls(
17+
uri=json_dict["Uri"],
18+
model=json_dict["Model"],
19+
)
20+
21+
def to_json(self) -> Dict[str, Any]:
22+
return {
23+
"Uri": self.uri,
24+
"Model": self.model,
25+
"Think": self.think,
26+
"Temperature": self.temperature,
27+
"EmbeddingsMaxConcurrentBatches": self.embeddings_max_concurrent_batches,
28+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from abc import ABC
2+
3+
from ravendb.documents.operations.ai.abstract_ai_settings import AbstractAiSettings
4+
5+
6+
class OpenAiBaseSettings(AbstractAiSettings, ABC):
7+
def __init__(self, api_key: str = None, endpoint: str = None, model: str = None, dimensions: int = None, temperature: float = None):
8+
super().__init__()
9+
self.api_key = api_key
10+
self.endpoint = endpoint
11+
self.model = model
12+
self.dimensions = dimensions
13+
self.temperature = temperature
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from typing import Dict, Any
2+
3+
from ravendb.documents.operations.ai.open_ai_base_settings import OpenAiBaseSettings
4+
5+
6+
class OpenAiSettings(OpenAiBaseSettings):
7+
def __init__(self, api_key: str = None, endpoint: str = None, model: str = None, organization_id: str = None, project_id: str = None, dimensions: int = None, temperature: float = None):
8+
super().__init__(api_key, endpoint, model, dimensions, temperature)
9+
self.organization_id = organization_id
10+
self.project_id = project_id
11+
12+
@classmethod
13+
def from_json(cls, json_dict: Dict[str, Any]) -> "OpenAiSettings":
14+
return cls(
15+
api_key=json_dict["ApiKey"],
16+
endpoint=json_dict["Endpoint"],
17+
model=json_dict["Model"],
18+
dimensions=json_dict["Dimensions"],
19+
temperature=json_dict["Temperature"],
20+
organization_id=json_dict["OrganizationId"],
21+
project_id=json_dict["ProjectId"],
22+
)
23+
24+
def to_json(self) -> Dict[str, Any]:
25+
return {
26+
"ApiKey": self.api_key,
27+
"Endpoint": self.endpoint,
28+
"Model": self.model,
29+
"Dimensions": self.dimensions,
30+
"Temperature": self.temperature,
31+
"OrganizationId": self.organization_id,
32+
"ProjectId": self.project_id,
33+
"EmbeddingsMaxConcurrentBatches": self.embeddings_max_concurrent_batches,
34+
}

0 commit comments

Comments
 (0)