Skip to content

Commit 2034be6

Browse files
authored
Open WebUI Playbook Content Updates (#203)
* Adding a tip to use Python 3.12 * pip install beautifulsoup4 added as a general setup instruction * Updating images, instructions (to align with Lemonade v10.2.0), and model used * Pip installing in a single line
1 parent bb2bef1 commit 2034be6

19 files changed

Lines changed: 61 additions & 53 deletions

playbooks/supplemental/open-webui-chat/README.md

Lines changed: 53 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Open WebUI is built around standard OpenAI-style endpoints, like:
5555
- Image generation: `/images/generations`
5656
- Audio transcription: `/audio/transcriptions`
5757

58-
Lemonade exposes these under `http://localhost:8000/api/v1/...`
58+
Lemonade exposes these under `http://localhost:13305/api/v1/...`
5959

6060
If a backend supports those endpoints, Open WebUI can talk to it with minimal setup. That’s why we can switch backends without changing our workflow.
6161

@@ -73,23 +73,23 @@ This section establishes a stable local environment: Lemonade running, Open WebU
7373
<!-- @os:linux -->
7474
- Install Lemonade (App + Server) by following the Linux distribution-specific package manager instructions on the [official documentation page](https://lemonade-server.ai/install_options.html).
7575
<!-- @os:end -->
76-
- Start the Lemonade server:
77-
- Open Powershell
78-
- Run the command: `lemonade-server serve`
79-
- Verify server status:
80-
- In the same Powershell terminal, run: `lemonade-server status`
81-
- Expect to see `Server is running on port 8000`
76+
After installation:
77+
- The lemonade CLI is added to your system PATH automatically
78+
- Lemonade server is expected to run in the background automatically
79+
- Verify Lemonade installation and server status:
80+
- Open a terminal and run: `lemonade --version`. You should see something like `lemonade version x.y.z`.
81+
- In the same terminal, run `lemonade status`. You should see the output showing that the server is running, typically on port `13305`.
8282
- Open the Lemonade Server app and download required models from the `Model Manager` tab
8383

8484
<p align="center">
8585
<img src="assets/lemonade_model_manager.png" alt="Lemonade Server App" width="600"/>
8686
</p>
8787

8888
- Confirm the API is reachable:
89-
- Open `http://localhost:8000/api/v1/models` in your web browser.
89+
- Open `http://localhost:13305/api/v1/models` in your web browser.
9090
- You should see a JSON list of models downloaded in Lemonade
9191

92-
> If you don’t see your models in `http://localhost:8000/api/v1/models`, Open WebUI won’t be able to select them later.
92+
> If you don’t see your models in `http://localhost:13305/api/v1/models`, Open WebUI won’t be able to select them later.
9393
9494
<!-- @test:id=lemonade-cli-verify timeout=30 hidden=True -->
9595
```bash
@@ -344,7 +344,7 @@ Open PowerShell and create a fresh virtual environment:
344344
python -m venv openwebui-venv
345345
.\openwebui-venv\Scripts\activate
346346
python -m pip install --upgrade pip
347-
pip install open-webui
347+
pip install open-webui beautifulsoup4
348348
```
349349
<!-- @os:end -->
350350

@@ -370,8 +370,7 @@ python -m venv $venv
370370
$py = Join-Path $venv "Scripts\python.exe"
371371
372372
& $py -m pip install --upgrade pip
373-
& $py -m pip install open-webui
374-
& $py -m pip install beautifulsoup4
373+
& $py -m pip install open-webui beautifulsoup4
375374
376375
if ($LASTEXITCODE -ne 0) { throw "pip install open-webui failed" }
377376
```
@@ -409,7 +408,7 @@ Open a terminal and create a fresh virtual environment:
409408
python3 -m venv openwebui-venv
410409
source openwebui-venv/bin/activate
411410
python -m pip install --upgrade pip
412-
pip install open-webui
411+
pip install open-webui beautifulsoup4
413412
```
414413
<!-- @os:end -->
415414

@@ -437,8 +436,7 @@ py="$venv/bin/python"
437436
ow="$venv/bin/open-webui"
438437

439438
"$py" -m pip install --upgrade pip
440-
"$py" -m pip install open-webui
441-
"$py" -m pip install beautifulsoup4
439+
"$py" -m pip install open-webui beautifulsoup4
442440
"$py" -c "import open_webui; print('OK: import open_webui')"
443441
"$py" -c "import bs4; print('OK: bs4 import')"
444442
"$ow" --help
@@ -448,6 +446,7 @@ echo "OK: open-webui installed in venv"
448446
<!-- @test:end -->
449447
<!-- @os:end -->
450448

449+
> **Tip (Python version):** Install Open WebUI using **Python 3.12**. The `open-webui` PyPI package may not install on Python 3.13+ (you’ll see “No matching distribution found”).
451450
> Note: Open WebUI also provides a variety of other installation options, such as Docker, on their GitHub.
452451
453452
### 3) Start Open WebUI Server
@@ -559,35 +558,39 @@ echo "OK: Open WebUI is responding on /health"
559558

560559
In Open WebUI:
561560

562-
1. Go to **Admin Settings → Connections**
561+
1. Go to **Admin Settings → Connections** (http://localhost:8080/admin/settings/connections):
563562

564563
<p align="center">
565-
<img src="assets/open_settings.png" alt="Open WebUI Settings page" width="200"/>
566-
</p>
567-
<p align="center">
568-
<img src="assets/connection_settings.png" alt="Navigating to the connection settings" width="500"/>
564+
<img src="assets/open_settings.png" alt="Open WebUI Settings page" width="16%"/>
565+
<img src="assets/connection_settings.png" alt="Navigating to the connection settings" width="69%"/>
569566
</p>
570567

571568
2. Under **OpenAI API**, add a new connection:
572-
- **Base URL:** `http://localhost:8000/api/v1`
569+
- **Base URL:** `http://localhost:13305/api/v1`
573570
- **API Key:** `-` (a single dash works for local)
574571
<p align="center">
575-
<img src="assets/connection_form.png" alt="Connection details for Lemonade server" width="500"/>
572+
<img src="assets/connection_form.png" alt="Connection details for Lemonade server" width="400"/>
573+
</p>
574+
575+
3. In http://localhost:8080/admin/settings/connections, esnure that under __"Manage OpenAI API Connections"__, only `http://localhost:13305/api/v1` is enabled.
576+
<p align="center">
577+
<img src="assets/connection.png" alt="Admin settings connections page showing 'Manage OpenAI API Connections' with only http://localhost:13305/api/v1 enabled." width="600"/>
576578
</p>
577579

578-
3. Save
579-
4. Apply the following suggested settings. These help Open WebUI to be more responsive with local LLMs.
580+
4. Save
581+
582+
5. Apply the following suggested settings. These help Open WebUI to be more responsive with local LLMs.
580583
- Click the user profile button again, and choose "Admin Settings".
581584
- Click the "Settings" tab at the top, then "Interface" (which will be on the top or the left, depending on your window size), then disable the following:
582585
- Title Generation
583586
- Follow Up Generation
584587
- Tags Generation
585588
<p align="center">
586-
<img src="assets/admin_settings.png" alt="Admin Settings" width="600"/>
589+
<img src="assets/admin_settings.png" alt="Admin Settings" width="800"/>
587590
</p>
588591

589-
5. Click the **"Save"** button in the bottom right of the page, then return to `http://localhost:8080`.
590-
6. Click the model dropdown and expect to see all the models that you have downloaded from Lemonade!
592+
6. Click the **"Save"** button in the bottom right of the page, then return to `http://localhost:8080`.
593+
7. Click the model dropdown and expect to see all the models that you have downloaded from Lemonade!
591594

592595
---
593596

@@ -599,22 +602,22 @@ Now you’re all set up. Let's look at three interesting things to do.
599602

600603
### Activity 1: Chat with a Local LLM
601604

602-
1. Click the dropdown menu in the top-left of the interface. This will display all of the Lemonade models you have installed. Select one to proceed. (example: `Llama-3.2-1B-Instruct-Hybrid`).
605+
1. Click the dropdown menu in the top-left of the interface. This will display all of the Lemonade models you have installed. Select one to proceed. (example: `Qwen3-4B-Hybrid`).
603606
<p align="center">
604607
<img src="assets/model_selection.png" alt="Model Selection" width="600"/>
605608
</p>
606609

607610
2. Enter a message to the LLM and click send (or hit Enter). The LLM will take a few seconds to load into memory and then you will see the response stream in.
608611
<p align="center">
609-
<img src="assets/sending_a_message.png" alt="Sending a message" width="53%"/>
610-
<img src="assets/llm_response.png" alt="LLM Response" width="40%"/>
612+
<img src="assets/sending_a_message.png" alt="Sending a message" width="37.5%"/>
613+
<img src="assets/llm_response.png" alt="LLM Response" width="50%"/>
611614
</p>
612615

613616
3. The model will respond in the chat.
614617
<!-- @os:windows -->
615618
4. At this time, open `Task Manager` on your system. You will see **high GPU/NPU utilization** based on whether the model you selected is **Hybrid** or **NPU** respectively. That clearly shows you’re running locally.
616619
<p align="center">
617-
<img src="assets/npu_utilization.png" alt="Task Manager NPU utilization" width="600"/>
620+
<img src="assets/task_manager.png" alt="Task Manager GPU/NPU utilization" width="700"/>
618621
</p>
619622
<!-- @os:end -->
620623
This validates that Open WebUI can send requests to Lemonade using the OpenAI-compatible chat endpoint.
@@ -625,16 +628,16 @@ This validates that Open WebUI can send requests to Lemonade using the OpenAI-co
625628

626629
This requires a model that supports image input (a vision / multimodal model).
627630

628-
1. Select a vision-capable model (example: `Gemma-3-4b-it-GGUF`, or any model labeled for vision in Lemonade)
631+
1. Select a vision-capable model (example: `Qwen3.5-4B-GGUF`, or any model labeled for vision in Lemonade)
629632
<p align="center">
630633
<img src="assets/lemonade_vlms.png" alt="Lemonade VLM's" width="600"/>
631634
</p>
632635

633636
2. Click the **`+`** button in the message box and upload an image
634-
3. Ask something that forces true image understanding: `Do you think this is a well-designed UI?`
637+
3. Ask something that forces true image understanding: `Do you think this is a well-designed GUI?`
635638
<p align="center">
636-
<img src="assets/vlm_prompt.png" alt="VLM Prompt" width="46%"/>
637-
<img src="assets/vlm_response.png" alt="VLM Response" width="47%"/>
639+
<img src="assets/vlm_prompt.png" alt="VLM Prompt" width="43%"/>
640+
<img src="assets/vlm_response.png" alt="VLM Response" width="40%"/>
638641
</p>
639642

640643
4. The model answers based on the image content, not generic text.
@@ -649,38 +652,40 @@ Stable Diffusion models don't support text generation, they only generate images
649652

650653
#### Step 1: Configure Image Generation in Open WebUI
651654

652-
1. Go to **Admin Settings → Images**
655+
1. Go to **Admin Settings → Images** (http://localhost:8080/admin/settings/images)
653656
2. Set:
654657
- **Image Generation:** ON
655658
- **Image Generation Engine:** Default (OpenAI)
656-
- **OpenAI API Base URL:** `http://localhost:8000/api/v1`
659+
- **OpenAI API Base URL:** `http://localhost:13305/api/v1`
657660
- **OpenAI API Key:** `-`
658-
- **Model:** `SD-Turbo` (fast) or `SDXL-Base-1.0` (higher quality)
661+
- **Model:** `SDXL-Turbo` (fast) or `SDXL-Base-1.0` (higher quality)
659662
3. If you want to add more parameters, add them to the text field as JSON. For example: `{ "steps": 4, "cfg_scale": 1 }`. See available parameters at [Image Generation (Stable Diffusion CPP)](https://lemonade-server.ai/models.html).
660663
<p align="center">
661664
<img src="assets/images_settings.png" alt="Lemonade VLM's" width="600"/>
662665
</p>
666+
663667
4. Save
664668

665669

666670
#### Step 2: Allow Image Generation for the model
667671
This step ensures that you enable Image Generation as a capability for your model.
668-
1. Go to **Admin Settings → Models** and choose your model
672+
1. Go to **Admin Settings → Models** (http://localhost:8080/admin/settings/models) and choose your model
669673
2. Turn on `Image Generation`
670674
<p align="center">
671-
<img src="assets/model_settings.png" alt="Model Settings" width="47%"/>
672-
<img src="assets/edit_model.png" alt="Edit Model" width="45%"/>
675+
<img src="assets/model_settings.png" alt="Model Settings" width="45%"/>
676+
<img src="assets/edit_model.png" alt="Edit Model" width="50%"/>
673677
</p>
674678

675679
#### Step 3: Generate an image from the chat screen
676680

677681
1. Go back to chat at `http://localhost:8080`.
678-
2. Select a **Text Generation LLM** in the model dropdown (example: DeepSeek, CodeLlama). **Do not select a Stable Diffusion model** as this is a chat model selector.
682+
2. Select a **Text Generation LLM** in the model dropdown (example: Qwen, Llama). **Do not select a Stable Diffusion model** as this is a chat model selector.
679683
3. In the message area, toggle **Image** ON.
680684
4. Use a prompt like: `A cinematic photo of heavy traffic at sunset, ultra detailed`.
681685
5. An image is generated and appears in the chat.
682686
<p align="center">
683-
<img src="assets/image_generation.png" alt="Image Generation" width="600"/>
687+
<img src="assets/sdxl_prompt.png" alt="Image Generation" width="43%"/>
688+
<img src="assets/sdxl_response.png" alt="Edit Model" width="35%"/>
684689
</p>
685690

686691
This establishes that Open WebUI can coordinate a “two-part” workflow:
@@ -692,18 +697,18 @@ This establishes that Open WebUI can coordinate a “two-part” workflow:
692697
## Troubleshooting
693698

694699
### “No models show up”
695-
- Confirm `http://localhost:8000/api/v1/models` loads in a browser
696-
- Re-check Open WebUI connection Base URL: `http://localhost:8000/api/v1`
700+
- Confirm `http://localhost:13305/api/v1/models` loads in a browser
701+
- Re-check Open WebUI connection Base URL: `http://localhost:13305/api/v1`
697702

698703
### “This model does not support chat completion” error message
699-
- You selected an image model (SD-Turbo / SDXL) in the chat model dropdown.
704+
- You selected an image model (SDXL-Turbo / SDXL-Base-1.0) in the chat model dropdown.
700705
- **Fix**: select an LLM for chat, and use the Image toggle + Images settings for generation.
701706
<p align="center">
702707
<img src="assets/model_not_supported_error.png" alt="This model does not support chat completion error message" width="600"/>
703708
</p>
704709

705710
### Image generation errors/timeouts
706-
- Start with `SD-Turbo` first (fast, fewer steps)
711+
- Start with `SDXL-Turbo` first (fast, fewer steps)
707712
- Once working, switch the image model to `SDXL-Base-1.0` for quality
708713

709714
---
@@ -730,6 +735,7 @@ Render HTML outputs directly in the interface. This is surprisingly powerful for
730735
- [Open WebUI (GitHub)](https://github.com/open-webui/open-webui)
731736
- [Lemonade (GitHub)](https://github.com/lemonade-sdk/lemonade)
732737
- [Lemonade Server docs](https://lemonade-server.ai/docs)
738+
- [Lemonade Server CLI](https://lemonade-server.ai/docs/lemonade-cli/)
733739
- [Lemonade ↔ Open WebUI integration guide](https://lemonade-server.ai/docs/server/apps/open-webui)
734740
- [Lemonade Server API spec (endpoints)](https://lemonade-server.ai/docs/server/server_spec)
735741
- [Video walkthrough (Lemonade)](https://www.youtube.com/watch?v=mcf7dDybUco)
15.6 KB
Loading
-43.9 KB
Loading
-73.6 KB
Loading
Binary file not shown.
-36.9 KB
Loading
-109 KB
Loading
-384 KB
Loading
-136 KB
Loading
-17.5 KB
Loading

0 commit comments

Comments
 (0)