| # Toolify Configuration Example File | |
| # Please copy this file as config.yaml and modify the configuration according to your actual needs | |
| # Server configuration | |
| server: | |
| port: 8000 # Server listening port | |
| host: "0.0.0.0" # Server listening address | |
| timeout: 180 # Request timeout (seconds) | |
| # Upstream OpenAI compatible service configuration | |
| upstream_services: | |
| - name: "openai" | |
| base_url: "https://api.openai.com/v1" | |
| api_key: "your-openai-api-key-here" | |
| description: "OpenAI Official Service" | |
| is_default: true | |
| models: | |
| - "gpt-3.5-turbo" | |
| - "gpt-3.5-turbo-16k" | |
| - "gpt-4" | |
| - "gpt-4-turbo" | |
| - "gpt-4o" | |
| - "gpt-4o-mini" | |
| - name: "google" | |
| base_url: "https://generativelanguage.googleapis.com/v1beta/openai/" | |
| api_key: "your-google-api-key-here" | |
| description: "Google Gemini Service" | |
| is_default: false | |
| models: | |
| # Use alias "gemini-2.5" to randomly select one of the following models | |
| - "gemini-2.5:gemini-2.5-pro" | |
| - "gemini-2.5:gemini-2.5-flash" | |
| # You can also define models that can be used directly | |
| - "gemini-2.5-pro" | |
| - "gemini-2.5-flash" | |
| # Client authentication configuration | |
| client_authentication: | |
| allowed_keys: | |
| - "sk-my-secret-key-1" | |
| - "sk-my-secret-key-2" | |
| # Feature configuration | |
| features: | |
| enable_function_calling: true # Enable function calling feature | |
| log_level: "INFO" # Logging level: DEBUG, INFO, WARNING, ERROR, CRITICAL, or DISABLED | |
| convert_developer_to_system: true # Whether to convert the developer role to the system role | |
| key_passthrough: false # If true, directly forward client-provided API key to upstream instead of using configured upstream key | |
| model_passthrough: false # If true, forward all requests directly to the 'openai' upstream service, ignoring model-based routing | |
| # Custom prompt template (optional). If not provided, the default prompt will be used. | |
| # The default prompt includes comprehensive features: | |
| # - Support for multiple tool calls in a single response | |
| # - Context awareness to avoid duplicate tool calls | |
| # - Strict parameter matching rules (preserving special characters like hyphens) | |
| # - Clear format requirements with correct and incorrect examples | |
| # - Tool result tracking via XML tags | |
| # | |
| # You can uncomment and customize the following template if needed: | |
| # prompt_template: | | |
| # Your custom prompt template here... | |
| # Must include {tools_list} and {trigger_signal} placeholders | |
| # Configuration explanation: | |
| # 1. upstream_services: Configure multiple OpenAI compatible API services | |
| # - name: Service name (for identification) | |
| # - base_url: Base URL of the service | |
| # - api_key: API key for the corresponding service | |
| # - models: Complete list of models supported by the service | |
| # - is_default: Whether it is the default service (used when the requested model is not in any service's model list) | |
| # - description: Service description (optional) | |
| # | |
| # 2. Routing matching rules: | |
| # - The system will exactly match the corresponding service based on the model name in the request | |
| # - If the model name is not in the models list of any service, the service with is_default set to true will be used | |
| # - There must be one and only one service marked as is_default: true | |
| # | |
| # 3. Client authentication: | |
| # - allowed_keys: List of client API keys allowed to access this middleware | |
| # | |
| # 4. Logging levels: | |
| # - DEBUG: Show all debug information (most verbose) | |
| # - INFO: Show general information, warnings and errors | |
| # - WARNING: Show only warnings and errors | |
| # - ERROR: Show only errors | |
| # - CRITICAL: Show only critical errors | |
| # - DISABLED: Disable all logging | |
| # | |
| # 5. Security reminders: | |
| # - Please keep API keys safe and do not commit configuration files containing real keys to version control systems | |
| # - It is recommended to use different configuration files for different environments | |
| # - Environment variables can be used to manage sensitive information |