@@ -100,14 +100,16 @@ def get_llm_model(provider: str, **kwargs) -> BaseChatModel:
100100 )
101101
102102 # For providers not directly supported by browser-use, use OpenAI-compatible API
103- elif provider in ["grok" , "alibaba" , "moonshot" , "unbound" , "siliconflow" , "modelscope" ]:
103+ elif provider in ["grok" , "alibaba" , "moonshot" , "unbound" , "siliconflow" , "modelscope" , "mistral" , "ibm" ]:
104104 base_url_map = {
105105 "grok" : os .getenv ("GROK_ENDPOINT" , "https://api.x.ai/v1" ),
106106 "alibaba" : os .getenv ("ALIBABA_ENDPOINT" , "https://dashscope.aliyuncs.com/compatible-mode/v1" ),
107107 "moonshot" : os .getenv ("MOONSHOT_ENDPOINT" ),
108108 "unbound" : os .getenv ("UNBOUND_ENDPOINT" , "https://api.getunbound.ai" ),
109109 "siliconflow" : os .getenv ("SILICONFLOW_ENDPOINT" , "" ),
110- "modelscope" : os .getenv ("MODELSCOPE_ENDPOINT" , "" )
110+ "modelscope" : os .getenv ("MODELSCOPE_ENDPOINT" , "" ),
111+ "mistral" : os .getenv ("MISTRAL_ENDPOINT" , "https://api.mistral.ai/v1" ),
112+ "ibm" : os .getenv ("IBM_ENDPOINT" , "https://us-south.ml.cloud.ibm.com" )
111113 }
112114
113115 model_defaults = {
@@ -116,19 +118,29 @@ def get_llm_model(provider: str, **kwargs) -> BaseChatModel:
116118 "moonshot" : "moonshot-v1-32k-vision-preview" ,
117119 "unbound" : "gpt-4o-mini" ,
118120 "siliconflow" : "Qwen/QwQ-32B" ,
119- "modelscope" : "Qwen/QwQ-32B"
121+ "modelscope" : "Qwen/QwQ-32B" ,
122+ "mistral" : "pixtral-large-latest" ,
123+ "ibm" : "ibm/granite-vision-3.1-2b-preview"
120124 }
121125
122126 base_url = kwargs .get ("base_url" ) or base_url_map [provider ]
123127 if not base_url :
124128 raise ValueError (f"{ provider } endpoint is required" )
129+
130+ # Special handling for IBM which may require project_id in headers
131+ extra_headers = {}
132+ if provider == "ibm" :
133+ project_id = kwargs .get ("project_id" ) or os .getenv ("IBM_PROJECT_ID" )
134+ if project_id :
135+ extra_headers ["X-Project-ID" ] = project_id
125136
126137 return ChatOpenAI (
127138 model = kwargs .get ("model_name" , model_defaults [provider ]),
128139 temperature = kwargs .get ("temperature" , 0.2 ),
129140 base_url = base_url ,
130141 api_key = api_key ,
142+ extra_headers = extra_headers if extra_headers else None ,
131143 )
132144
133145 else :
134- raise ValueError (f"Unsupported provider: { provider } . Supported providers: anthropic, openai, google, groq, ollama, azure_openai, deepseek, grok, alibaba, moonshot, unbound, siliconflow, modelscope" )
146+ raise ValueError (f"Unsupported provider: { provider } . Supported providers: anthropic, openai, google, groq, ollama, azure_openai, deepseek, grok, alibaba, moonshot, unbound, siliconflow, modelscope, mistral, ibm " )
0 commit comments