From e77aaca6379a3a22164d0c8a61709e15a14eab74 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Wed, 12 Feb 2025 15:31:08 +0800 Subject: [PATCH] feat: URL Handling in OpenAIEmbedding to Align with OpenAIModel (#1593) Co-authored-by: Wendong-Fan <133094783+Wendong-Fan@users.noreply.github.com> --- camel/embeddings/openai_embedding.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/camel/embeddings/openai_embedding.py b/camel/embeddings/openai_embedding.py index 94da48d7f4..a708d78a9a 100644 --- a/camel/embeddings/openai_embedding.py +++ b/camel/embeddings/openai_embedding.py @@ -30,6 +30,8 @@ class OpenAIEmbedding(BaseEmbedding[str]): model_type (EmbeddingModelType, optional): The model type to be used for text embeddings. (default: :obj:`TEXT_EMBEDDING_3_SMALL`) + url (Optional[str], optional): The url to the OpenAI service. + (default: :obj:`None`) api_key (str, optional): The API key for authenticating with the OpenAI service. (default: :obj:`None`) dimensions (int, optional): The text embedding output dimensions. @@ -49,6 +51,7 @@ def __init__( model_type: EmbeddingModelType = ( EmbeddingModelType.TEXT_EMBEDDING_3_SMALL ), + url: str | None = None, api_key: str | None = None, dimensions: int | NotGiven = NOT_GIVEN, ) -> None: @@ -61,7 +64,13 @@ def __init__( assert isinstance(dimensions, int) self.output_dim = dimensions self._api_key = api_key or os.environ.get("OPENAI_API_KEY") - self.client = OpenAI(timeout=180, max_retries=3, api_key=self._api_key) + self._url = url or os.environ.get("OPENAI_API_BASE_URL") + self.client = OpenAI( + timeout=180, + max_retries=3, + base_url=self._url, + api_key=self._api_key, + ) def embed_list( self,