1313Template Method Pattern을 사용하여 중복 코드 제거
1414"""
1515
16- from typing import List , Optional
16+ from typing import Any , List , Optional , cast
1717
1818from beanllm .domain .embeddings .base import BaseAPIEmbedding
1919
@@ -79,6 +79,7 @@ async def embed(self, texts: List[str]) -> List[List[float]]:
7979
8080 except Exception as e :
8181 self ._handle_embed_error ("OpenAI" , e )
82+ raise
8283
8384 def embed_sync (self , texts : List [str ]) -> List [List [float ]]:
8485 """텍스트들을 임베딩 (동기)"""
@@ -94,6 +95,7 @@ def embed_sync(self, texts: List[str]) -> List[List[float]]:
9495
9596 except Exception as e :
9697 self ._handle_embed_error ("OpenAI" , e )
98+ raise
9799
98100
99101class GeminiEmbedding (BaseAPIEmbedding ):
@@ -183,10 +185,11 @@ def embed_sync(self, texts: List[str]) -> List[List[float]]:
183185
184186 self ._log_embed_success (len (texts ), f"sequential mode, { len (texts )} API calls" )
185187
186- return embeddings
188+ return cast ( List [ List [ float ]], embeddings )
187189
188190 except Exception as e :
189191 self ._handle_embed_error ("Gemini" , e )
192+ raise
190193
191194
192195class OllamaEmbedding (BaseAPIEmbedding ):
@@ -270,7 +273,10 @@ def embed_sync(self, texts: List[str]) -> List[List[float]]:
270273
271274 embeddings = []
272275 for text in texts :
273- response = self .client .embeddings (model = self .model , prompt = text )
276+ response = cast (
277+ Any ,
278+ self .client .embeddings (model = self .model , prompt = text ),
279+ )
274280 embeddings .append (response ["embedding" ])
275281
276282 self ._log_embed_success (len (texts ), f"sequential mode, { len (texts )} requests" )
@@ -279,6 +285,7 @@ def embed_sync(self, texts: List[str]) -> List[List[float]]:
279285
280286 except Exception as e :
281287 self ._handle_embed_error ("Ollama" , e )
288+ raise
282289
283290
284291class VoyageEmbedding (BaseAPIEmbedding ):
@@ -340,13 +347,13 @@ def __init__(self, model: str = "voyage-3", api_key: Optional[str] = None, **kwa
340347 def embed_sync (self , texts : List [str ]) -> List [List [float ]]:
341348 """텍스트들을 임베딩 (동기)"""
342349 try :
343- response = self .client .embed (texts = texts , model = self .model , ** self .kwargs )
344-
350+ response : Any = self .client .embed (texts = texts , model = self .model , ** self .kwargs )
345351 self ._log_embed_success (len (texts ))
346- return response .embeddings
352+ return cast ( List [ List [ float ]], response .embeddings )
347353
348354 except Exception as e :
349355 self ._handle_embed_error ("Voyage AI" , e )
356+ raise
350357
351358
352359class JinaEmbedding (BaseAPIEmbedding ):
@@ -428,6 +435,7 @@ def embed_sync(self, texts: List[str]) -> List[List[float]]:
428435
429436 except Exception as e :
430437 self ._handle_embed_error ("Jina AI" , e )
438+ raise
431439
432440
433441class MistralEmbedding (BaseAPIEmbedding ):
@@ -470,10 +478,11 @@ def embed_sync(self, texts: List[str]) -> List[List[float]]:
470478
471479 embeddings = [item .embedding for item in response .data ]
472480 self ._log_embed_success (len (texts ))
473- return embeddings
481+ return cast ( List [ List [ float ]], embeddings )
474482
475483 except Exception as e :
476484 self ._handle_embed_error ("Mistral AI" , e )
485+ raise
477486
478487
479488class CohereEmbedding (BaseAPIEmbedding ):
@@ -520,12 +529,18 @@ def __init__(
520529 def embed_sync (self , texts : List [str ]) -> List [List [float ]]:
521530 """텍스트들을 임베딩 (동기)"""
522531 try :
523- response = self .client .embed (
524- texts = texts , model = self .model , input_type = self .input_type , ** self .kwargs
532+ response = cast (
533+ Any ,
534+ self .client .embed (
535+ texts = texts ,
536+ model = self .model ,
537+ input_type = self .input_type ,
538+ ** self .kwargs ,
539+ ),
525540 )
526-
527541 self ._log_embed_success (len (texts ))
528- return response .embeddings
542+ return cast ( List [ List [ float ]], response .embeddings )
529543
530544 except Exception as e :
531545 self ._handle_embed_error ("Cohere" , e )
546+ raise
0 commit comments