Lightweight, high-performance Python wrapper for the Google Gemini API.
Project description
gsdk 🚀
gsdk (Gemini SDK) is a lightweight, high-performance Python wrapper for the Google Gemini API (built on the modern google-genai). It is designed for production use, offering automatic key rotation, session persistence, and real-time streaming.
✨ Key Features
- 🔑 Smart Key Rotation: Automatically switch between multiple API keys when you hit rate limits (429/403).
- 🌊 Streaming Support: Real-time response generation with automatic history updates.
- 🔄 Configurable Retries: Set custom retry counts and delays for maximum stability.
- 💾 Session Persistence: Built-in support for File and Redis storage.
- ⚙️ Full Flexibility: Pass any generation parameter (
temperature,top_p,max_tokens) globally or per request. - 🔍 Google Search Grounding: Integrated real-time web search capabilities.
- 📁 Media Support: Simplified async file uploads for multimodal tasks.
📦 Installation
pip install gsdk
🚀 Quick Start
Basic Chat
import asyncio
from gsdk import GeminiSDK
async def main():
sdk = GeminiSDK(api_keys=["YOUR_API_KEY"], model_name="gemini-flash-latest")
response = await sdk.ask("session_1", "Hello! Who are you?")
print(f"AI: {response.text}")
asyncio.run(main())
🌊 Real-time Streaming
Perfect for chat interfaces where you want to show text as it is generated.
async def stream_example():
sdk = GeminiSDK(api_keys=["KEY_1", "KEY_2"])
print("AI: ", end="", flush=True)
async for chunk in sdk.ask_stream("session_1", "Write a long poem about coding."):
print(chunk, end="", flush=True)
asyncio.run(stream_example())
🛠 Advanced Usage
1. Production Storage (Redis)
Share session history across multiple workers or servers.
from gsdk.storage import RedisStorage
storage = RedisStorage(host='localhost', port=6379)
sdk = GeminiSDK(api_keys=["..."], storage=storage)
2. Handling Images and Files
# Upload image or document
media = await sdk.media.upload_file("chart.png")
# Multimodal request
response = await sdk.ask("session_2", [media, "Analyze this chart."])
print(response.text)
3. Google Search Grounding
sdk = GeminiSDK(api_keys=["..."], use_search=True)
response = await sdk.ask("news", "What's happening in AI today?")
print(f"Sources used: {response.sources}")
📖 API Reference
GeminiSDK Methods
| Method | Description |
|---|---|
ask(session_id, content, **kwargs) |
Sends a message and returns a full GeminiResponse. |
ask_stream(session_id, content, **kwargs) |
Async Generator. Yields text chunks and saves history after completion. |
media.upload_file(path) |
Uploads a file to Google servers for multimodal input. |
Configuration Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
api_keys |
List[str] |
Required | List of keys for rotation. |
model_name |
str |
gemini-3-flash-preview |
The Gemini model version. |
storage |
BaseStorage |
FileStorage |
How to store conversation history. |
max_retries |
int |
keys * 3 |
Total attempts for failed requests. |
retry_delay |
float |
5.0 |
Seconds to wait after a rate limit. |
**gen_config |
kwargs |
None |
Global defaults for temperature, top_p, etc. |
🤝 Contributing
- Fork the Project.
- Create your Feature Branch.
- Commit your Changes.
- Push to the Branch.
- Open a Pull Request.
📜 License
Distributed under the MIT License.
gsdk — Powering the next generation of Gemini applications. 🚀
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gsdk-1.0.8.tar.gz.
File metadata
- Download URL: gsdk-1.0.8.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78d650d6c219300db05c771fbcb5c777cfa243ec8353f0ead9d19f2c461e1e2d
|
|
| MD5 |
0fa7cceaec07bf9ae92d5f7e96c63920
|
|
| BLAKE2b-256 |
3c36d454a6c97de62c22e3e084d46ce4c11f412996bc2f0c1e4be35256f2aa7b
|
File details
Details for the file gsdk-1.0.8-py3-none-any.whl.
File metadata
- Download URL: gsdk-1.0.8-py3-none-any.whl
- Upload date:
- Size: 8.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96e6d8d7530a357dba29bbb336ae82d6996d0b760d813724075dfccc8840e435
|
|
| MD5 |
cf96dee5bcf500334cddf5dddc1d7f2e
|
|
| BLAKE2b-256 |
dd27c490bffe1e3460589b40b853a8813bb62d084e29c5fb5844895e706b26e5
|