From fa5ff9ca3c493540d846350bc4634b8234378ae5 Mon Sep 17 00:00:00 2001 From: Bently Date: Thu, 21 Aug 2025 22:32:53 +0100 Subject: [PATCH] feat(docs): Update Ollama setup docs with new methods (#10693) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Changes 🏗️ Expanded the Ollama setup instructions to include desktop app, Docker, and legacy CLI methods. Added new screenshots for network exposure and model selection. Clarified steps for starting the AutoGPT platform, configuring models, and troubleshooting. Included instructions for adding custom models and improved overall documentation structure. #### For code changes: - [x] I have clearly listed my changes in the PR description - [x] I have made a test plan - [x] I have tested my changes according to the test plan: - [x] Look at the new ollama doc to make sure it makes sense and is easy to follow --- .../imgs/ollama/Ollama-Expose-Network.png | Bin 0 -> 55901 bytes .../imgs/ollama/Ollama-Select-llama3.2.png | Bin 0 -> 40620 bytes docs/content/platform/ollama.md | 220 +++++++++++++----- 3 files changed, 167 insertions(+), 53 deletions(-) create mode 100644 docs/content/imgs/ollama/Ollama-Expose-Network.png create mode 100644 docs/content/imgs/ollama/Ollama-Select-llama3.2.png diff --git a/docs/content/imgs/ollama/Ollama-Expose-Network.png b/docs/content/imgs/ollama/Ollama-Expose-Network.png new file mode 100644 index 0000000000000000000000000000000000000000..176653a5ce1009deb727823b5a1b6575198aecb2 GIT binary patch literal 55901 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%0DuKrs*i!byvXPd(Je~_Py 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 U7Du^$1AmZ9+81*#-1_VP01K3N{{R30 literal 0 HcmV?d00001 diff --git a/docs/content/imgs/ollama/Ollama-Select-llama3.2.png b/docs/content/imgs/ollama/Ollama-Select-llama3.2.png new file mode 100644 index 0000000000000000000000000000000000000000..327d424be0cbe891231fef42b1128294aca0f74f GIT binary patch literal 40620 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 LVZq9vEBXHc|6;2! literal 0 HcmV?d00001 diff --git a/docs/content/platform/ollama.md b/docs/content/platform/ollama.md index c112a86b66..392bfabfe8 100644 --- a/docs/content/platform/ollama.md +++ b/docs/content/platform/ollama.md @@ -13,76 +13,113 @@ Follow these steps to set up and run Ollama with the AutoGPT platform. ### 1. Launch Ollama -To properly set up Ollama for network access, follow these steps: +To properly set up Ollama for network access, choose one of these methods: -1. **Set the host environment variable:** +**Method A: Using Ollama Desktop App (Recommended)** - **Windows (Command Prompt):** - ``` - set OLLAMA_HOST=0.0.0.0:11434 - ``` - - **Linux/macOS (Terminal):** - ```bash - export OLLAMA_HOST=0.0.0.0:11434 - ``` +1. Open the Ollama desktop application +2. Go to **Settings** and toggle **"Expose Ollama to the network"** + ![Expose Ollama to Network](../imgs/ollama/Ollama-Expose-Network.png) +3. Click on the model name field in the "New Chat" window +4. Search for "llama3.2" (or your preferred model) + ![Select llama3.2 model](../imgs/ollama/Ollama-Select-llama3.2.png) +5. Click on it to start the download and load the model to be used -2. Start the Ollama server: - ``` - ollama serve - ``` +??? note "Method B: Using Docker (Alternative)" -3. **Open a new terminal/command window** and download your desired model: - ``` - ollama pull llama3.2 - ``` + If you prefer to run Ollama via Docker instead of the desktop app, you can use the official [Ollama Docker image](https://hub.docker.com/r/ollama/ollama): -> **Note**: This will download the [llama3.2](https://ollama.com/library/llama3.2) model. Keep the terminal with `ollama serve` running in the background throughout your session. + 1. **Start Ollama container** (choose based on your hardware): -### 2. Start the Backend + **CPU only:** + ```bash + docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama + ``` -Open a new terminal and navigate to the autogpt_platform directory: + **With NVIDIA GPU** (requires [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)): + ```bash + docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama + ``` + + **With AMD GPU:** + ```bash + docker run -d --device /dev/kfd --device /dev/dri -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:rocm + ``` + + **Download your desired model:** + ```bash + docker exec -it ollama ollama run llama3.2 + ``` + + !!! note + The Docker method automatically exposes Ollama on `0.0.0.0:11434`, making it accessible to AutoGPT. More models can be found on the [Ollama library](https://ollama.com/library). + +??? warning "Method C: Using Ollama Via Command Line (Legacy)" + + For users still using the traditional CLI approach or older Ollama installations: + + 1. **Set the host environment variable:** + + **Windows (Command Prompt):** + ```cmd + set OLLAMA_HOST=0.0.0.0:11434 + ``` + + **Linux/macOS (Terminal):** + ```bash + export OLLAMA_HOST=0.0.0.0:11434 + ``` + + 2. **Start the Ollama server:** + ```bash + ollama serve + ``` + + 3. **Open a new terminal/command window** and download your desired model: + ```bash + ollama pull llama3.2 + ``` + + !!! note + This will download the [llama3.2](https://ollama.com/library/llama3.2) model. Keep the terminal with `ollama serve` running in the background throughout your session. + +### 2. Start the AutoGPT Platform + +Navigate to the autogpt_platform directory and start all services: ```bash cd autogpt_platform docker compose up -d --build ``` -### 3. Start the Frontend +This command starts both the backend and frontend services. Once running, visit [http://localhost:3000](http://localhost:3000) to access the platform. After registering/logging in, navigate to the build page at [http://localhost:3000/build](http://localhost:3000/build). -Open a new terminal and navigate to the frontend directory: +### 3. Using Ollama with AutoGPT -```bash -cd autogpt_platform/frontend -corepack enable -pnpm i -pnpm dev -``` - -Then visit [http://localhost:3000](http://localhost:3000) to see the frontend running, after registering an account/logging in, navigate to the build page at [http://localhost:3000/build](http://localhost:3000/build) - -### 4. Using Ollama with AutoGPT - -Now that both Ollama and the AutoGPT platform are running we can move onto using Ollama with AutoGPT: +Now that both Ollama and the AutoGPT platform are running, we can use Ollama with AutoGPT: 1. Add an AI Text Generator block to your workspace (it can work with any AI LLM block but for this example will be using the AI Text Generator block): ![Add AI Text Generator Block](../imgs/ollama/Select-AI-block.png) -2. In the "LLM Model" dropdown, select "llama3.2" (This is the model we downloaded earlier) +2. **Configure the API Key field**: Enter any value (e.g., "dummy" or "not-needed") since Ollama doesn't require authentication. + +3. In the "LLM Model" dropdown, select "llama3.2" (This is the model we downloaded earlier) ![Select Ollama Model](../imgs/ollama/Ollama-Select-Llama32.png) - > **Compatible Models**: Not all models work with Ollama in AutoGPT. Here are the models that are confirmed to work: - > - `llama3.2` - > - `llama3` + > **Compatible Models**: The following Ollama models are available in AutoGPT by default: + > - `llama3.2` (Recommended for most use cases) + > - `llama3` > - `llama3.1:405b` > - `dolphin-mistral:latest` + > + > **Note**: To use other models, follow the "Add Custom Models" step above. -3. **Set your local IP address** in the "Ollama Host" field: +4. **Set your local IP address** in the "Ollama Host" field: **To find your local IP address:** **Windows (Command Prompt):** - ``` + ```cmd ipconfig ``` @@ -92,7 +129,7 @@ Now that both Ollama and the AutoGPT platform are running we can move onto using ``` or ```bash - ipconfig + ifconfig ``` Look for your IPv4 address (e.g., `192.168.0.39`), then enter it with port `11434` in the "Ollama Host" field: @@ -102,7 +139,9 @@ Now that both Ollama and the AutoGPT platform are running we can move onto using ![Ollama Remote Host](../imgs/ollama/Ollama-Remote-Host.png) -4. Now we need to add some prompts then save and then run the graph: + > **Important**: Since AutoGPT runs in Docker containers, you must use your host machine's IP address instead of `localhost` or `127.0.0.1`. Docker containers cannot reach `localhost` on the host machine. + +5. Add prompts to your AI block, save the graph, and run it: ![Add Prompt](../imgs/ollama/Ollama-Add-Prompts.png) That's it! You've successfully setup the AutoGPT platform and made a LLM call to Ollama. @@ -115,7 +154,7 @@ For running Ollama on a remote server, simply make sure the Ollama server is run **To find your local IP address of the system running Ollama:** **Windows (Command Prompt):** -``` +```cmd ipconfig ``` @@ -125,7 +164,7 @@ ip addr show ``` or ```bash -ipconfig +ifconfig ``` Look for your IPv4 address (e.g., `192.168.0.39`). @@ -137,16 +176,91 @@ Then you can use the same steps above but you need to add the Ollama server's IP ![Ollama Remote Host](../imgs/ollama/Ollama-Remote-Host.png) +## Add Custom Models (Advanced) + +If you want to use models other than the default ones, you'll need to add them to the model list. Follow these steps: + +1. **Add the model to the LlmModel enum** in `autogpt_platform/backend/backend/blocks/llm.py`: + + Find the Ollama models section (around line 119) and add your model like the other Ollama models: + ```python + # Ollama models + OLLAMA_LLAMA3_3 = "llama3.3" + OLLAMA_LLAMA3_2 = "llama3.2" + OLLAMA_YOUR_MODEL = "The-model-name-from-ollama" # Add your model here + ``` + +2. **Add model metadata** in the same file: + + Find the `MODEL_METADATA` dictionary (around line 181) and add your model with its metadata: + ```python + # In MODEL_METADATA dictionary, add: + LlmModel.OLLAMA_YOUR_MODEL: ModelMetadata("ollama", 8192, None), + ``` + + Where: + + - `"ollama"` = provider name + - `8192` = max context window (adjust based on your model) + - `None` = max output tokens (None means no specific limit) + +3. **Add model cost configuration** in `autogpt_platform/backend/backend/data/block_cost_config.py`: + + Find the `MODEL_COST` dictionary (around line 54) and add your model: + ```python + # In MODEL_COST dictionary, add: + LlmModel.OLLAMA_YOUR_MODEL: 1, + ``` + + > **Note**: Setting cost to `1` is fine for local usage as cost tracking is disabled for self-hosted instances. + +4. **Rebuild the backend**: + ```bash + docker compose up -d --build + ``` + +5. **Pull the model in Ollama**: + ```bash + ollama pull your-model-name + ``` + ## Troubleshooting If you encounter any issues, verify that: -- Ollama is properly installed and running -- All terminals remain open during operation -- Docker is running before starting the backend +- Ollama is properly installed and running with `ollama serve` +- Docker is running before starting the platform +- If running Ollama outside Docker, ensure it's set to `0.0.0.0:11434` for network access -For common errors: +### Common Issues -1. **Connection Refused**: Make sure Ollama is running and the host address is correct (also make sure the port is correct, its default is 11434) -2. **Model Not Found**: Try running `ollama pull llama3.2` manually first -3. **Docker Issues**: Ensure Docker daemon is running with `docker ps` +#### Connection Refused / Cannot Connect to Ollama +- **Most common cause**: Using `localhost` or `127.0.0.1` in the Ollama Host field +- **Solution**: Use your host machine's IP address (e.g., `192.168.0.39:11434`) +- **Why**: AutoGPT runs in Docker containers and cannot reach `localhost` on the host +- **Find your IP**: Use `ipconfig` (Windows) or `ifconfig` (Linux/macOS) +- **Test Ollama is running**: `curl http://localhost:11434/api/tags` should work from your host machine + +#### Model Not Found +- Pull the model manually: + ```bash + ollama pull llama3.2 + ``` +- If using a custom model, ensure it's added to the model list in `backend/server/model.py` + +#### Docker Issues +- Ensure Docker daemon is running: + ```bash + docker ps + ``` +- Try rebuilding: + ```bash + docker compose up -d --build + ``` + +#### API Key Errors +- Remember that Ollama doesn't require authentication - any value works for the API key field + +#### Model Selection Issues +- Look for models with "ollama" in their description in the dropdown +- Only the models listed in the "Compatible Models" section are guaranteed to work