Files
Reactive-Resume/docs/guides/using-ai.mdx
T
Amruth Pillai d46b4b5815 docs: rewrite the documentation for v6
Rewrite every guide for the redesigned app, add guides for new features (documents, editor modes, check, cover letters, assistant, applications, self-hosting upgrade and environment reference), remove v5-only pages with redirects, and replace every screenshot.
2026-09-30 05:07:06 +02:00

150 lines
9.8 KiB
Plaintext

---
title: "Connecting an AI provider"
description: "Add your own AI provider key in Reactive Resume, test the connection, and choose which provider the assistant and other AI features use."
---
Reactive Resume doesn't include an AI model of its own. To use the assistant, AI imports, drafting and the other AI features, you connect a provider you already have an account with (such as OpenAI, Anthropic or Google Gemini) using your own API key. Everything else in the app works without AI.
## Before you start
- Get an API key from your provider's dashboard. You pay the provider directly for what you use.
- Know which model you want to use, such as `gpt-4.1` or `claude-3-5-sonnet-latest`. Reactive Resume suggests a default for each provider, but your account may not have access to every model.
## Add a provider
<Steps>
<Step title="Open AI settings">
Select your name at the bottom of the sidebar, choose **Settings**, then choose **AI & developer**. You can also go to `https://rxresu.me/dashboard/settings/ai` directly. Self-hosted instances use their own address.
</Step>
<Step title="Start adding a provider">
Under **AI providers**, select **Add provider** (the dashed button below your saved providers).
</Step>
<Step title="Choose the provider and fill in the fields">
Pick your provider from the **Provider** list. Reactive Resume fills in that provider's usual **Model** and **Base URL** for you. Paste your key into **API key**, and change the model if you want a different one.
<Frame caption="The Add provider dialog">
<img src="/images/guides/using-ai/add-provider-dialog.webp" alt="Add provider dialog with Provider set to OpenAI, a hidden API key, Model gpt-4.1, Name Personal OpenAI and the default OpenAI base URL" />
</Frame>
</Step>
<Step title="Save and test">
Select **Save and test**. Reactive Resume saves the provider, then sends it a tiny request to check that the key, model and address work. If the test passes, the dialog closes and the provider is ready to use.
</Step>
</Steps>
If the test fails, the dialog shows the provider's own error message, such as an invalid key or an unknown model. The provider is still saved, so you can fix it later with **Edit** instead of starting again.
### The fields
| Field | What to enter |
| --- | --- |
| **Provider** | The company or service that runs the model. |
| **API key** | The key from your provider's dashboard. Required. |
| **Model** | The model name exactly as your provider writes it. Required. |
| **Name** | A label you'll recognize, such as "Work OpenAI". If you leave it empty, the provider's name is used. |
| **Base URL** | The address requests go to. Leave the default unless you use a gateway, a proxy or an OpenAI-compatible service. |
### Supported providers
| Provider | Default model | Default base URL |
| --- | --- | --- |
| OpenAI | `gpt-4.1` | `https://api.openai.com/v1` |
| Anthropic Claude | `claude-3-5-sonnet-latest` | `https://api.anthropic.com/v1` |
| Google Gemini | `gemini-2.0-flash` | `https://generativelanguage.googleapis.com/v1beta` |
| Vercel AI Gateway | `openai/gpt-4.1` | `https://ai-gateway.vercel.sh/v3/ai` |
| OpenRouter | `openai/gpt-4.1` | `https://openrouter.ai/api/v1` |
| Mistral AI | `mistral-large-latest` | `https://api.mistral.ai/v1` |
| Cohere | `command-a-03-2025` | `https://api.cohere.com/v2` |
| xAI Grok | `grok-4` | `https://api.x.ai/v1` |
| Groq | `llama-3.3-70b-versatile` | `https://api.groq.com/openai/v1` |
| DeepSeek | `deepseek-chat` | `https://api.deepseek.com/v1` |
| Together.ai | `meta-llama/Meta-Llama-3.3-70B-Instruct-Turbo` | `https://api.together.xyz/v1` |
| Fireworks | `accounts/fireworks/models/llama-v3p3-70b-instruct` | `https://api.fireworks.ai/inference/v1` |
| Cerebras | `llama3.3-70b` | `https://api.cerebras.ai/v1` |
| Perplexity | `sonar-pro` | `https://api.perplexity.ai` |
| Ollama Cloud | `llama3.1` | `https://ollama.com/api` |
| OpenAI-compatible | none, enter your own | none, enter your own |
Choose **OpenAI-compatible** for any other service that speaks the OpenAI API, such as a company gateway or LiteLLM. It needs both a model and a base URL.
The base URL must start with `https://` and point to a public address. On the hosted instance, that means a model running on your own computer (for example, a local Ollama) can't be connected. Self-hosters can allow local and `http://` addresses; see [Environment variables](/self-hosting/environment-variables).
## Test a provider again
Each saved provider appears as a row under **AI providers**, showing its name, model and the last four characters of the key. The row shows **Off** next to the name when the provider isn't in use.
<Frame caption="A provider after a successful test">
<img src="/images/guides/using-ai/provider-row-connected.webp" alt="AI providers section with one provider named Work gateway, model gpt-5-mini, and a Test button reading Connected · 40 ms, followed by the Add provider button" />
</Frame>
Select **Test** on a row to check it again. The button changes to **Connected** with the round-trip time (for example, **Connected · 420 ms**), or to **Failed** with the provider's error message underneath. A passed test turns the provider on; a failed test turns it off, so the app never uses a provider that isn't answering.
## Edit, turn off or delete a provider
Select **Edit** on a provider's row.
<Frame caption="Editing a saved provider">
<img src="/images/guides/using-ai/edit-provider-dialog.webp" alt="Edit dialog for a provider named Work gateway, with an empty API key field reading Leave empty to keep the saved key, the model, name and base URL fields, the Use this provider switch turned on, Delete provider and Save and test" />
</Frame>
- **Change the key, model, name or base URL**, then select **Save and test**. Leave **API key** empty to keep the saved key. Changing the key, model or base URL turns the provider off until the new test passes.
- **Turn it on or off** with **Use this provider**. Only a provider that passed its test can be turned on. A provider that is off stays saved but isn't offered anywhere in the app.
- **Delete it** with **Delete provider**. The provider and its stored key are removed right away, without a confirmation step.
<Warning>
Deleting a provider can't be undone. Assistant conversations that used it become read-only until you pick another model in the conversation. Documents and edits you already accepted aren't affected.
</Warning>
## Which provider is used
You can save several providers, for example one per account or one per model.
- The **assistant** starts new conversations with the provider you used most recently. You can switch models from the model menu in the assistant's header at any time. See [Using the assistant](/guides/using-the-assistant).
- **Check → Writing** lets you pick the provider for each review.
- Other AI features (reading Word and PDF files on import, **Improve selected line**, drafting a letter, and reading a pasted job posting) use the oldest provider you added that is turned on.
## Connect from the assistant instead
If no provider is connected yet, opening the assistant in the editor shows **Connect an AI provider** with OpenAI, Anthropic and **Other · OpenAI-compatible**. Enter your key and model there and select **Connect**. It saves and tests the provider the same way as settings. For the other providers, use **AI & developer**.
<Frame caption="Connecting a provider from the assistant panel">
<img src="/images/guides/using-ai/assistant-connect-provider.webp" alt="Assistant panel showing Connect an AI provider, with OpenAI, Anthropic and Other · OpenAI-compatible options and a link to Settings for more providers" />
</Frame>
## How your key is stored
Your API key is encrypted on the Reactive Resume server with AES-256-GCM before it's saved, and it's never shown again. Settings only ever show the last four characters. When a feature needs the key, the server decrypts it just long enough to call your provider.
Self-hosted instances encrypt keys with the `ENCRYPTION_SECRET` environment variable. Until it's set, **AI & developer** shows "AI providers aren't available on this server until ENCRYPTION_SECRET is set." If the secret changes later, saved keys can no longer be decrypted and have to be entered again.
## What is sent to your provider
Requests go from the Reactive Resume server to the provider you chose, using your key. Nothing is sent until you use an AI feature, and each feature sends only what it needs:
| Feature | What is sent |
| --- | --- |
| Assistant | Your message, the open resume or letter (unless you remove it from the message), the job posting and your notes on the linked application (unless you remove the posting), attachments you add, and the earlier messages in the conversation. |
| **Improve selected line** | The line you're improving and the rest of that field. |
| **Check → Writing** | The text of your resume. |
| Importing a PDF or Word file | The file you import. |
| Drafting a letter | The linked resume and the application's job posting. |
| Adding an application | Job posting text you paste in. |
Your provider handles that data under its own terms and privacy policy. Reactive Resume keeps assistant conversations and their attachments in your account until you delete the conversation.
## Related guides
<CardGroup cols={2}>
<Card title="Using the assistant" href="/guides/using-the-assistant">
Ask for changes and review the edits it proposes.
</Card>
<Card title="Assistant tools" href="/guides/ai-agent-tools">
What the assistant can read and do in a conversation.
</Card>
<Card title="Checking your resume" href="/guides/checking-your-resume">
Get an AI review of your wording in Check mode.
</Card>
<Card title="Importing resumes" href="/guides/importing-resumes">
Turn an existing PDF or Word resume into an editable one.
</Card>
</CardGroup>