| # Provider Keys |
|
|
| ## Critical Boundary |
|
|
| MultiMind Classroom generation does not automatically reuse the OpenClaw agent's current model or API key. |
|
|
| MultiMind Classroom server APIs resolve their own model and provider keys from MultiMind Classroom server-side config. |
|
|
| This skill does not rely on runtime overrides for model, provider, API key, base URL, or provider type. |
|
|
| If the user wants to change any of those, they must edit MultiMind Classroom server-side config files. |
|
|
| ## Interaction Policy |
|
|
| - Do not begin by asking the user to paste an API key into chat. |
| - First, recommend a provider path. |
| - Then ask how the user wants to configure it. |
| - The user should edit `.env.local` or `server-providers.yml` themselves. |
| - Do not offer to write the key for them. |
| - Do not ask for the literal key in chat. |
| - Do not suggest temporary request-time overrides. |
| - If generation fails because of auth, provider, or model selection, direct the user back to server-side config files. |
|
|
| ## Preferred User Flow |
|
|
| 1. Recommend a provider option. |
| 2. Ask where the user wants to configure it: |
| - `.env.local` (recommended for most users) |
| - `server-providers.yml` |
| 3. Tell the user exactly which variables or YAML fields to edit. |
| 4. Wait for the user to confirm they finished editing before continuing. |
|
|
| ## Recommendation Paths |
|
|
| ### 1. Lowest-Friction Setup |
|
|
| Recommended when the user wants the smallest amount of configuration. |
|
|
| Set: |
|
|
| ```env |
| ANTHROPIC_API_KEY=sk-ant-... |
| ``` |
|
|
| Why: |
|
|
| - MultiMind Classroom server fallback is currently `gpt-4o-mini` if `DEFAULT_MODEL` is unset. |
| - If the user wants Anthropic or Google by default, they should set `DEFAULT_MODEL` explicitly. |
|
|
| ### 2. Better Speed / Cost Balance |
|
|
| Recommended when the user is willing to set one extra variable. |
|
|
| Set: |
|
|
| ```env |
| GOOGLE_API_KEY=... |
| DEFAULT_MODEL=google:gemini-3-flash-preview |
| ``` |
|
|
| Why: |
|
|
| - Good quality-to-speed balance |
| - Matches the repo's current recommendation direction better than the default fallback |
| - The `google:` prefix is important. Without a provider prefix, model parsing defaults to OpenAI. |
|
|
| ### 3. Existing Provider Reuse |
|
|
| Use when the user already has OpenAI or another supported provider configured and wants to stick with it. |
|
|
| Examples: |
|
|
| ```env |
| OPENAI_API_KEY=sk-... |
| DEFAULT_MODEL=openai:gpt-4o-mini |
| ``` |
|
|
| ```env |
| DEEPSEEK_API_KEY=... |
| DEFAULT_MODEL=deepseek:deepseek-chat |
| ``` |
|
|
| ## Model String Rule |
|
|
| When recommending or showing `DEFAULT_MODEL`, always include the provider prefix: |
|
|
| - `google:gemini-3-flash-preview` |
| - `anthropic:claude-3-5-haiku-20241022` |
| - `openai:gpt-4o-mini` |
| - `deepseek:deepseek-chat` |
|
|
| Do not recommend bare model IDs such as `gemini-3-flash-preview` by themselves, because MultiMind Classroom will otherwise parse them as OpenAI models. |
|
|
| Do not work around a wrong `DEFAULT_MODEL` by changing request parameters. The user should fix the server-side config instead. |
|
|
| ## Preferred Config Method |
|
|
| For first setup, prefer `.env.local`: |
|
|
| ```bash |
| cp .env.example .env.local |
| ``` |
|
|
| Then fill the chosen keys. |
|
|
| Alternative: `server-providers.yml` |
|
|
| ```yaml |
| providers: |
| anthropic: |
| apiKey: sk-ant-... |
| |
| google: |
| apiKey: ... |
| |
| openai: |
| apiKey: sk-... |
| ``` |
|
|
| If using a non-default provider for classroom generation, also set the model selection explicitly: |
|
|
| ```env |
| DEFAULT_MODEL=google:gemini-3-flash-preview |
| ``` |
|
|
| ## Recommended Prompts To The User |
|
|
| Preferred: |
|
|
| - "I recommend configuring MultiMind Classroom through `.env.local` first. Please edit that file locally and tell me when you're done." |
| - "For the simplest setup, I recommend Anthropic. For better speed/cost balance, I recommend Google plus `DEFAULT_MODEL=google:gemini-3-flash-preview`. Which path do you want?" |
|
|
| Avoid as the first move: |
|
|
| - "Send me your API key" |
| - "Paste your API key here" |
| - "Do you want me to write the key for you?" |
|
|
| ## Confirmation Requirements |
|
|
| - Recommend one provider path first. |
| - Ask the user which config-file path they want. |
| - Instruct the user to modify the file themselves. |
| - Wait for the user to confirm they finished editing before continuing. |
| - Do not request the literal key. |
| - If provider/model/auth errors happen later, tell the user exactly which config entry to fix and wait for confirmation before retrying. |
|
|
| ## Optional Features |
|
|
| These features require additional provider keys beyond the core LLM provider. Ask the user if they want to enable any of these after the core LLM key is configured. |
|
|
| | Feature | Env Variable(s) | Description | |
| |---------|-----------------|-------------| |
| | Web Search | `TAVILY_API_KEY` | Enriches outlines with real-time web research | |
| | Image Generation | `IMAGE_SEEDREAM_API_KEY`, `IMAGE_QWEN_IMAGE_API_KEY`, `IMAGE_NANO_BANANA_API_KEY` | Generates images for slides (any one suffices) | |
| | Video Generation | `VIDEO_SEEDANCE_API_KEY`, `VIDEO_KLING_API_KEY`, `VIDEO_VEO_API_KEY`, `VIDEO_SORA_API_KEY` | Generates short videos (any one suffices) | |
| | TTS | `TTS_OPENAI_API_KEY`, `TTS_AZURE_API_KEY`, `TTS_GLM_API_KEY`, `TTS_QWEN_API_KEY` | Text-to-speech narration (any one suffices) | |
|
|
| These are all optional. The classroom generation works without them — they only unlock richer content. |
|
|
| Alternatively, configure via `server-providers.yml`: |
|
|
| ```yaml |
| web-search: |
| tavily: |
| apiKey: tvly-... |
| |
| image: |
| seedream: |
| apiKey: ... |
| |
| video: |
| seedance: |
| apiKey: ... |
| |
| tts: |
| openai-tts: |
| apiKey: sk-... |
| ``` |
|
|