Commit Graph

9 Commits

  • Add GeminiGetHandler, enhance Gemini functionality, and enable token counting
    - Added `GeminiGetHandler` for handling GET requests with extended Gemini model support.
    - Introduced `geminiCountTokens` function to calculate token usage.
    - Refactored `APIRequest` and related methods to support `alt` parameter for enhanced flexibility.
    - Updated routes and request processing to integrate new handler and functions.
  • Add GeminiModels handler and enhance API key validation
    - Introduced `GeminiModels` handler to serve Gemini model information under `/v1beta/models`.
    - Updated `AuthMiddleware` to validate API keys from query parameters for improved flexibility.
    - Adjusted route to use the new handler for model retrieval.
  • Add Claude compatibility and enhance API handling
    - Integrated Claude API compatibility in handlers, translators, and server routes.
    - Introduced `/messages` endpoint and upgraded `AuthMiddleware` for `X-Api-Key` header.
    - Improved streaming response handling with `ConvertCliToClaude` for SSE compatibility.
    - Enhanced request processing and tool-response mapping in translators.
    - Updated README to reflect Claude integration and clarify supported features.
  • Add Gemini-compatible API and improve error handling
    - Introduced a new Gemini-compatible API with routes under `/v1beta`.
    - Added `GeminiHandler` to manage `generateContent` and `streamGenerateContent` actions.
    - Enhanced `AuthMiddleware` to support `X-Goog-Api-Key` header.
    - Improved client metadata handling and added conditional project ID updates in API calls.
    - Updated logging to debug raw API request payloads for better traceability.
  • Refactor API handlers and proxy logic
    - Centralized `getClient` logic into a dedicated function to reduce redundancy.
    - Moved proxy initialization to a new utility function `SetProxy` in `internal/util/proxy.go`.
    - Replaced `Internal` handler with `CLIHandler` in `server.go` for improved clarity and consistency.
    - Removed unused functions and redundant HTTP client setup across the codebase for better maintainability.
  • Add system instruction support and enhance internal API handlers
    - Introduced `SystemInstruction` field in `PrepareRequest` and `GenerateContentRequest` for better message parsing.
    - Updated `SendMessage` and `SendMessageStream` to handle system instructions in client API calls.
    - Enhanced error handling and manual flushing logic in response flows.
    - Added new internal API endpoints `/v1internal:generateContent` and `/v1internal:streamGenerateContent`.
    - Improved proxy handling and transport logic in HTTP client initialization.
  • Enhance quota management and refactor configuration handling
    - Introduced `QuotaExceeded` settings in configuration to handle quota limits more effectively.
    - Added preview model switching logic to `Client` to automatically use fallback models on quota exhaustion.
    - Refactored `APIHandlers` to leverage new configuration structure.
    - Simplified server initialization and removed redundant `ServerConfig` structure.
    - Streamlined client initialization by unifying configuration handling throughout the project.
    - Improved error handling and response mechanisms in both streaming and non-streaming flows.