fix(llms,embeddings): repair HTTP proxy support (httpx>=0.28) and preserve proxies in LlmFactory (#5447)
Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
This commit is contained in:
co-authored by
kartik-mem0
parent
48f1d6f010
commit
7a9f03af3f
@@ -2,9 +2,8 @@ import os
|
||||
from abc import ABC
|
||||
from typing import Dict, Optional, Union
|
||||
|
||||
import httpx
|
||||
|
||||
from mem0.configs.base import AzureConfig
|
||||
from mem0.utils.http import build_http_client
|
||||
|
||||
|
||||
class BaseEmbedderConfig(ABC):
|
||||
@@ -81,7 +80,8 @@ class BaseEmbedderConfig(ABC):
|
||||
self.embedding_dims = embedding_dims
|
||||
|
||||
# AzureOpenAI specific
|
||||
self.http_client = httpx.Client(proxies=http_client_proxies) if http_client_proxies else None
|
||||
self.http_client_proxies = http_client_proxies
|
||||
self.http_client = build_http_client(http_client_proxies)
|
||||
|
||||
# Ollama specific
|
||||
self.ollama_base_url = ollama_base_url
|
||||
@@ -109,4 +109,3 @@ class BaseEmbedderConfig(ABC):
|
||||
self.aws_secret_access_key = aws_secret_access_key
|
||||
self.aws_session_token = aws_session_token
|
||||
self.aws_region = aws_region or os.environ.get("AWS_REGION") or "us-west-2"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from abc import ABC
|
||||
from typing import Dict, Optional, Union
|
||||
|
||||
import httpx
|
||||
from mem0.utils.http import build_http_client
|
||||
|
||||
|
||||
class BaseLlmConfig(ABC):
|
||||
@@ -74,4 +74,5 @@ class BaseLlmConfig(ABC):
|
||||
self.vision_details = vision_details
|
||||
self.reasoning_effort = reasoning_effort
|
||||
self.is_reasoning_model = is_reasoning_model
|
||||
self.http_client = httpx.Client(proxies=http_client_proxies) if http_client_proxies else None
|
||||
self.http_client_proxies = http_client_proxies
|
||||
self.http_client = build_http_client(http_client_proxies)
|
||||
|
||||
@@ -29,7 +29,7 @@ class AnthropicLLM(LLMBase):
|
||||
top_k=config.top_k,
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
)
|
||||
|
||||
super().__init__(config)
|
||||
|
||||
@@ -32,7 +32,7 @@ class AzureOpenAILLM(LLMBase):
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
reasoning_effort=getattr(config, 'reasoning_effort', None),
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
is_reasoning_model=getattr(config, 'is_reasoning_model', None),
|
||||
)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class DeepSeekLLM(LLMBase):
|
||||
top_k=config.top_k,
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
)
|
||||
|
||||
super().__init__(config)
|
||||
|
||||
@@ -27,7 +27,7 @@ class LMStudioLLM(LLMBase):
|
||||
top_k=config.top_k,
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
)
|
||||
|
||||
super().__init__(config)
|
||||
|
||||
@@ -28,7 +28,7 @@ class MiniMaxLLM(LLMBase):
|
||||
top_k=config.top_k,
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
)
|
||||
|
||||
super().__init__(config)
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ class OllamaLLM(LLMBase):
|
||||
top_k=config.top_k,
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
)
|
||||
|
||||
super().__init__(config)
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ class OpenAILLM(LLMBase):
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
reasoning_effort=getattr(config, 'reasoning_effort', None),
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
is_reasoning_model=getattr(config, 'is_reasoning_model', None),
|
||||
)
|
||||
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ class VllmLLM(LLMBase):
|
||||
top_k=config.top_k,
|
||||
enable_vision=config.enable_vision,
|
||||
vision_details=config.vision_details,
|
||||
http_client_proxies=config.http_client,
|
||||
http_client_proxies=config.http_client_proxies,
|
||||
)
|
||||
|
||||
super().__init__(config)
|
||||
|
||||
@@ -100,7 +100,7 @@ class LlmFactory:
|
||||
"top_k": config.top_k,
|
||||
"enable_vision": config.enable_vision,
|
||||
"vision_details": config.vision_details,
|
||||
"http_client_proxies": config.http_client,
|
||||
"http_client_proxies": config.http_client_proxies,
|
||||
}
|
||||
config_dict.update(kwargs)
|
||||
config = config_class(**config_dict)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
from typing import Dict, Optional, Union
|
||||
|
||||
import httpx
|
||||
|
||||
|
||||
def build_http_client(http_client_proxies: Optional[Union[Dict, str]]) -> Optional[httpx.Client]:
|
||||
if not http_client_proxies:
|
||||
return None
|
||||
if isinstance(http_client_proxies, dict):
|
||||
return httpx.Client(
|
||||
mounts={scheme: httpx.HTTPTransport(proxy=url) for scheme, url in http_client_proxies.items()}
|
||||
)
|
||||
return httpx.Client(proxy=http_client_proxies)
|
||||
Reference in New Issue
Block a user