|
@@ -52,16 +52,21 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
|
|
|
'Content-Type': 'application/json'
|
|
|
}
|
|
|
|
|
|
+ def transform_jina_input_text(model, text):
|
|
|
+ if model == 'jina-clip-v1':
|
|
|
+ return {"text": text}
|
|
|
+ return text
|
|
|
+
|
|
|
data = {
|
|
|
'model': model,
|
|
|
- 'input': texts
|
|
|
+ 'input': [transform_jina_input_text(model, text) for text in texts]
|
|
|
}
|
|
|
|
|
|
try:
|
|
|
response = post(url, headers=headers, data=dumps(data))
|
|
|
except Exception as e:
|
|
|
raise InvokeConnectionError(str(e))
|
|
|
-
|
|
|
+
|
|
|
if response.status_code != 200:
|
|
|
try:
|
|
|
resp = response.json()
|
|
@@ -75,16 +80,19 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
|
|
|
else:
|
|
|
raise InvokeBadRequestError(msg)
|
|
|
except JSONDecodeError as e:
|
|
|
- raise InvokeServerUnavailableError(f"Failed to convert response to json: {e} with text: {response.text}")
|
|
|
+ raise InvokeServerUnavailableError(
|
|
|
+ f"Failed to convert response to json: {e} with text: {response.text}")
|
|
|
|
|
|
try:
|
|
|
resp = response.json()
|
|
|
embeddings = resp['data']
|
|
|
usage = resp['usage']
|
|
|
except Exception as e:
|
|
|
- raise InvokeServerUnavailableError(f"Failed to convert response to json: {e} with text: {response.text}")
|
|
|
+ raise InvokeServerUnavailableError(
|
|
|
+ f"Failed to convert response to json: {e} with text: {response.text}")
|
|
|
|
|
|
- usage = self._calc_response_usage(model=model, credentials=credentials, tokens=usage['total_tokens'])
|
|
|
+ usage = self._calc_response_usage(
|
|
|
+ model=model, credentials=credentials, tokens=usage['total_tokens'])
|
|
|
|
|
|
result = TextEmbeddingResult(
|
|
|
model=model,
|
|
@@ -122,7 +130,8 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
|
|
|
try:
|
|
|
self._invoke(model=model, credentials=credentials, texts=['ping'])
|
|
|
except Exception as e:
|
|
|
- raise CredentialsValidateFailedError(f'Credentials validation failed: {e}')
|
|
|
+ raise CredentialsValidateFailedError(
|
|
|
+ f'Credentials validation failed: {e}')
|
|
|
|
|
|
@property
|
|
|
def _invoke_error_mapping(self) -> dict[type[InvokeError], list[type[Exception]]]:
|
|
@@ -144,7 +153,7 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
|
|
|
InvokeBadRequestError
|
|
|
]
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
def _calc_response_usage(self, model: str, credentials: dict, tokens: int) -> EmbeddingUsage:
|
|
|
"""
|
|
|
Calculate response usage
|
|
@@ -185,7 +194,8 @@ class JinaTextEmbeddingModel(TextEmbeddingModel):
|
|
|
model_type=ModelType.TEXT_EMBEDDING,
|
|
|
fetch_from=FetchFrom.CUSTOMIZABLE_MODEL,
|
|
|
model_properties={
|
|
|
- ModelPropertyKey.CONTEXT_SIZE: int(credentials.get('context_size'))
|
|
|
+ ModelPropertyKey.CONTEXT_SIZE: int(
|
|
|
+ credentials.get('context_size'))
|
|
|
}
|
|
|
)
|
|
|
|