Request for Proxy Configuration Support in google-generativeai Library to Route Traffic Through Proxies
Description of the feature request:
I need to use the google-generativeai Python library with routing its api requests through a proxy. However, the library doesn't natively support passing proxy configurations directly when initializing the client.
Feature Request
Add support for passing proxy configurations (e.g., as part of client_options) directly to the google-generativeai client, ensuring all network requests—including file uploads—are routed through the proxy.
What problem are you trying to solve with this feature?
This would avoid the need for global proxy settings or reverse proxies, offering a cleaner and more robust solution in network-restricted environments.
Any other information you'd like to share?
I have tried the following approaches, each with limitations:
-
Global Environment Variables (
os.environ['HTTP_PROXY'],os.environ['HTTPS_PROXY)- This works but affects all network requests globally, which is problematic in my multi-threaded, multi-process environment of the project. Managing when to apply or remove these settings isn't practical.
-
Reverse Proxy with Custom API Endpoint
- Since
genai.configure()supportsapi_endpointparameter, I created a custom route on my project that routes requests as a reverse proxy. This works formodel.generate_contentfunction but fails with thegenai.upload_filefunction, as it hardcodes Google's endpoint, bypassing the custom API endpoint.
- Since
Also have similar requirements, and I hope the team can support this feature
FYI, I've given up on this and created a separate utility function for file uploads. Use aiohttp instead of requests for async. It wraps the result in genai File object, so, can be natively used with genai code
If someone is behinde proxy , all call simply return 403 , and there is no way to make it works unfortunately , SDK do not respect ENV variable , and no option to configure the proxy, WHY? we don't know!
just set global environment variables grpc_proxy, see doc gRPC environment variables
Thanks @AnoyiX setting grpc_proxy , resolved issue.
just set global environment variables
grpc_proxy, see doc gRPC environment variables
however, the genai.upload_file still doesnt work, right?
The FileServiceClient class uses an httplib2.Http() instance without any proxy configuration
I tried to solve it hopefully