{# How to get the key of each AI or embeddings provider. Each block is only shown for the chosen provider (`data-providers`, see preferences.js). #} {% macro key_help(providers) -%} {% for p in providers %}
{% if p == "anthropic" %}

{{ _("Get an Anthropic key") }} · platform.claude.com/settings/keys

  1. {{ _("Sign in to the Claude Console. It is separate from a Claude Pro or Max subscription: to use a subscription, choose “Claude subscription” instead.") }}
  2. {{ _("Settings → API keys → Create key, then copy the key (sk-ant-…): it is shown only once.") }}
  3. {{ _("Billing: add credit, the API is billed per use.") }}
{% elif p == "openai" %}

{{ _("Get an OpenAI key") }} · platform.openai.com/api-keys

  1. {{ _("Sign in to the OpenAI platform. It is separate from a ChatGPT subscription.") }}
  2. {{ _("API keys → Create new secret key, then copy the key (sk-…): it is shown only once.") }}
  3. {{ _("Billing: add credit, the API is billed per use.") }}
{% elif p == "mistral" %}

{{ _("Get a Mistral key") }} · console.mistral.ai/api-keys

  1. {{ _("Sign in to the Mistral console and choose a plan in Billing to enable the API.") }}
  2. {{ _("API Keys → Create new key, then copy the key: it is shown only once.") }}
{% elif p == "gemini" %}

{{ _("Get a Gemini key") }} · aistudio.google.com/apikey

  1. {{ _("Sign in to Google AI Studio with a Google account.") }}
  2. {{ _("Get API key → Create API key (in a Google Cloud project), then copy the key (AIza…).") }}
  3. {{ _("Without billing enabled on the project, the free tier applies: lower quotas, and Google may use the content sent to improve its products. For team data, enable billing.") }}
{% elif p == "voyage" %}

{{ _("Get a Voyage AI key") }} · dashboard.voyageai.com

  1. {{ _("Create an account on the Voyage AI dashboard.") }}
  2. {{ _("API Keys → Create new secret key, then copy the key: it is shown only once.") }}
  3. {{ _("Add a payment method to lift the rate limits.") }}
{% elif p == "ollama" %}

{{ _("Ollama: no key") }} · ollama.com/download

  1. {{ _("Install Ollama on a machine Synaptane can reach, then pull the model, for example “ollama pull bge-m3” for embeddings.") }}
  2. {{ _("API address: http://:11434/v1. Under Docker, localhost is the Synaptane container, not the server: enter the machine's or service's address. Only the super admin can change the address.") }}
{% elif p == "openai_compatible" %}

{{ _("OpenAI-compatible API") }}

  1. {{ _("The key and address come from your service: LiteLLM gateway, vLLM, Azure OpenAI, OpenRouter… The address usually ends with /v1.") }}
  2. {{ _("Only the super admin can enter an address: the server would then call that destination.") }}
{% endif %}
{% endfor %} {%- endmacro %}