GPTRouter 0.3.7__tar.gz → 0.3.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GPTRouter
3
- Version: 0.3.7
3
+ Version: 0.3.9
4
4
  Summary: A Python package for working with GPTRouter APIs
5
5
  Author-email: sirjanpreet@writesonic.com
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: GPTRouter
3
- Version: 0.3.7
3
+ Version: 0.3.9
4
4
  Summary: A Python package for working with GPTRouter APIs
5
5
  Author-email: sirjanpreet@writesonic.com
6
6
  Classifier: Development Status :: 3 - Alpha
@@ -13,6 +13,9 @@ from gpt_router.models import (
13
13
  ModelGenerationRequest,
14
14
  GenerationResponse,
15
15
  ChunkedGenerationResponse,
16
+ ModelRouterEmbeddingsGenerationRequest,
17
+ ModelRouterGenerationResponse,
18
+ ModelRouterEmbeddingsGenerationResponse
16
19
  )
17
20
  from gpt_router.exceptions import (
18
21
  GPTRouterApiTimeoutError,
@@ -71,6 +74,31 @@ class GPTRouterClient:
71
74
  request_timeout if stream_read_timeout is None else stream_read_timeout
72
75
  )
73
76
 
77
+ async def agenerate_embeddings(
78
+ self,
79
+ *,
80
+ ordered_generation_requests: List[
81
+ ModelRouterEmbeddingsGenerationRequest
82
+ ],
83
+ model_router_metadata: Optional[GPTRouterMetadata] = None,
84
+ ) -> ModelRouterGenerationResponse:
85
+ api_payload = {
86
+ "data": [
87
+ {
88
+ **request.dict(),
89
+ "order": index + 1,
90
+ }
91
+ for index, request in enumerate(ordered_generation_requests)
92
+ ],
93
+ }
94
+ api_payload = self.add_metadata_info(api_payload, model_router_metadata)
95
+ response = await self._async_api_call(
96
+ path="/v1/generate/embeddings",
97
+ method="POST",
98
+ payload=api_payload,
99
+ )
100
+ return ModelRouterEmbeddingsGenerationResponse.parse_obj(response)
101
+
74
102
  def add_metadata_info(
75
103
  self,
76
104
  payload: dict,
@@ -391,9 +419,18 @@ class GPTRouterClient:
391
419
  )
392
420
  generated_images = api_response.get("response", [])
393
421
  if isinstance(generated_images, dict):
394
- generated_images = generated_images.get("artifacts", [])
422
+ generated_images = self._extract_images_from_dict(generated_images)
395
423
 
396
424
  return [
397
425
  parse_obj_as(ImageGenerationResponse, generated_img)
398
426
  for generated_img in generated_images
399
427
  ]
428
+
429
+ def _extract_images_from_dict(self, image_dict: dict) -> List[dict]:
430
+ if artifacts := image_dict.get("artifacts"):
431
+ return artifacts
432
+
433
+ if image_urls := image_dict.get("imageUrls"):
434
+ return [{"url": url} for url in image_urls]
435
+
436
+ return []
@@ -1,6 +1,8 @@
1
1
  from collections import namedtuple
2
2
  from enum import Enum
3
3
 
4
+
5
+
4
6
  class ProvidersEnum(Enum):
5
7
  OPENAI = "openai"
6
8
  CHAT_OPENAI = "chat_openai"
@@ -15,6 +17,10 @@ class ProvidersEnum(Enum):
15
17
  STABLE_DIFFUSION = "stable-diffusion"
16
18
  DALL_E = "dall-e"
17
19
  OPENROUTER = "openrouter"
20
+ REPLICATE = "replicate"
21
+ OPENAI_EMBEDDINGS = "openai_embeddings"
22
+ AZURE_OPENAI_EMBEDDINGS = "azure_openai_embeddings"
23
+
18
24
 
19
25
  class ModelsEnum(Enum):
