|
Download README.md from AZILS/gemini: direct link, hf CLI and curl.
- Browser
- Download file 3.54 kB
-
https://huggingface.co/spaces/AZILS/gemini/resolve/main/README.md
- Command line
-
hf download hf://spaces/AZILS/gemini/README.md
-
curl -L -o README.md https://huggingface.co/spaces/AZILS/gemini/resolve/main/README.md
3.54 kB
| title: Antigravity API Proxy | |
| emoji: "\U0001F680" | |
| colorFrom: blue | |
| colorTo: purple | |
| sdk: docker | |
| app_port: 7860 | |
| pinned: false | |
| license: cc-by-nc-sa-4.0 | |
| # Antigravity API Proxy | |
| A cloud-deployed API proxy service that converts Google AI Web sessions to standard API interfaces (OpenAI, Claude, Gemini formats). | |
| ## Features | |
| - **Multi-Protocol Support**: OpenAI, Claude, and Gemini API formats | |
| - **Token Management**: Automatic token refresh and rotation | |
| - **Web UI**: Account and configuration management interface | |
| - **Model Mapping**: Flexible model aliasing | |
| - **API Key Authentication**: Secure access with multiple API keys | |
| ## Authentication | |
| ### Frontend Access (Web UI) | |
| The web management interface is protected by HuggingFace Spaces password. | |
| Set this in: **Settings → Access control → Password** | |
| ### API Proxy Authentication | |
| Configure API keys in HuggingFace **Settings → Secrets**: | |
| | Secret Name | Description | | |
| |-------------|-------------| | |
| | `API_KEYS` | Comma-separated list: `key1,key2,key3` | | |
| | `API_KEY_1` | First API key | | |
| | `API_KEY_2` | Second API key | | |
| | `API_KEY` | Single API key (backward compatible) | | |
| **Example:** | |
| ``` | |
| API_KEYS = sk-abc123,sk-def456,sk-ghi789 | |
| ``` | |
| When calling the API, include your key in the request header: | |
| ```bash | |
| # Option 1: Authorization header | |
| curl -H "Authorization: Bearer sk-abc123" ... | |
| # Option 2: X-API-Key header | |
| curl -H "X-API-Key: sk-abc123" ... | |
| ``` | |
| ## Endpoints | |
| ### OpenAI Compatible | |
| - `POST /v1/chat/completions` - Chat completions | |
| - `GET /v1/models` - List models | |
| ### Claude Compatible | |
| - `POST /v1/messages` - Messages API | |
| - `GET /v1/models/claude` - List Claude models | |
| ### Gemini Native | |
| - `POST /v1beta/models/:model:generateContent` - Generate content | |
| - `GET /v1beta/models` - List Gemini models | |
| ## Usage Examples | |
| ### OpenAI SDK (Python) | |
| ```python | |
| from openai import OpenAI | |
| client = OpenAI( | |
| base_url="https://your-space.hf.space/v1", | |
| api_key="sk-your-api-key" | |
| ) | |
| response = client.chat.completions.create( | |
| model="gpt-4", | |
| messages=[{"role": "user", "content": "Hello!"}] | |
| ) | |
| print(response.choices[0].message.content) | |
| ``` | |
| ### Claude SDK (Python) | |
| ```python | |
| import anthropic | |
| client = anthropic.Anthropic( | |
| base_url="https://your-space.hf.space", | |
| api_key="sk-your-api-key" | |
| ) | |
| message = client.messages.create( | |
| model="claude-3-5-sonnet-20241022", | |
| max_tokens=1024, | |
| messages=[{"role": "user", "content": "Hello!"}] | |
| ) | |
| print(message.content) | |
| ``` | |
| ### cURL | |
| ```bash | |
| curl -X POST https://your-space.hf.space/v1/chat/completions \ | |
| -H "Authorization: Bearer sk-your-api-key" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{ | |
| "model": "gpt-4", | |
| "messages": [{"role": "user", "content": "Hello!"}] | |
| }' | |
| ``` | |
| ## Configuration | |
| Access the web UI at the root URL to manage: | |
| - **Accounts**: Add via Refresh Token | |
| - **Model Mappings**: Map OpenAI/Claude models to Gemini | |
| - **Proxy Settings**: Configure upstream proxy if needed | |
| ## Environment Variables | |
| | Variable | Description | Required | | |
| |----------|-------------|----------| | |
| | `API_KEYS` | Comma-separated API keys | No* | | |
| | `API_KEY_1`, `API_KEY_2`, ... | Individual API keys | No* | | |
| | `PORT` | Server port (default: 7860) | No | | |
| *If no API keys are configured, authentication is disabled. | |
| ## Security Notes | |
| 1. **Always set API keys** in production to prevent unauthorized access | |
| 2. **Enable Space password** to protect the management UI | |
| 3. Refresh tokens are stored in `/data` persistent storage | |
| 4. Consider the security implications of storing tokens in cloud environments | |