9
9
import time
10
10
from pathlib import Path
11
11
from typing import Dict , Optional
12
+ from pydantic import SecretStr
12
13
13
14
from langchain_anthropic import ChatAnthropic
14
15
from langchain_google_genai import ChatGoogleGenerativeAI
@@ -30,15 +31,17 @@ def get_llm_model(provider: str, **kwargs):
30
31
base_url = kwargs .get ("base_url" )
31
32
32
33
if not kwargs .get ("api_key" , "" ):
33
- api_key = os .getenv ("ANTHROPIC_API_KEY" , "" )
34
+ api_key = SecretStr ( os .getenv ("ANTHROPIC_API_KEY" ) or "" )
34
35
else :
35
- api_key = kwargs .get ("api_key" )
36
+ api_key = SecretStr ( kwargs .get ("api_key" ) or " " )
36
37
37
38
return ChatAnthropic (
38
39
model_name = kwargs .get ("model_name" , "claude-3-5-sonnet-20240620" ),
39
40
temperature = kwargs .get ("temperature" , 0.0 ),
40
41
base_url = base_url ,
41
42
api_key = api_key ,
43
+ timeout = kwargs .get ("timeout" , 60 ),
44
+ stop = kwargs .get ("stop" , None )
42
45
)
43
46
elif provider == "openai" :
44
47
if not kwargs .get ("base_url" , "" ):
@@ -47,15 +50,16 @@ def get_llm_model(provider: str, **kwargs):
47
50
base_url = kwargs .get ("base_url" )
48
51
49
52
if not kwargs .get ("api_key" , "" ):
50
- api_key = os .getenv ("OPENAI_API_KEY" , "" )
53
+ api_key = SecretStr ( os .getenv ("OPENAI_API_KEY" ) or "" )
51
54
else :
52
- api_key = kwargs .get ("api_key" )
55
+ api_key = SecretStr ( kwargs .get ("api_key" ) or " " )
53
56
54
57
return ChatOpenAI (
55
- model = kwargs .get ("model_name" , "gpt-4o " ),
58
+ model = kwargs .get ("model_name" , "gpt-4 " ),
56
59
temperature = kwargs .get ("temperature" , 0.0 ),
57
60
base_url = base_url ,
58
61
api_key = api_key ,
62
+ timeout = kwargs .get ("timeout" , 60 ),
59
63
)
60
64
elif provider == "deepseek" :
61
65
if not kwargs .get ("base_url" , "" ):
@@ -64,25 +68,37 @@ def get_llm_model(provider: str, **kwargs):
64
68
base_url = kwargs .get ("base_url" )
65
69
66
70
if not kwargs .get ("api_key" , "" ):
67
- api_key = os .getenv ("DEEPSEEK_API_KEY" , "" )
71
+ api_key = SecretStr ( os .getenv ("DEEPSEEK_API_KEY" ) or "" )
68
72
else :
69
- api_key = kwargs .get ("api_key" )
73
+ api_key = SecretStr ( kwargs .get ("api_key" ) or " " )
70
74
71
75
return ChatOpenAI (
72
76
model = kwargs .get ("model_name" , "deepseek-chat" ),
73
77
temperature = kwargs .get ("temperature" , 0.0 ),
74
78
base_url = base_url ,
75
79
api_key = api_key ,
80
+ timeout = kwargs .get ("timeout" , 60 ),
76
81
)
77
82
elif provider == "gemini" :
78
83
if not kwargs .get ("api_key" , "" ):
79
- api_key = os .getenv ("GOOGLE_API_KEY" , "" )
84
+ api_key = SecretStr ( os .getenv ("GOOGLE_API_KEY" ) or "" )
80
85
else :
81
- api_key = kwargs .get ("api_key" )
86
+ api_key = SecretStr (kwargs .get ("api_key" ) or "" )
87
+
88
+ # Get model name from environment or kwargs
89
+ model_name = kwargs .get ("model_name" )
90
+ if not model_name :
91
+ if kwargs .get ("vision" ):
92
+ model_name = os .getenv ("GOOGLE_API_MODEL" , "gemini-1.5-flash" )
93
+ else :
94
+ model_name = os .getenv ("GOOGLE_API_TYPE" , "gemini-1.5-flash" )
95
+
82
96
return ChatGoogleGenerativeAI (
83
- model = kwargs . get ( " model_name" , "gemini-2.0-flash-exp" ) ,
97
+ model = model_name ,
84
98
temperature = kwargs .get ("temperature" , 0.0 ),
85
- google_api_key = api_key ,
99
+ api_key = api_key ,
100
+ timeout = kwargs .get ("timeout" , 60 ),
101
+ convert_system_message_to_human = True
86
102
)
87
103
elif provider == "ollama" :
88
104
return ChatOllama (
@@ -97,9 +113,9 @@ def get_llm_model(provider: str, **kwargs):
97
113
else :
98
114
base_url = kwargs .get ("base_url" )
99
115
if not kwargs .get ("api_key" , "" ):
100
- api_key = os .getenv ("AZURE_OPENAI_API_KEY" , "" )
116
+ api_key = SecretStr ( os .getenv ("AZURE_OPENAI_API_KEY" ) or "" )
101
117
else :
102
- api_key = kwargs .get ("api_key" )
118
+ api_key = SecretStr ( kwargs .get ("api_key" ) or " " )
103
119
return AzureChatOpenAI (
104
120
model = kwargs .get ("model_name" , "gpt-4o" ),
105
121
temperature = kwargs .get ("temperature" , 0.0 ),
0 commit comments