20
26
  OPENAI_GPT_35_TURBO_16K = "gpt-3.5-turbo-16k"
@@ -43,6 +49,11 @@ class ModelsEnum(Enum):
43
49
  STABLE_DIFFUSION_XL = "stable-diffusion-xl-1024-v1-0"
44
50
  STABLE_DIFFUSION_V6 = "stable-diffusion-v1-6"
45
51
 
52
+ REPLICATE_FLUX = "black-forest-labs/flux-dev"
53
+
54
+ OPENAI_EMBEDDINGS_ADA_002 = "text-embedding-ada-002"
55
+ AZURE_OPENAI_EMBEDDINGS_ADA_002 = "text-embedding-ada-002"
56
+
46
57
  class StreamingEventType(Enum):
47
58
  UPDATE = "update"
48
59
  META = "meta"
@@ -150,6 +161,9 @@ class GPTRouterEngines(Enum):
150
161
  ProvidersEnum.STABLE_DIFFUSION.value, "stable-diffusion-xl-1024-v1-0"
151
162
  )
152
163
  DALLE_3 = ModelDetails(ProvidersEnum.DALL_E.value, "dall-e-3")
164
+ REPLICATE_FLUX = ModelDetails(
165
+ ProvidersEnum.REPLICATE.value, "black-forest-labs/flux-dev"
166
+ )
153
167
 
154
168
  LLAMA_3_70B_NITRO = ModelDetails(
155
169
  ProvidersEnum.OPENROUTER, "meta-llama/llama-3-70b-instruct:nitro"
@@ -109,3 +109,47 @@ class ImageGenerationResponse(BaseModel):
109
109
  url: str = None
110
110
  base64: str = None
111
111
  finish_reason: Optional[str] = Field(default="SUCCESS", alias='finishReason')
112
+
113
+
114
+ class ModelRouterGenerationRequest(BaseModel):
115
+ model_name: str
116
+ model_provider: str
117
+ prompt_params: GenerationParams = Field(alias="promptParams")
118
+ should_validate_token_count: Optional[bool] = Field(
119
+ default=False, alias="shouldValidateTokenCount"
120
+ )
121
+
122
+ class Config:
123
+ allow_population_by_field_name = True
124
+
125
+ def dict(self, *args, **kwargs):
126
+ # Generate the standard dict first.
127
+ result = super().dict(*args, **kwargs, exclude_none=True, by_alias=True)
128
+
129
+ result["providerName"] = self.model_provider
130
+ result["modelName"] = self.model_name
131
+
132
+ return result
133
+
134
+ class ModelRouterEmbeddingsGenerationParams(BaseModel):
135
+ input: List[str]
136
+
137
+
138
+ class ModelRouterEmbeddingsGenerationRequest(ModelRouterGenerationRequest):
139
+ prompt_params: ModelRouterEmbeddingsGenerationParams = Field(alias="promptParams")
140
+
141
+ class ModelRouterGenerationResponse(BaseModel):
142
+ id: str
143
+ choices: List[Choice]
144
+ model: str
145
+ provider_id: Optional[str] = Field(None, alias="providerId")
146
+ model_id: Optional[str] = Field(None, alias="modelId")
147
+ meta: Optional[Usage]
148
+
149
+
150
+
151
+ class EmbeddingsChoice(BaseModel):
152
+ embedding: List[float]
153
+
154
+ class ModelRouterEmbeddingsGenerationResponse(BaseModel):
155
+ choices: List[EmbeddingsChoice]
@@ -5,7 +5,7 @@ with open("README.md", "r") as fh:
5
5
 
6
6
  setup(
7
7
  name="GPTRouter",
8
- version="0.3.7",
8
+ version="0.3.9",
9
9
  description="A Python package for working with GPTRouter APIs",
10
10
  long_description=long_description,
11
11
  long_description_content_type="text/markdown",
File without changes
File without changes
File without changes
File without changes