Merge branch 'open-webui:main' into main
95
docs/enterprise.mdx
Normal file
@ -0,0 +1,95 @@
|
||||
---
|
||||
sidebar_position: 2000
|
||||
title: "🏢 Open WebUI for Enterprises"
|
||||
---
|
||||
|
||||
## The AI Platform Powering the World’s Leading Organizations
|
||||
|
||||
In the rapidly advancing AI landscape, staying ahead isn't just a competitive advantage—it’s a necessity. Open WebUI is the **fastest-growing AI platform** designed for **seamless enterprise deployment**, helping organizations leverage cutting-edge AI capabilities with **unmatched efficiency**.
|
||||
|
||||
**NASA, the Canadian Government, the Dutch Government, xAI, Alibaba (Qwen), IBM, LG, and top academic institutions** trust Open WebUI to power their AI-driven initiatives. With its **modular architecture, continuous innovation, and enterprise-grade features**, it’s the **rational choice** for businesses that refuse to fall behind.
|
||||
|
||||

|
||||
<sub className=" text-xs">*Open WebUI is used by developers from the mentioned organizations and institutions.*</sub>
|
||||
|
||||
|
||||
## **Let’s Talk**
|
||||
|
||||
Transform the way your organization leverages AI. **Contact our enterprise team today** for customized pricing, expert consulting, and tailored deployment strategies.
|
||||
|
||||
📧 **sales@openwebui.com** — Support available in **English & Korean (한국어), with more languages coming soon!**
|
||||
|
||||
---
|
||||
|
||||
## Why Enterprises Choose Open WebUI
|
||||
|
||||
### 🚀 **Faster AI Innovation, No Vendor Lock-In**
|
||||
Unlike proprietary AI platforms that dictate your roadmap, **Open WebUI puts you in control**. Deploy **on-premise, in a private cloud, or hybrid environments**—without restrictive contracts.
|
||||
|
||||
### 🔒 **Enterprise-Grade Security & Compliance**
|
||||
Security is a business-critical requirement. Open WebUI is built to support **SOC 2, HIPAA, GDPR, FedRAMP, and ISO 27001 compliance**, ensuring enterprise security best practices with **on-premise and air-gapped deployments**.
|
||||
|
||||
### ⚡ **Reliable, Scalable, and Performance-Optimized**
|
||||
Built for large-scale enterprise deployments with **multi-node high availability**, Open WebUI ensures **99.99% uptime**, optimized workloads, and **scalability across regions and business units**.
|
||||
|
||||
### 💡 **Fully Customizable & Modular**
|
||||
Customize every aspect of Open WebUI to fit your enterprise’s needs. **White-label, extend, and integrate** seamlessly with **your existing systems**, including **LDAP, Active Directory, and custom AI models**.
|
||||
|
||||
### 🌍 **Thriving Ecosystem with Continuous Innovation**
|
||||
With one of the **fastest iteration cycles in AI**, Open WebUI ensures your organization stays ahead with **cutting-edge features** and **continuous updates**—no waiting for long release cycles.
|
||||
|
||||
---
|
||||
|
||||
## **Exclusive Enterprise Features & Services**
|
||||
|
||||
Open WebUI’s enterprise solutions provide mission-critical businesses with **a suite of advanced capabilities and dedicated support**, including:
|
||||
|
||||
### 🔧 **Enterprise-Grade Support & SLAs**
|
||||
✅ **Priority SLA Support** – **24/7 support — Available in English and Korean (한국어)** with dedicated response times for mission-critical issues.
|
||||
✅ **Dedicated Account Manager** – A **single point of contact** for guidance, onboarding, and strategy.
|
||||
✅ **Exclusive Office Hours with Core Engineers** – Directly work with the engineers evolving Open WebUI.
|
||||
|
||||
### ⚙ **Customization & AI Model Optimization**
|
||||
✅ **Custom Theming & Branding** – White-label Open WebUI to **reflect your enterprise identity**.
|
||||
✅ **Custom AI Model Integration & Fine-Tuning** – Integrate **proprietary** or **third-party** AI models tailored for your workflows.
|
||||
✅ **Private Feature Development** – Work directly with our team to **build custom features** specific to your organization’s needs.
|
||||
|
||||
### 🛡️ **Advanced Security & Compliance**
|
||||
✅ **On-Premise & Air-Gapped Deployments** – Full control over data, hosted in **your infrastructure**.
|
||||
✅ **Security Hardening & Compliance Audits** – Receive **customized compliance assessments** and configurations.
|
||||
✅ **Role-Based Access Control (RBAC)** – Enterprise-ready **SSO, LDAP, and IAM** integration.
|
||||
|
||||
### 🏗️ **Operational Reliability & Deployment Services**
|
||||
✅ **Managed Deployments** – Our team helps you **deploy Open WebUI effortlessly**, whether **on-premise, hybrid, or cloud**.
|
||||
✅ **Version Stability & Long-Term Maintenance** – Enterprise customers receive **LTS (Long-Term Support) versions** for managed **stability and security** over time.
|
||||
✅ **Enterprise Backups & Disaster Recovery** – High availability with structured backup plans and rapid recovery strategies.
|
||||
|
||||
### 📚 **Enterprise Training, Workshops & Consulting**
|
||||
✅ **AI Training & Enablement** – Expert-led **workshops for your engineering and data science teams**.
|
||||
✅ **Operational AI Consulting** – On-demand **architecture, optimization, and deployment consulting**.
|
||||
✅ **Strategic AI Roadmap Planning** – Work with our experts to **define your AI transformation strategy**.
|
||||
|
||||
### 🔄 **Lifecycle & Ecosystem Benefits**
|
||||
✅ **Multi-Tenant & Enterprise-Scale Deployments** – Support for **large-scale organizations**, distributed teams, and divisions.
|
||||
✅ **Access to Private Beta & Enterprise-Only Features** – Stay ahead with access to upcoming, high-priority capabilities.
|
||||
✅ **Software Bill of Materials (SBOM) & Security Transparency** – Enterprise customers receive **full security reports and compliance packages**.
|
||||
|
||||
---
|
||||
|
||||
## **Keep Open WebUI Thriving: Support Continuous Innovation**
|
||||
|
||||
:::tip
|
||||
Even if you **don’t need an enterprise license**, consider becoming a **sponsor** to help fund continuous development.
|
||||
|
||||
It’s an **investment in stability, longevity, and ongoing improvements**. A well-funded Open WebUI means **fewer bugs, fewer security concerns, and a more feature-rich platform** that stays ahead of industry trends. The cost of sponsoring is **a fraction of what it would take to build, maintain, and support an equivalent AI system internally.**
|
||||
:::
|
||||
|
||||
|
||||
Open WebUI is **fully open source**, and you can use it for free. However, building, maintaining, supporting, and evolving such a powerful AI platform requires **significant effort, time, and resources**. Infrastructure costs, security updates, continuous improvements, and keeping up with the latest AI advancements all demand **dedicated engineering, operational, and research efforts**.
|
||||
|
||||
If Open WebUI helps your business save time, money, or resources, we **encourage** you to consider supporting its development. As an **independently funded** project, sponsorship enables us to maintain **a fast iteration cycle to keep up with the rapid advancements in AI**. Your support directly contributes to critical features, security enhancements, performance improvements, and integrations that benefit everyone—including **you**. Open WebUI will continue to offer the same feature set without requiring an enterprise license, ensuring **accessibility for all users**.
|
||||
|
||||
💙 **[Sponsor Open WebUI](https://github.com/sponsors/tjbck)** – Join our existing backers in keeping Open WebUI thriving.
|
||||
|
||||
Whether through **enterprise partnerships, contributions, or financial backing**, your support plays a crucial role in sustaining this powerful AI platform for businesses **worldwide**.
|
||||
|
@ -12,6 +12,7 @@ We understand Docker might not be everyone's preference; however, this approach
|
||||
|
||||
### 📜 Table of Contents
|
||||
|
||||
- [Q: How do I customize the logo and branding?](#q-how-do-i-customize-the-logo-and-branding)
|
||||
- [Q: Why am I asked to sign up? Where are my data being sent to?](#q-why-am-i-asked-to-sign-up-where-are-my-data-being-sent-to)
|
||||
- [Q: Why can't my Docker container connect to services on the host using localhost?](#q-why-cant-my-docker-container-connect-to-services-on-the-host-using-localhost)
|
||||
- [Q: How do I make my host's services accessible to Docker containers?](#q-how-do-i-make-my-hosts-services-accessible-to-docker-containers)
|
||||
@ -27,6 +28,12 @@ We understand Docker might not be everyone's preference; however, this approach
|
||||
- [Q: I tried to login and couldn't, made a new account and now I'm being told my account needs to be activated by an admin.](#q-i-tried-to-login-and-couldnt-made-a-new-account-and-now-im-being-told-my-account-needs-to-be-activated-by-an-admin)
|
||||
- [Q: Why can't Open WebUI start with an SSL error?](#q-why-cant-open-webui-start-with-an-ssl-error)
|
||||
|
||||
#### **Q: How do I customize the logo and branding?**
|
||||
|
||||
**A:** You can customize the theme, logo, and branding with our **[Enterprise License](https://docs.openwebui.com/enterprise)**, which unlocks exclusive enterprise features.
|
||||
|
||||
For more details on enterprise solutions and branding customizations, please contact our sales team at: 📧 **sales@openwebui.com**
|
||||
|
||||
#### **Q: Why am I asked to sign up? Where are my data being sent to?**
|
||||
|
||||
**A:** We require you to sign up to become the admin user for enhanced security. This ensures that if the Open WebUI is ever exposed to external access, your data remains secure. It's important to note that everything is kept local. We do not collect your data. When you sign up, all information stays within your server and never leaves your device. Your privacy and security are our top priorities, ensuring that your data remains under your control at all times.
|
||||
|
@ -37,7 +37,7 @@ The following table lists the available URL parameters, their function, and exam
|
||||
|
||||
### 3. **Web Search**
|
||||
|
||||
- **Description**: Enabling `web-search` allows the chat session to access [web search](/tutorials/web_search) functionality.
|
||||
- **Description**: Enabling `web-search` allows the chat session to access [web search](/category/-web-search) functionality.
|
||||
- **How to Set**: Set this parameter to `true` to enable web search.
|
||||
- **Example**: `/?web-search=true`
|
||||
- **Behavior**: If enabled, the chat can retrieve web search results as part of its responses.
|
||||
|
@ -9,22 +9,29 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
## Key Features of Open WebUI ⭐
|
||||
|
||||
- 🚀 **Effortless Setup**: Install seamlessly using Docker or Kubernetes (`kubectl`, `kustomize` or `helm`) for a hassle-free experience with support for both `:ollama` image with bundled Ollama and `:cuda` with CUDA support.
|
||||
- 🚀 **Effortless Setup**: Install seamlessly using Docker, Kubernetes, Podman, Helm Charts (`kubectl`, `kustomize`, `podman`, or `helm`) for a hassle-free experience with support for both `:ollama` image with bundled Ollama and `:cuda` with CUDA support.
|
||||
|
||||
- 🤝 **OpenAI API Integration**: Effortlessly integrate OpenAI-compatible APIs for versatile conversations alongside Ollama models. The OpenAI API URL can be customized to link with various third-party applications.
|
||||
- 🛠️ **Guided Initial Setup**: Complete the setup process with clarity, including an explicit indication of creating an admin account during the first-time setup.
|
||||
|
||||
- 🛡️ **Granular Permissions and User Groups**: By allowing administrators to create detailed user roles and permissions, we ensure a secure user environment. This granularity not only enhances security but also allows for customized user experiences, fostering a sense of ownership and responsibility amongst users.
|
||||
- 🤝 **OpenAI API Integration**: Effortlessly integrate OpenAI-compatible APIs for versatile conversations alongside Ollama models. The OpenAI API URL can be customized to integrate Open WebUI seamlessly with various third-party applications.
|
||||
|
||||
- 🛡️ **Granular Permissions and User Groups**: By allowing administrators to create detailed user roles, user groups, and permissions across the workspace, we ensure a secure user environment for all users involved. This granularity not only enhances security, but also allows for customized user experiences, fostering a sense of ownership and responsibility amongst users.
|
||||
|
||||
- 📱 **Responsive Design**: Enjoy a seamless experience across desktop PCs, laptops, and mobile devices.
|
||||
|
||||
- 📱 **Progressive Web App for Mobile**: Enjoy a native progressive web application experience on your mobile device with offline access on `localhost` or a personal domain, and a smooth user interface. In order for our PWA to be installable on your device, it must be delivered in a secure context. This usually means that it must be served over HTTPS.
|
||||
|
||||
:::info
|
||||
|
||||
- To set up a PWA, you'll need some understanding of technologies like Linux, Docker, and reverse proxies such as `Nginx`, `Caddy`, or `Traefik`. Using these tools can help streamline the process of building and deploying a PWA tailored to your needs. While there's no "one-click install" option available, and your available option to securely deploy your Open WebUI instance over HTTPS requires user experience, using these resources can make it easier to create and deploy a PWA tailored to your needs.
|
||||
|
||||
- ✒️🔢 **Full Markdown and LaTeX Support**: Elevate your LLM experience with comprehensive Markdown and LaTeX capabilities for enriched interaction.
|
||||
:::
|
||||
|
||||
- 🧩 **Model Builder**: Easily create Ollama models directly from Open WebUI. Create and add custom characters and agents, customize chat elements, and import models effortlessly through [Open WebUI Community](https://openwebui.com/) integration.
|
||||
- ✒️🔢 **Full Markdown and LaTeX Support**: Elevate your LLM experience with comprehensive Markdown, LaTex, and Rich Text capabilities for enriched interaction.
|
||||
|
||||
- 📚 **Local and Remote RAG Integration**: Dive into the future of chat interactions and explore your documents with our cutting-edge Retrieval Augmented Generation (RAG) technology within your chats. Documents can be loaded into the workspace area, after which they can be accessed using the `#` symbol before a query, or by starting the prompt with `#`, followed by a URL for web content integration.
|
||||
- 🧩 **Model Builder**: Easily create custom models from base Ollama models directly from Open WebUI. Create and add custom characters and agents, customize model elements, and import models effortlessly through [Open WebUI Community](https://openwebui.com/) integration.
|
||||
|
||||
- 📚 **Local and Remote RAG Integration**: Dive into the future of chat interactions and explore your documents with our cutting-edge Retrieval Augmented Generation (RAG) technology within your chats. Documents can be loaded into the `Documents` tab of the Workspace, after which they can be accessed using the pound key [`#`] before a query, or by starting the prompt with the pound key [`#`], followed by a URL for webpage content integration.
|
||||
|
||||
- 🔍 **Web Search for RAG**: You can perform web searches using a selection of various search providers and inject the results directly into your local Retrieval Augmented Generation (RAG) experience.
|
||||
|
||||
@ -85,19 +92,47 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 🎨 **Splash Screen**: A simple loading splash screen for a smoother user experience.
|
||||
|
||||
- 🌐 **Personalized Interface**: Choose between a freshly designed search landing page and the classic chat UI from Settings > Interface, allowing for a tailored experience.
|
||||
|
||||
- 📦 **Pip Install Method**: Installation of Open WebUI can be accomplished via the command `pip install open-webui`, which streamlines the process and makes it more accessible to new users. For further information, please visit: https://pypi.org/project/open-webui/.
|
||||
|
||||
- 🌈 **Theme Customization**: Personalize your Open WebUI experience with a range of options, including a variety of solid, yet sleek themes, customizable chat background images, and three mode options: Light, Dark, or OLED Dark mode - or let *Her* choose for you! ;)
|
||||
|
||||
- 🖼️ **Custom Background Support**: Set a custom background from Settings > Interface to personalize your experience.
|
||||
|
||||
- 📝 **Rich Banners with Markdown**: Create visually engaging announcements with markdown support in banners, enabling richer and more dynamic content.
|
||||
|
||||
- 💻 **Code Syntax Highlighting**: Our syntax highlighting feature enhances code readability, providing a clear and concise view of your code.
|
||||
|
||||
- 🗨️ **Markdown Rendering in User Messages**: User messages are now rendered in Markdown, enhancing readability and interaction.
|
||||
|
||||
- 🎨 **Flexible Text Input Options**: Switch between rich text input and legacy text area input for chat, catering to user preferences and providing a choice between advanced formatting and simpler text input.
|
||||
|
||||
- 👆 Effortless Code Sharing : Streamline the sharing and collaboration process with convenient code copying options, including a floating copy button in code blocks and click-to-copy functionality from code spans, saving time and reducing frustration.
|
||||
|
||||
- 🎨 **Interactive Artifacts**: Render web content and SVGs directly in the interface, supporting quick iterations and live changes for enhanced creativity and productivity.
|
||||
|
||||
- 🖊️ **Live Code Editing**: Supercharged code blocks allow live editing directly in the LLM response, with live reloads supported by artifacts, streamlining coding and testing.
|
||||
|
||||
- 🔍 **Enhanced SVG Interaction**: Pan and zoom capabilities for SVG images, including Mermaid diagrams, enable deeper exploration and understanding of complex concepts.
|
||||
|
||||
- 🔍 **Text Select Quick Actions**: Floating buttons appear when text is highlighted in LLM responses, offering deeper interactions like "Ask a Question" or "Explain", and enhancing overall user experience.
|
||||
|
||||
- ↕️ **Bi-Directional Chat Support**: You can easily switch between left-to-right and right-to-left chat directions to accommodate various language preferences.
|
||||
|
||||
- 📱 **Mobile Accessibility**: The sidebar can be opened and closed on mobile devices with a simple swipe gesture.
|
||||
|
||||
- 📂 **Unified Workspace**: A unified workspace section provides access to all your model files, prompts, documents, tools, and functions in one convenient location, streamlining your workflow.
|
||||
- 🤳 **Haptic Feedback on Supported Devices**: Android devices support haptic feedback for an immersive tactile experience during certain interactions.
|
||||
|
||||
- 💾 **Persistent Settings**: Benefit from the convenience of saved and persistent settings within Open WebUI, stored in a config.json file for easy access and reuse.
|
||||
- 🔍 **User Settings Search**: Quickly search for settings fields, improving ease of use and navigation.
|
||||
|
||||
- 📜 **Offline Swagger Documentation**: Access developer-friendly Swagger API documentation offline, ensuring full accessibility wherever you are.
|
||||
|
||||
- 💾 **Performance Optimizations**: Lazy loading of large dependencies minimizes initial memory usage, boosting performance and reducing loading times.
|
||||
|
||||
- 🚀 **Persistent and Scalable Configuration**: Open WebUI configurations are stored in a database (webui.db), allowing for seamless load balancing, high-availability setups, and persistent settings across multiple instances, making it easy to access and reuse your configurations.
|
||||
|
||||
- 🔄 **Portable Import/Export**: Easily import and export Open WebUI configurations, simplifying the process of replicating settings across multiple systems.
|
||||
|
||||
- ❓ **Quick Access to Documentation & Shortcuts**: The question mark button located at the bottom right-hand corner of the main UI screen (available on larger screens like desktop PCs and laptops) provides users with easy access to the Open WebUI documentation page and available keyboard shortcuts.
|
||||
|
||||
@ -107,6 +142,24 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
### 💬 Conversations
|
||||
|
||||
- 💬 **True Asynchronous Chat**: Enjoy uninterrupted multitasking with true asynchronous chat support, allowing you to create chats, navigate away, and return anytime with responses ready.
|
||||
|
||||
- 🔔 **Chat Completion Notifications**: Stay updated with instant in-UI notifications when a chat finishes in a non-active tab, ensuring you never miss a completed response.
|
||||
|
||||
- 🌐 **Notification Webhook Integration**: Receive timely updates for long-running chats or external integration needs with configurable webhook notifications, even when your tab is closed.
|
||||
|
||||
- 📚 **Channels (Beta)**: Explore real-time collaboration between users and AIs with Discord/Slack-style chat rooms, build bots for channels, and unlock asynchronous communication for proactive multi-agent workflows.
|
||||
|
||||
- 🖊️ **Typing Indicators in Channels**: Enhance collaboration with real-time typing indicators in channels, keeping everyone engaged and informed.
|
||||
|
||||
- 👤 **User Status Indicators**: Quickly view a user's status by clicking their profile image in channels, providing better coordination and availability insights.
|
||||
|
||||
- 💬 **Chat Controls**: Easily adjust parameters for each chat session, offering more precise control over your interactions.
|
||||
|
||||
- 💖 **Favorite Response Management**: Easily mark and organize favorite responses directly from the chat overview, enhancing ease of retrieval and access to preferred responses.
|
||||
|
||||
- 📌 **Pinned Chats**: Support for pinned chats, allowing you to keep important conversations easily accessible.
|
||||
|
||||
- 🔍 **RAG Embedding Support**: Change the Retrieval Augmented Generation (RAG) embedding model directly in the `Admin Panel` > `Settings` > `Documents` menu, enhancing document processing. This feature supports Ollama and OpenAI models.
|
||||
|
||||
- 📜 **Citations in RAG Feature**: The Retrieval Augmented Generation (RAG) feature allows users to easily track the context of documents fed to LLMs with added citations for reference points.
|
||||
@ -115,16 +168,46 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 📹 **YouTube RAG Pipeline**: The dedicated Retrieval Augmented Generation (RAG) pipeline for summarizing YouTube videos via video URLs enables smooth interaction with video transcriptions directly.
|
||||
|
||||
- 📁 **Comprehensive Document Retrieval**: Toggle between full document retrieval and traditional snippets, enabling comprehensive tasks like summarization and supporting enhanced document capabilities.
|
||||
|
||||
- 🌟 **RAG Citation Relevance**: Easily assess citation accuracy with the addition of relevance percentages in RAG results.
|
||||
|
||||
- 🗂️ **Advanced RAG**: Improve RAG accuracy with smart pre-processing of chat history to determine the best queries before retrieval.
|
||||
|
||||
- 📚 **Inline Citations for RAG**: Benefit from seamless inline citations for Retrieval-Augmented Generation (RAG) responses, improving traceability and providing source clarity for newly uploaded files.
|
||||
|
||||
- 📁 **Large Text Handling**: Optionally convert large pasted text into a file upload to be used directly with RAG, keeping the chat interface cleaner.
|
||||
|
||||
- 🔄 **Multi-Modal Support**: Effortlessly engage with models that support multi-modal interactions, including images (`e.g., LLaVA`).
|
||||
|
||||
- 🤖 **Multiple Model Support**: Quickly switch between different models for diverse chat interactions.
|
||||
|
||||
- 🔀 **Merge Responses in Many Model Chat**: Enhances the dialogue by merging responses from multiple models into a single, coherent reply.
|
||||
|
||||
- ✅ **Multiple Instances of Same Model in Chats**: Enhanced many model chat to support adding multiple instances of the same model.
|
||||
|
||||
- 💬 **Temporary Chat Feature**: Introduced a temporary chat feature, deprecating the old chat history setting to enhance user interaction flexibility.
|
||||
|
||||
- 🖋️ **User Message Editing**: Enhanced the user chat editing feature to allow saving changes without sending.
|
||||
|
||||
- 💬 **Efficient Conversation Editing**: Create new message pairs quickly and intuitively using the Cmd/Ctrl+Shift+Enter shortcut, streamlining conversation length tests.
|
||||
|
||||
- 🖼️ **Client-Side Image Compression**: Save bandwidth and improve performance with client-side image compression, allowing you to compress images before upload from Settings > Interface.
|
||||
|
||||
- 👥 **'@' Model Integration**: By seamlessly switching to any accessible local or external model during conversations, users can harness the collective intelligence of multiple models in a single chat. This can done by using the `@` command to specify the model by name within a chat.
|
||||
|
||||
- 🏷️ **Conversation Tagging**: Effortlessly categorize and locate tagged chats for quick reference and streamlined data collection.
|
||||
- 🏷️ Conversation Tagging : Effortlessly categorize and locate tagged chats for quick reference and streamlined data collection using our efficient 'tag:' query system, allowing you to manage, search, and organize your conversations without cluttering the interface.
|
||||
|
||||
- 🧠 **Auto-Tagging**: Conversations can optionally be automatically tagged for improved organization, mirroring the efficiency of auto-generated titles.
|
||||
|
||||
- 👶 **Chat Cloning**: Easily clone and save a snapshot of any chat for future reference or continuation. This feature makes it easy to pick up where you left off or share your session with others. To create a copy of your chat, simply click on the `Clone` button in the chat's dropdown options. Can you keep up with your clones?
|
||||
|
||||
- ⭐ **Visualized Conversation Flows**: Interactive messages diagram for improved visualization of conversation flows, enhancing understanding and navigation of complex discussions.
|
||||
|
||||
- 📁 **Chat Folders**: Organize your chats into folders, drag and drop them for easy management, and export them seamlessly for sharing or analysis.
|
||||
|
||||
- 📤 **Easy Chat Import**: Import chats into your workspace by simply dragging and dropping chat exports (JSON) onto the sidebar.
|
||||
|
||||
- 📜 **Prompt Preset Support**: Instantly access custom preset prompts using the `/` command in the chat input. Load predefined conversation starters effortlessly and expedite your interactions. Import prompts with ease through [Open WebUI Community](https://openwebui.com/) integration or create your own!
|
||||
|
||||
- 📅 **Prompt Variables Support**: Prompt variables such as `{{CLIPBOARD}}`, `{{CURRENT_DATE}}`, `{{CURRENT_DATETIME}}`, `{{CURRENT_TIME}}`, `{{CURRENT_TIMEZONE}}`, `{{CURRENT_WEEKDAY}}`, `{{USER_NAME}}`, `{{USER_LANGUAGE}}`, and `{{USER_LOCATION}}` can be utilized in the system prompt or by using a slash command to select a prompt directly within a chat.
|
||||
@ -138,9 +221,9 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
### 💻 Model Management
|
||||
|
||||
|
||||
- 🛠️ **Model Builder**: All models can be built and edited with a persistent model builder mode within the models workspace.
|
||||
- 🛠️ **Model Builder**: All models can be built and edited with a persistent model builder mode within the models edit page.
|
||||
|
||||
- 📚 **Knowledge Support for Models**: The ability to attach functions and documents directly to models from the models workspace enhances the information available to each model.
|
||||
- 📚 **Knowledge Support for Models**: The ability to attach tools, functions, and knowledge collections directly to models from a model's edit page, enhancing the information available to each model.
|
||||
|
||||
- 🗂️ **Model Presets**: Create and manage model presets for both the Ollama and OpenAI API.
|
||||
|
||||
@ -148,7 +231,13 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 📋 **Model Selector Dropdown Ordering**: Models can be effortlessly organized by dragging and dropping them into desired positions within the model workspace, which will then reflect the changes in the model dropdown menu.
|
||||
|
||||
- 🔍 **Model Selector Dropdown**: Easily find and select your models with an included search filter and detailed model information with model tags and model descriptions.
|
||||
- 🔍 **Model Selector Dropdown**: Easily find and select your models with fuzzy search and detailed model information with model tags and model descriptions.
|
||||
|
||||
- ⌨️ **Arrow Keys Model Selection**: Use arrow keys for quicker model selection, enhancing accessibility.
|
||||
|
||||
- 🔧 **Quick Actions in Model Workspace**: Enhanced Shift key quick actions for hiding/displaying and deleting models in the model workspace.
|
||||
|
||||
- 😄 **Transparent Model Usage**: Stay informed about the system's state during queries with knowledge-augmented models, thanks to visible status displays.
|
||||
|
||||
- ⚙️ **Fine-Tuned Control with Advanced Parameters**: Gain a deeper level of control by adjusting model parameters such as `seed`, `temperature`, `frequency penalty`, `context length`, `seed`, and more.
|
||||
|
||||
@ -162,6 +251,8 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 💡 **LLM Response Insights**: Details of every generated response can be viewed, including external model API insights and comprehensive local model info.
|
||||
|
||||
- 🕒 **Model Details at a Glance**: View critical model details, including model hash and last modified timestamp, directly in the Models workspace for enhanced tracking and management.
|
||||
|
||||
- 📥🗑️ **Download/Delete Models**: Models can be downloaded or deleted directly from Open WebUI with ease.
|
||||
|
||||
- 🔄 **Update All Ollama Models**: A convenient button allows users to update all their locally installed models in one operation, streamlining model management.
|
||||
@ -176,11 +267,21 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 🗨️ **Local Chat Sharing**: Generate and share chat links between users in an efficient and seamless manner, thereby enhancing collaboration and communication.
|
||||
|
||||
- 👍👎 **RLHF Annotation**: Enhance the impact of your messages by rating them with either a thumbs up or thumbs down, followed by the option to provide textual feedback, facilitating the creation of datasets for Reinforcement Learning from Human Feedback (`RLHF`). Utilize your messages to train or fine-tune models, all while ensuring the confidentiality of locally saved data.
|
||||
- 👍👎 **RLHF Annotation**: Enhance the impact of your messages by rating them with either a thumbs up or thumbs down AMD provide a rating for the response on a scale of 1-10, followed by the option to provide textual feedback, facilitating the creation of datasets for Reinforcement Learning from Human Feedback (`RLHF`). Utilize your messages to train or fine-tune models, all while ensuring the confidentiality of locally saved data.
|
||||
|
||||
- 🔧 **Comprehensive Feedback Export**: Export feedback history data to JSON for seamless integration with RLHF processing and further analysis, providing valuable insights for improvement.
|
||||
|
||||
- 🤝 **Community Sharing**: Share your chat sessions with the [Open WebUI Community](https://openwebui.com/) by clicking the `Share to Open WebUI Community` button. This feature allows you to engage with other users and collaborate on the platform.
|
||||
- To utilize this feature, please sign-in to your Open WebUI Community account. Sharing your chats fosters a vibrant community, encourages knowledge sharing, and facilitates joint problem-solving. Please note that community sharing of chat sessions is an optional feature. Only Admins can toggle this feature on or off in the `Admin Settings` > `Settings` > `General` menu.
|
||||
|
||||
- 🏆 **Community Leaderboard**: Compete and track your performance in real-time with our leaderboard system, which utilizes the ELO rating system and allows for optional sharing of feedback history.
|
||||
|
||||
- ⚔️ **Model Evaluation Arena**: Conduct blind A/B testing of models directly from the Admin Settings for a true side-by-side comparison, making it easier to find the best model for your needs.
|
||||
|
||||
- 🎯 **Topic-Based Rankings**: Discover more accurate rankings with our experimental topic-based re-ranking system, which adjusts leaderboard standings based on tag similarity in feedback.
|
||||
|
||||
- 📂 Unified and Collaborative Workspace : Access and manage all your model files, prompts, documents, tools, and functions in one convenient location, while also enabling multiple users to collaborate and contribute to models, knowledge, prompts, or tools, streamlining your workflow and enhancing teamwork.
|
||||
|
||||
---
|
||||
|
||||
### 📚 History & Archive
|
||||
@ -203,7 +304,7 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
---
|
||||
|
||||
### 🎙️ Voice & Accessibility
|
||||
### 🎙️ Audio, Voice, & Accessibility
|
||||
|
||||
- 🗣️ **Voice Input Support**: Engage with your model through voice interactions; enjoy the convenience of talking to your model directly. Additionally, explore the option for sending voice input automatically after 3 seconds of silence for a streamlined experience.
|
||||
- Microphone access requires manually setting up a secure connection over HTTPS to work, or [manually whitelisting your URL at your own risk](https://docs.openwebui.com/troubleshooting/microphone-error).
|
||||
@ -219,8 +320,24 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 👆 **Tap to Interrupt**: Stop the AI’s speech during voice conversations with a simple tap on mobile devices, ensuring seamless control over the interaction.
|
||||
|
||||
- 🎙️ **Voice Interrupt**: Stop the AI’s speech during voice conversations with your voice on mobile devices, ensuring seamless control over the interaction.
|
||||
|
||||
- 🔊 **Configurable Text-to-Speech Endpoint**: Customize your Text-to-Speech experience with configurable OpenAI-compatible endpoints for reading aloud LLM responses.
|
||||
|
||||
- 🔗 **Direct Call Mode Access**: Activate call mode directly from a URL, providing a convenient shortcut for mobile device users.
|
||||
|
||||
- ✨ **Customizable Text-to-Speech**: Control how message content is segmented for Text-to-Speech (TTS) generation requests, allowing for flexible speech output options.
|
||||
|
||||
- 🔊 **Azure Speech Services Integration**: Supports Azure Speech services for Text-to-Speech (TTS), providing users with a wider range of speech synthesis options.
|
||||
|
||||
- 🎚️ **Customizable Audio Playback**: Allows users to adjust audio playback speed to their preferences in Call mode settings, enhancing accessibility and usability.
|
||||
|
||||
- 🎵 **Broad Audio Compatibility**: Enjoy support for a wide range of audio file format transcriptions with RAG, including 'audio/x-m4a', to broaden compatibility with audio content within the platform.
|
||||
|
||||
- 🔊 **Audio Compression**: Experimental audio compression allows navigating around the 25MB limit for OpenAI's speech-to-text processing, expanding the possibilities for audio-based interactions.
|
||||
|
||||
- 🗣️ **Experimental SpeechT5 TTS**: Enjoy local SpeechT5 support for improved text-to-speech capabilities.
|
||||
|
||||
---
|
||||
|
||||
### 🐍 Code Execution
|
||||
@ -233,6 +350,8 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 🌊 **Mermaid Rendering**: Create visually appealing diagrams and flowcharts directly within Open WebUI using the [Mermaid Diagramming and charting tool](https://mermaid.js.org/intro/), which supports Mermaid syntax rendering.
|
||||
|
||||
- 🔗 **Iframe Support**: Enables rendering HTML directly into your chat interface using functions and tools.
|
||||
|
||||
---
|
||||
|
||||
### 🔒 Integration & Security
|
||||
@ -245,7 +364,7 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 🌐🔗 **External Ollama Server Connectivity**: Seamlessly link to an external Ollama server hosted on a different address by configuring the environment variable.
|
||||
|
||||
- 🛢️ **External Database Support**: Seamlessly connect to custom SQLite or Postgres databases using the `DATABASE_URL` environment variable.
|
||||
- 🛢️ **Flexible Database Integration**: Seamlessly connect to custom databases, including SQLite, Postgres, and multiple vector databases like Milvus, using environment variables for flexible and scalable data management.
|
||||
|
||||
- 🌐🗣️ **External Speech-to-Text Support**: The addition of external speech-to-text (`STT`) services provides enhanced flexibility, allowing users to choose their preferred provider for seamless interaction.
|
||||
|
||||
@ -253,6 +372,12 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 🔀 **Multiple Ollama Instance Load Balancing**: Effortlessly distribute chat requests across multiple Ollama instances for enhanced performance and reliability.
|
||||
|
||||
- 🚀 **Advanced Load Balancing and Reliability**: Utilize enhanced load balancing capabilities, stateless instances with full Redis support, and automatic web socket re-connection to promote better performance, reliability, and scalability in WebUI, ensuring seamless and uninterrupted interactions across multiple instances.
|
||||
|
||||
- ☁️ **Experimental S3 Support**: Enable stateless WebUI instances with S3 support for enhanced scalability and balancing heavy workloads.
|
||||
|
||||
- 🛠️ **OAuth Management for User Groups**: Enhance control and scalability in collaborative environments with group-level management via OAuth integration.
|
||||
|
||||
---
|
||||
|
||||
### 👑 Administration
|
||||
@ -289,4 +414,32 @@ import { TopBanners } from "@site/src/components/TopBanners";
|
||||
|
||||
- 🔓 **Optional Authentication**: Enjoy the flexibility of disabling authentication by setting `WEBUI_AUTH` to `False`. This is an ideal solution for fresh installations without existing users or can be useful for demonstration purposes.
|
||||
|
||||
- 🚫 **Advanced API Security**: Block API users based on customized model filters, enhancing security and control over API access.
|
||||
|
||||
- ❗ **Administrator Updates**: Ensure administrators stay informed with immediate update notifications upon login, keeping them up-to-date on the latest changes and system statuses.
|
||||
|
||||
- 👥 **User Group Management**: Create and manage user groups for seamless organization and control.
|
||||
|
||||
- 🔐 **Group-Based Access Control**: Set granular access to models, knowledge, prompts, and tools based on user groups, allowing for more controlled and secure environments.
|
||||
|
||||
- 🛠️ **Granular User Permissions**: Easily manage workspace permissions, including file uploads, deletions, edits, and temporary chats, as well as model, knowledge, prompt, and tool creation.
|
||||
|
||||
- 🔑 **LDAP Authentication**: Enhance security and scalability with LDAP support for user management.
|
||||
|
||||
- 🌐 **Customizable OpenAI Connections**: Enjoy smooth operation with custom OpenAI setups, including prefix ID support and explicit model ID support for APIs.
|
||||
|
||||
- 🔐 **Ollama API Key Management**: Manage Ollama credentials, including prefix ID support, for secure and efficient operation.
|
||||
|
||||
- 🔄 **Connection Management**: Easily enable or disable individual OpenAI and Ollama connections as needed.
|
||||
|
||||
- 🎨 **Intuitive Model Workspace**: Manage models across users and groups with a redesigned and user-friendly interface.
|
||||
|
||||
- 🔑 **API Key Authentication**: Tighten security by easily enabling or disabling API key authentication.
|
||||
|
||||
- 🔄 **Unified Model Reset**: Reset and remove all models from the Admin Settings with a one-click option.
|
||||
|
||||
- 🔓 **Flexible Model Access Control**: Easily bypass model access controls for user roles when not required, using the 'BYPASS_MODEL_ACCESS_CONTROL' environment variable, simplifying workflows in trusted environments.
|
||||
|
||||
- 🔒 **Configurable API Key Authentication Restrictions**: Flexibly configure endpoint restrictions for API key authentication, now off by default for a smoother setup in trusted environments.
|
||||
|
||||
---
|
||||
|
@ -6,12 +6,12 @@ title: "⚙️ Tools"
|
||||
## What are Tools?
|
||||
Tools are python scripts that are provided to an LLM at the time of the request. Tools allow LLMs to perform actions and receive additional context as a result. Generally speaking, your LLM of choice will need to support function calling for tools to be reliably utilized.
|
||||
|
||||
Tools enable many use cases for chats, including web search, web scraping, and API interactions within the chat.
|
||||
Tools enable many use cases for chats, including web search, web scraping, and API interactions within the chat.
|
||||
|
||||
Many Tools are available to use on the [Community Website](https://openwebui.com/tools) and can easily be imported into your Open WebUI instance.
|
||||
Many Tools are available to use on the [Community Website](https://openwebui.com/tools) and can easily be imported into your Open WebUI instance.
|
||||
|
||||
## How can I use Tools?
|
||||
[Once installed](#how-to-install-tools), Tools can be used by assigning them to any LLM that supports function calling and then enabling that Tool. To assign a Tool to a model, you need to navigate to Workspace => Models. Here you can select the model for which you’d like to enable any Tools.
|
||||
[Once installed](#how-to-install-tools), Tools can be used by assigning them to any LLM that supports function calling and then enabling that Tool. To assign a Tool to a model, you need to navigate to Workspace => Models. Here you can select the model for which you’d like to enable any Tools.
|
||||
|
||||
Once you click the pencil icon to edit the model settings, scroll down to the Tools section and check any Tools you wish to enable. Once done you must click save.
|
||||
|
||||
@ -241,3 +241,72 @@ async def test_function(
|
||||
return f"Tell the user: {e}"
|
||||
```
|
||||
</details>
|
||||
|
||||
#### Citations
|
||||
This type is used to provide citations or references in the chat. You can utilize it to specify the content, the source, and any relevant metadata. Below is an example of how to emit a citation event:
|
||||
|
||||
```
|
||||
await __event_emitter__(
|
||||
{
|
||||
"type": "citation",
|
||||
"data": {
|
||||
"document": [content],
|
||||
"metadata": [
|
||||
{
|
||||
"date_accessed": datetime.now().isoformat(),
|
||||
"source": title,
|
||||
}
|
||||
],
|
||||
"source": {"name": title, "url": url},
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
If you are sending multiple citations, you can iterate over citations and call the emitter multiple times. When implementing custom citations, ensure that you set `self.citation = False` in your `Tools` class `__init__` method. Otherwise, the built-in citations will override the ones you have pushed in. For example:
|
||||
|
||||
```python
|
||||
def __init__(self):
|
||||
self.citation = False
|
||||
```
|
||||
|
||||
Warning: if you set `self.citation = True`, this will replace any custom citations you send with the automatically generated return citation. By disabling it, you can fully manage your own citation references.
|
||||
|
||||
<details>
|
||||
<summary>Example</summary>
|
||||
|
||||
```
|
||||
class Tools:
|
||||
class UserValves(BaseModel):
|
||||
test: bool = Field(
|
||||
default=True, description="test"
|
||||
)
|
||||
|
||||
def __init__(self):
|
||||
self.citation = False
|
||||
|
||||
async def test_function(
|
||||
self, prompt: str, __user__: dict, __event_emitter__=None
|
||||
) -> str:
|
||||
"""
|
||||
This is a demo that just creates a citation
|
||||
|
||||
:param test: this is a test parameter
|
||||
"""
|
||||
|
||||
await __event_emitter__(
|
||||
{
|
||||
"type": "citation",
|
||||
"data": {
|
||||
"document": ["This message will be appended to the chat as a citation when clicked into"],
|
||||
"metadata": [
|
||||
{
|
||||
"date_accessed": datetime.now().isoformat(),
|
||||
"source": title,
|
||||
}
|
||||
],
|
||||
"source": {"name": "Title of the content"", "url": "http://link-to-citation"},
|
||||
},
|
||||
}
|
||||
)
|
||||
```
|
||||
</details>
|
||||
|
@ -10,6 +10,7 @@ Open WebUI supports several forms of federated authentication:
|
||||
1. OAuth2
|
||||
1. Google
|
||||
1. Microsoft
|
||||
1. Github
|
||||
1. OIDC
|
||||
1. Trusted Header
|
||||
|
||||
@ -44,6 +45,16 @@ The following environment variables are required:
|
||||
1. `MICROSOFT_CLIENT_SECRET` - Microsoft OAuth client secret
|
||||
1. `MICROSOFT_CLIENT_TENANT_ID` - Microsoft tenant ID - use `9188040d-6c67-4c5b-b112-36a304b66dad` for personal accounts
|
||||
|
||||
### Github
|
||||
|
||||
To configure a Github OAuth Client, please refer to [Github's documentation](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps) on how to create a OAuth App or Github App for a **web application**.
|
||||
The allowed redirect URI should include `<open-webui>/oauth/github/callback`.
|
||||
|
||||
The following environment variables are required:
|
||||
|
||||
1. `GITHUB_CLIENT_ID` - Github OAuth App Client ID
|
||||
1. `GITHUB_CLIENT_SECRET` - Github OAuth App Client Secret
|
||||
|
||||
### OIDC
|
||||
|
||||
Any authentication provider that supports OIDC can be configured.
|
||||
@ -75,6 +86,24 @@ If changing the role of a logged in user, they will need to log out and log back
|
||||
|
||||
:::
|
||||
|
||||
### OAuth Group Management
|
||||
|
||||
Any OAuth provider that can be configured to return groups in the access token can be used to manage user groups in Open WebUI.
|
||||
To use this feature set `ENABLE_OAUTH_GROUP_MANAGEMENT` to `true`.
|
||||
You can configure the following environment variables to match the groups returned by the OAuth provider:
|
||||
|
||||
1. `OAUTH_GROUP_CLAIM` - The claim that contains the groups. Defaults to `groups`. Can also be nested, for example `user.memberOf`.
|
||||
|
||||
:::warning
|
||||
Admin users do not get their groups updated
|
||||
:::
|
||||
|
||||
:::info
|
||||
|
||||
If changing the group of a logged in user, they will need to log out and log back in to receive the new group.
|
||||
|
||||
:::
|
||||
|
||||
## Trusted Header
|
||||
|
||||
Open WebUI is able to delegate authentication to an authenticating reverse proxy that passes in the user's details in HTTP headers.
|
||||
|
@ -9,9 +9,15 @@ Explore deeper concepts and advanced configurations of Open WebUI to enhance you
|
||||
|
||||
---
|
||||
|
||||
## 📊 Logging and Monitoring
|
||||
Learn how to monitor, log, and troubleshoot your system effectively.
|
||||
[Logging and Monitoring Guide](/getting-started/advanced-topics/logging)
|
||||
## 🛠️ Development
|
||||
Understand the development setup and contribute to Open WebUI.
|
||||
[Development Guide](/getting-started/advanced-topics/development)
|
||||
|
||||
---
|
||||
|
||||
## 📝 Logging
|
||||
Learn how to configure and manage logs for troubleshooting your system.
|
||||
[Logging Guide](/getting-started/advanced-topics/logging)
|
||||
|
||||
---
|
||||
|
||||
@ -21,4 +27,10 @@ Ensure secure communication by implementing HTTPS encryption in your deployment.
|
||||
|
||||
---
|
||||
|
||||
Looking for installation instructions? Head over to our [Quick Start Guide](/getting-started/quick-start).
|
||||
## 📊 Monitoring
|
||||
Learn how to monitor your Open WebUI instance, including health checks, model connectivity, and response testing.
|
||||
[Monitoring Guide](/getting-started/advanced-topics/monitoring)
|
||||
|
||||
---
|
||||
|
||||
Looking for installation instructions? Head over to our [Quick Start Guide](/getting-started/quick-start).
|
||||
|
115
docs/getting-started/advanced-topics/monitoring.md
Normal file
@ -0,0 +1,115 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
title: "📊 Monitoring"
|
||||
---
|
||||
|
||||
# Monitoring Open WebUI
|
||||
|
||||
Monitoring your Open WebUI instance is crucial for ensuring reliable service and quickly identifying issues. This guide covers three levels of monitoring:
|
||||
- Basic health checks for service availability
|
||||
- Model connectivity verification
|
||||
- Deep health checks with model response testing
|
||||
|
||||
## Basic Health Check Endpoint
|
||||
|
||||
Open WebUI exposes a health check endpoint at `/health` that returns a 200 OK status when the service is running properly.
|
||||
|
||||
|
||||
```bash
|
||||
# No auth needed for this endpoint
|
||||
curl https://your-open-webuiinstance/health
|
||||
```
|
||||
|
||||
### Using Uptime Kuma
|
||||
[Uptime Kuma](https://github.com/louislam/uptime-kuma) is a great, easy to use, open source, self-hosted uptime monitoring tool.
|
||||
|
||||
1. In your Uptime Kuma dashboard, click "Add New Monitor"
|
||||
2. Set the following configuration:
|
||||
- Monitor Type: HTTP(s)
|
||||
- Name: Open WebUI
|
||||
- URL: `http://your-open-webuiinstance:8080/health`
|
||||
- Monitoring Interval: 60 seconds (or your preferred interval)
|
||||
- Retry count: 3 (recommended)
|
||||
|
||||
The health check will verify:
|
||||
- The web server is responding
|
||||
- The application is running
|
||||
- Basic database connectivity
|
||||
|
||||
## Open WebUI Model Connectivity
|
||||
|
||||
To verify that Open WebUI can successfully connect to and list your configured models, you can monitor the models endpoint. This endpoint requires authentication and checks Open WebUI's ability to communicate with your model providers.
|
||||
|
||||
See [API documentation](https://docs.openwebui.com/getting-started/api-endpoints/#-retrieve-all-models) for more details about the models endpoint.
|
||||
|
||||
|
||||
```bash
|
||||
# See steps below to get an API key
|
||||
curl -H "Authorization: Bearer sk-adfadsflkhasdflkasdflkh" https://your-open-webuiinstance/api/models
|
||||
```
|
||||
|
||||
### Authentication Setup
|
||||
|
||||
1. Enable API Keys (Admin required):
|
||||
- Go to Admin Settings > General
|
||||
- Enable the "Enable API Key" setting
|
||||
- Save changes
|
||||
|
||||
2. Get your API key [docs](https://docs.openwebui.com/getting-started/api-endpoints):
|
||||
- (Optional), consider making a non-admin user for the monitoring API key
|
||||
- Go to Settings > Account in Open WebUI
|
||||
- Generate a new API key specifically for monitoring
|
||||
- Copy the API key for use in Uptime Kuma
|
||||
|
||||
Note: If you don't see the option to generate API keys in your Settings > Account, check with your administrator to ensure API keys are enabled.
|
||||
|
||||
### Using Uptime Kuma for Model Connectivity
|
||||
|
||||
1. Create a new monitor in Uptime Kuma:
|
||||
- Monitor Type: HTTP(s) - JSON Query
|
||||
- Name: Open WebUI Model Connectivity
|
||||
- URL: `http://your-open-webuiinstance:8080/api/models`
|
||||
- Method: GET
|
||||
- Expected Status Code: 200
|
||||
- JSON Query: `$count(data[*])>0`
|
||||
- Expected Value: `true`
|
||||
- Monitoring Interval: 300 seconds (5 minutes recommended)
|
||||
|
||||
2. Configure Authentication:
|
||||
- In the Headers section, add:
|
||||
```
|
||||
{
|
||||
"Authorization": "Bearer sk-abc123adfsdfsdfsdfsfdsdf"
|
||||
}
|
||||
```
|
||||
- Replace `YOUR_API_KEY` with the API key you generated
|
||||
|
||||
Alternative JSON Queries:
|
||||
```
|
||||
# At least 1 models by ollama provider
|
||||
$count(data[owned_by='ollama'])>1
|
||||
|
||||
# Check if specific model exists (returns true/false)
|
||||
$exists(data[id='gpt-4o'])
|
||||
|
||||
# Check multiple models (returns true if ALL exist)
|
||||
$count(data[id in ['gpt-4o', 'gpt-4o-mini']]) = 2
|
||||
```
|
||||
|
||||
You can test JSONata queries at [jsonata.org](https://try.jsonata.org/) to verify they work with your API response.
|
||||
|
||||
## Model Response Testing
|
||||
|
||||
To verify that models can actually process requests, you can monitor the chat completions endpoint. This provides a deeper health check by ensuring models can generate responses.
|
||||
|
||||
```bash
|
||||
# Test model response
|
||||
curl -X POST https://your-open-webuiinstance/api/chat/completions \
|
||||
-H "Authorization: Bearer sk-adfadsflkhasdflkasdflkh" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"messages": [{"role": "user", "content": "Respond with the word HEALTHY"}],
|
||||
"model": "llama3.1",
|
||||
"temperature": 0
|
||||
}'
|
||||
```
|
@ -35,7 +35,7 @@ Please note that `PersistentConfig` environment variables are clearly marked as
|
||||
|
||||
## App/Backend
|
||||
|
||||
The following environment variables are used by `backend/config.py` to provide Open WebUI startup
|
||||
The following environment variables are used by `backend/open_webui/config.py` to provide Open WebUI startup
|
||||
configuration. Please note that some variables may have different default values depending on
|
||||
whether you're running Open WebUI directly or via Docker. For more information on logging
|
||||
environment variables, see our [logging documentation](https://docs.openwebui.com/getting-started/advanced-topics/logging)).
|
||||
@ -373,18 +373,26 @@ when using OpenAI-compatible endpoints.
|
||||
Template:
|
||||
|
||||
```
|
||||
Create a concise, 3-5 word title with an emoji as a title for the chat history, in the given language. Suitable Emojis for the summary can be used to enhance understanding but avoid quotation marks or special formatting. RESPOND ONLY WITH THE TITLE TEXT.
|
||||
|
||||
Examples of titles:
|
||||
📉 Stock Market Trends
|
||||
🍪 Perfect Chocolate Chip Recipe
|
||||
Evolution of Music Streaming
|
||||
Remote Work Productivity Tips
|
||||
Artificial Intelligence in Healthcare
|
||||
🎮 Video Game Development Insights
|
||||
|
||||
### Task:
|
||||
Generate a concise, 3-5 word title with an emoji summarizing the chat history.
|
||||
### Guidelines:
|
||||
- The title should clearly represent the main theme or subject of the conversation.
|
||||
- Use emojis that enhance understanding of the topic, but avoid quotation marks or special formatting.
|
||||
- Write the title in the chat's primary language; default to English if multilingual.
|
||||
- Prioritize accuracy over excessive creativity; keep it clear and simple.
|
||||
### Output:
|
||||
JSON format: { "title": "your concise title here" }
|
||||
### Examples:
|
||||
- { "title": "📉 Stock Market Trends" },
|
||||
- { "title": "🍪 Perfect Chocolate Chip Recipe" },
|
||||
- { "title": "Evolution of Music Streaming" },
|
||||
- { "title": "Remote Work Productivity Tips" },
|
||||
- { "title": "Artificial Intelligence in Healthcare" },
|
||||
- { "title": "🎮 Video Game Development Insights" }
|
||||
### Chat History:
|
||||
<chat_history>
|
||||
{{MESSAGES:END:2}}
|
||||
</chat_history>
|
||||
```
|
||||
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
@ -869,7 +877,7 @@ Provide a clear and direct response to the user's query, including inline citati
|
||||
#### `RAG_FILE_MAX_SIZE`
|
||||
|
||||
- Type: `int`
|
||||
- Description: Sets the maximum size of a file that can be uploaded for document ingestion.
|
||||
- Description: Sets the maximum size of a file in megabytes that can be uploaded for document ingestion.
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
#### `RAG_FILE_MAX_COUNT`
|
||||
@ -1070,6 +1078,12 @@ When enabling `GOOGLE_DRIVE_INTEGRATION`, ensure that you have configured `GOOGL
|
||||
- Default: `default`
|
||||
- Description: Specifies the database to connect to within a milvus instance
|
||||
|
||||
#### `MILVUS_TOKEN`
|
||||
|
||||
- Type: `str`
|
||||
- Default: `None`
|
||||
- Description: Specifies the connection token for Milvus, optional.
|
||||
|
||||
|
||||
### OpenSearch
|
||||
|
||||
@ -1844,6 +1858,36 @@ See https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-registe
|
||||
- Description: Sets the redirect URI for Microsoft OAuth
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
### Github
|
||||
|
||||
See https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps
|
||||
|
||||
#### `GITHUB_CLIENT_ID`
|
||||
|
||||
- Type: `str`
|
||||
- Description: Sets the client ID for Github OAuth
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
#### `GITHUB_CLIENT_SECRET`
|
||||
|
||||
- Type: `str`
|
||||
- Description: Sets the client secret for Github OAuth
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
#### `GITHUB_OAUTH_SCOPE`
|
||||
|
||||
- Type: `str`
|
||||
- Default: `user:email`
|
||||
- Description: Sets the scope for Github OAuth authentication.
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
#### `GITHUB_CLIENT_REDIRECT_URI`
|
||||
|
||||
- Type: `str`
|
||||
- Default: `<backend>/oauth/github/callback`
|
||||
- Description: Sets the redirect URI for Github OAuth
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
### OpenID (OIDC)
|
||||
|
||||
#### `OAUTH_CLIENT_ID`
|
||||
@ -1905,6 +1949,12 @@ See https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-registe
|
||||
- Description: Sets the attribute to use as username for LDAP authentication.
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
#### `LDAP_ATTRIBUTE_FOR_MAIL`
|
||||
|
||||
- Type: `str`
|
||||
- Description: Sets the attribute to use as mail for LDAP authentication.
|
||||
- Persistence: This environment variable is a `PersistentConfig` variable.
|
||||
|
||||
#### `LDAP_CA_CERT_FILE`
|
||||
|
||||
- Type: `str`
|
||||
@ -2050,6 +2100,11 @@ These variables are not specific to Open WebUI but can still be valuable in cert
|
||||
- Type: `str`
|
||||
- Description: Sets the endpoint URL for S3 storage.
|
||||
|
||||
#### `S3_KEY_PREFIX`
|
||||
|
||||
- Type: `str`
|
||||
- Description: Sets the key prefix for a S3 object.
|
||||
|
||||
#### `S3_REGION_NAME`
|
||||
|
||||
- Type: `str`
|
||||
|
@ -39,7 +39,7 @@ A useful helper script called `run-compose.sh` is included with the codebase. Th
|
||||
|
||||
---
|
||||
|
||||
**Note:** For Nvidia GPU support, add the following to your service definition in the `docker-compose.yml` file:
|
||||
**Note:** For Nvidia GPU support, you change the image from `ghcr.io/open-webui/open-webui:main` to `ghcr.io/open-webui/open-webui:cuda` and add the following to your service definition in the `docker-compose.yml` file:
|
||||
|
||||
```yaml
|
||||
deploy:
|
||||
|
@ -108,4 +108,13 @@ The data is stored in a Docker volume named `open-webui`. The path to the volume
|
||||
docker volume inspect open-webui
|
||||
```
|
||||
|
||||
This will show you the details of the volume, including the mountpoint, which is usually located in `/var/lib/docker/volumes/open-webui/_data`.
|
||||
This will show you the details of the volume, including the mountpoint, which is usually located in `/var/lib/docker/volumes/open-webui/_data`.
|
||||
|
||||
On Windows 10 + WSL 2, Docker volumes are located here (type in the Windows file explorer):
|
||||
- \\\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes
|
||||
|
||||
For older versions of Docker (pre-Docker v26.1.4):
|
||||
- \\\wsl$\docker-desktop-data\data\docker\volumes
|
||||
- \\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
|
||||
|
||||
_(Windows answer credit to StackOverflow user sarye-haddadi; [link to original SO post](https://stackoverflow.com/questions/43181654/locating-data-volumes-in-docker-desktop-windows))_
|
||||
|
@ -26,6 +26,11 @@ import { SponsorList } from "@site/src/components/SponsorList";
|
||||
|
||||

|
||||
|
||||
:::tip
|
||||
**Looking for an [Enterprise Plan](https://docs.openwebui.com/enterprise)?** – **[Speak with Our Sales Team Today!](mailto:sales@openwebui.com)**
|
||||
|
||||
Get **enhanced capabilities**, including **custom theming and branding**, **Service Level Agreement (SLA) support**, **Long-Term Support (LTS) versions**, and **more!**
|
||||
:::
|
||||
|
||||
## Quick Start with Docker 🐳
|
||||
|
||||
|
@ -84,9 +84,51 @@ _If you have issues with the above._ I had issues chaining the `bash` commands
|
||||
UPDATE auth SET password='HASH' WHERE email='admin@example.com';
|
||||
-- exit sqlite: [Ctrl + d]
|
||||
```
|
||||
## Nuking All the Data
|
||||
|
||||
If you want to **completely reset** Open WebUI—including all user data, settings, and passwords—follow these steps to remove the `webui.db` file.
|
||||
|
||||
### Step 1: Locate `webui.db` in Your Python Environment
|
||||
|
||||
If you’re unsure where `webui.db` is located (especially if you're using a virtual environment), you can find out by following these steps:
|
||||
|
||||
1. Activate your virtual environment (if applicable).
|
||||
2. Open a Python shell:
|
||||
python
|
||||
|
||||
3. Run the following code inside the Python shell:
|
||||
```
|
||||
import os
|
||||
import open_webui
|
||||
|
||||
# Show where the Open WebUI package is installed
|
||||
print("Open WebUI is installed at:", open_webui.__file__)
|
||||
|
||||
# Construct a potential path to webui.db (commonly located in 'data/webui.db')
|
||||
db_path = os.path.join(os.path.dirname(open_webui.__file__), "data", "webui.db")
|
||||
print("Potential path to webui.db:", db_path)
|
||||
|
||||
# Check if webui.db exists at that path
|
||||
if os.path.exists(db_path):
|
||||
print("webui.db found at:", db_path)
|
||||
else:
|
||||
print("webui.db not found at:", db_path)
|
||||
```
|
||||
4. Examine the output:
|
||||
- If the file is found, you’ll see its exact path.
|
||||
- If not, you may need to perform a broader filesystem search (e.g., using `find` on Linux or a global file search on Windows/Mac).
|
||||
|
||||
### Step 2: Delete `webui.db`
|
||||
|
||||
Once you’ve located the file, remove it using a command similar to:
|
||||
|
||||
```
|
||||
rm -rf /path/to/your/python/environment/lib/pythonX.X/site-packages/open_webui/data/webui.db
|
||||
```
|
||||
|
||||
**Warning:** Deleting `webui.db` will remove all stored data, including user accounts, settings, and passwords. Only do this if you truly want to start fresh!
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
📖 By following these straightforward steps, you'll regain access to your Open WebUI admin account in no time. If you encounter any issues during the process, please consider searching for your issue on forums or community platforms.
|
||||
```
|
102
docs/tutorials/integrations/amazon-bedrock.md
Normal file
@ -0,0 +1,102 @@
|
||||
---
|
||||
sidebar_position: 31
|
||||
title: "🛌 Integrate with Amazon Bedrock"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
# Integrating Open-WebUI with Amazon Bedrock
|
||||
|
||||
In this tutorial, we'll explore one of the most common and popular approaches to integrate Open-WebUI with Amazon Bedrock.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
|
||||
In order to follow this tutorial, you must have the following:
|
||||
|
||||
- An active AWS account
|
||||
- An active AWS Access Key and Secret Key
|
||||
- IAM permissions in AWS to enable Bedrock models or already enabled models
|
||||
- Docker installed on your system
|
||||
|
||||
|
||||
## What is Amazon Bedrock
|
||||
|
||||
Direct from AWS' website:
|
||||
|
||||
"Amazon Bedrock is a fully managed service that offers a choice of high-performing foundation models (FMs) from leading AI companies like AI21 Labs, Anthropic, Cohere, Luma, Meta, Mistral AI, poolside (coming soon), Stability AI, and Amazon through a single API, along with a broad set of capabilities you need to build generative AI applications with security, privacy, and responsible AI. Using Amazon Bedrock, you can easily experiment with and evaluate top FMs for your use case, privately customize them with your data using techniques such as fine-tuning and Retrieval Augmented Generation (RAG), and build agents that execute tasks using your enterprise systems and data sources. Since Amazon Bedrock is serverless, you don't have to manage any infrastructure, and you can securely integrate and deploy generative AI capabilities into your applications using the AWS services you are already familiar with."
|
||||
|
||||
To learn more about Bedrock, visit: [Amazon Bedrock's Official Page](https://aws.amazon.com/bedrock/)
|
||||
|
||||
# Integration Steps
|
||||
|
||||
## Step 1: Verify access to Amazon Bedrock Base Models
|
||||
|
||||
Before we can integrate with Bedrock, you first have to verify that you have access to at least one, but preferably many, of the available Base Models. At the time of this writing (Feb 2025), there were 47 base models available. You can see in the screenshot below that I have access to multiple models. You'll know if you have access to a model if it says "✅ Access Granted" next to the model. If you don't have access to any models, you will get an error on the next step.
|
||||
|
||||
AWS provides good documentation for request accessing / enabling these models here: [Amazon Bedrock's Model Access Docs](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html)
|
||||
|
||||

|
||||
|
||||
|
||||
## Step 2: Configure the Bedrock Access Gateway
|
||||
|
||||
Now that we have access to at least one Bedrock base model, we need to configure the Bedrock Access Gateway, or BAG. You can think of the BAG as kind of proxy or middleware developed by AWS that wraps around AWS native endpoints/SDK for Bedrock and, in turn, exposes endpoints that are compatible with OpenAI's schema, which is what Open-WebUI requires.
|
||||
|
||||
For reference, here is a simple mapping between the endpoints:
|
||||
|
||||
|
||||
| OpenAI Endpoint | Bedrock Method |
|
||||
|-----------------------|------------------------|
|
||||
| `/models` | list_inference_profiles |
|
||||
| `/models/{model_id}` | list_inference_profiles |
|
||||
| `/chat/completions` | converse or converse_stream |
|
||||
| `/embeddings` | invoke_model |
|
||||
|
||||
The BAG repo can be found here: [Bedrock Access Gateway Repo](https://github.com/aws-samples/bedrock-access-gateway)
|
||||
|
||||
To set-up the BAG, follow the below steps:
|
||||
- Clone the BAG repo
|
||||
- Remove the default `dockerfile`
|
||||
- Change the name of the `Dockerfile_ecs` to `Dockerfile`
|
||||
|
||||
We're now ready to build and launch the docker container using:
|
||||
|
||||
```bash
|
||||
docker build . -f Dockerfile -t bedrock-gateway
|
||||
|
||||
docker run -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY" -e AWS_REGION=us-east-1 -d -p 8000:80 bedrock-gateway
|
||||
```
|
||||
|
||||
You should now be able to access the BAG's swagger page at: http://localhost:8000/docs
|
||||
|
||||

|
||||
|
||||
## Step 3: Add Connection in Open-WebUI
|
||||
|
||||
Now that you the BAG up-and-running, it's time to add it as a new connection in Open-WebUI.
|
||||
|
||||
- Under the Admin Panel, go to Settings -> Connections.
|
||||
- Use the "+" (plus) button to add a new connection under the OpenAI
|
||||
- For the URL, use "http://host.docker.internal:8000/api/v1"
|
||||
- For the password, the default password defined in BAG is "bedrock". You can always change this password in the BAG settings (see DEFAULT_API_KEYS)
|
||||
- Click the "Verify Connection" button and you should see "Server connection verified" alert in the top-right
|
||||
|
||||

|
||||
|
||||
## Step 4: Start using Bedrock Base Models
|
||||
|
||||
You should now see all your Bedrock models available!
|
||||
|
||||

|
||||
|
||||
## Other Helpful Tutorials
|
||||
|
||||
These are a few other very helpful tutorials when working to integrate Open-WebUI with Amazon Bedrock.
|
||||
|
||||
- https://gauravve.medium.com/connecting-open-webui-to-aws-bedrock-a1f0082c8cb2
|
||||
- https://jrpospos.blog/posts/2024/08/using-amazon-bedrock-with-openwebui-when-working-with-sensitive-data/
|
@ -13,7 +13,7 @@ To fix this, you will need to add the new cert into OI's truststore.
|
||||
|
||||
**For pre-built Docker image**:
|
||||
|
||||
1. Mount the certificiate store from your host machine into the container by passing `--volume=/etc/ssl/certs/ca-certificiate.crt:/etc/ssl/certs/ca-certificiates.crt:ro` as a command-line option to `docker run`
|
||||
1. Mount the certificate store from your host machine into the container by passing `--volume=/etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro` as a command-line option to `docker run`
|
||||
2. Force python to use the system truststore by setting `REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt` (see https://docs.docker.com/reference/cli/docker/container/run/#env)
|
||||
|
||||
If the environment variable `REQUESTS_CA_BUNDLE` does not work try to set `SSL_CERT_FILE` (as per the [httpx documentation](https://www.python-httpx.org/environment_variables/#ssl_cert_file)) instead with the same value.
|
||||
|
132
docs/tutorials/integrations/firefox-sidebar.md
Normal file
@ -0,0 +1,132 @@
|
||||
---
|
||||
sidebar_position: 4100
|
||||
title: "🦊 Firefox AI Chatbot Sidebar"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## 🦊 Firefox AI Chatbot Sidebar
|
||||
|
||||
# Integrating Open WebUI as a Local AI Chatbot Browser Assistant in Mozilla Firefox
|
||||
|
||||
Table of Contents
|
||||
=================
|
||||
1. [Prerequisites](#prerequisites)
|
||||
2. [Enabling AI Chatbot in Firefox](#enabling-ai-chatbot-in-firefox)
|
||||
3. [Configuring about:config Settings](#configuring-aboutconfig-settings)
|
||||
* [browser.ml.chat.enabled](#browsermlchatenabled)
|
||||
* [browser.ml.chat.hideLocalhost](#browsermlchathidelocalhost)
|
||||
* [browser.ml.chat.prompts.#](#browsermlchatsprompts)
|
||||
* [browser.ml.chat.provider](#browsermlchatprovider)
|
||||
4. [URL Parameters for Open WebUI](#url-parameters-for-open-webui)
|
||||
* [Models and Model Selection](#models-and-model-selection)
|
||||
* [YouTube Transcription](#youtube-transcription)
|
||||
* [Web Search](#web-search)
|
||||
* [Tool Selection](#tool-selection)
|
||||
* [Call Overlay](#call-overlay)
|
||||
* [Initial Query Prompt](#initial-query-prompt)
|
||||
* [Temporary Chat Sessions](#temporary-chat-sessions)
|
||||
5. [Additional about:config Settings](#additional-aboutconfig-settings)
|
||||
6. [Accessing the AI Chatbot Sidebar](#accessing-the-ai-chatbot-sidebar)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before integrating Open WebUI as a AI chatbot browser assistant in Mozilla Firefox, ensure you have:
|
||||
|
||||
* Open WebUI instance URL (local or domain)
|
||||
* Firefox browser installed
|
||||
|
||||
## Enabling AI Chatbot in Firefox
|
||||
|
||||
1. Click on the hamburger button (three horizontal lines button at the top right corner, just below the `X` button)
|
||||
2. Open up Firefox settings
|
||||
2. Click on the `Firefox Labs` section
|
||||
3. Toggle on `AI Chatbot`
|
||||
|
||||
Alternatively, you can enable AI Chatbot through the `about:config` page (described in the next section).
|
||||
|
||||
## Configuring about:config Settings
|
||||
|
||||
1. Type `about:config` in the Firefox address bar
|
||||
2. Click `Accept the Risk and Continue`
|
||||
3. Search for `browser.ml.chat.enabled` and toggle it to `true` if it's not already enabled through Firefox Labs
|
||||
4. Search for `browser.ml.chat.hideLocalhost` and toggle it to `false`
|
||||
|
||||
### browser.ml.chat.prompts.#
|
||||
|
||||
To add custom prompts, follow these steps:
|
||||
|
||||
1. Search for `browser.ml.chat.prompts.#` (replace `#` with a number, e.g., `0`, `1`, `2`, etc.)
|
||||
2. Click the `+` button to add a new prompt
|
||||
3. Enter the prompt label, value, and ID (e.g., `{"id":"My Prompt", "value": "This is my custom prompt.", "label": "My Prompt"}`)
|
||||
4. Repeat the process to add more prompts as desired
|
||||
|
||||
### browser.ml.chat.provider
|
||||
|
||||
1. Search for `browser.ml.chat.provider`
|
||||
2. Enter your Open WebUI instance URL, including any optional parameters (e.g., `https://my-open-webui-instance.com/?model=browser-productivity-assistant&temporary-chat=true&tools=jina_web_scrape`)
|
||||
|
||||
## URL Parameters for Open WebUI
|
||||
|
||||
The following URL parameters can be used to customize your Open WebUI instance:
|
||||
|
||||
### Models and Model Selection
|
||||
|
||||
* `models`: Specify multiple models (comma-separated list) for the chat session (e.g., `/?models=model1,model2`)
|
||||
* `model`: Specify a single model for the chat session (e.g., `/?model=model1`)
|
||||
|
||||
### YouTube Transcription
|
||||
|
||||
* `youtube`: Provide a YouTube video ID to transcribe the video in the chat (e.g., `/?youtube=VIDEO_ID`)
|
||||
|
||||
### Web Search
|
||||
|
||||
* `web-search`: Enable web search functionality by setting this parameter to `true` (e.g., `/?web-search=true`)
|
||||
|
||||
### Tool Selection
|
||||
|
||||
* `tools` or `tool-ids`: Specify a comma-separated list of tool IDs to activate in the chat (e.g., `/?tools=tool1,tool2` or `/?tool-ids=tool1,tool2`)
|
||||
|
||||
### Call Overlay
|
||||
|
||||
* `call`: Enable a video or call overlay in the chat interface by setting this parameter to `true` (e.g., `/?call=true`)
|
||||
|
||||
### Initial Query Prompt
|
||||
|
||||
* `q`: Set an initial query or prompt for the chat (e.g., `/?q=Hello%20there`)
|
||||
|
||||
### Temporary Chat Sessions
|
||||
|
||||
* `temporary-chat`: Mark the chat as a temporary session by setting this parameter to `true` (e.g., `/?temporary-chat=true`)
|
||||
|
||||
See https://docs.openwebui.com/features/chat-features/url-params for more info on URL parameters and how to use them.
|
||||
|
||||
## Additional about:config Settings
|
||||
|
||||
The following `about:config` settings can be adjusted for further customization:
|
||||
|
||||
* `browser.ml.chat.shortcuts`: Enable custom shortcuts for the AI chatbot sidebar
|
||||
* `browser.ml.chat.shortcuts.custom`: Enable custom shortcut keys for the AI chatbot sidebar
|
||||
* `browser.ml.chat.shortcuts.longPress`: Set the long press delay for shortcut keys
|
||||
* `browser.ml.chat.sidebar`: Enable the AI chatbot sidebar
|
||||
* `browser.ml.checkForMemory`: Check for available memory before loading models
|
||||
* `browser.ml.defaultModelMemoryUsage`: Set the default memory usage for models
|
||||
* `browser.ml.enable`: Enable the machine learning features in Firefox
|
||||
* `browser.ml.logLevel`: Set the log level for machine learning features
|
||||
* `browser.ml.maximumMemoryPressure`: Set the maximum memory pressure threshold
|
||||
* `browser.ml.minimumPhysicalMemory`: Set the minimum physical memory required
|
||||
* `browser.ml.modelCacheMaxSize`: Set the maximum size of the model cache
|
||||
* `browser.ml.modelCacheTimeout`: Set the timeout for model cache
|
||||
* `browser.ml.modelHubRootUrl`: Set the root URL for the model hub
|
||||
* `browser.ml.modelHubUrlTemplate`: Set the URL template for the model hub
|
||||
* `browser.ml.queueWaitInterval`: Set the interval for queue wait
|
||||
* `browser.ml.queueWaitTimeout`: Set the timeout for queue wait
|
||||
|
||||
## Accessing the AI Chatbot Sidebar
|
||||
|
||||
To access the AI chatbot sidebar, use one of the following methods:
|
||||
|
||||
* Press `CTRL+B` to open the bookmarks sidebar and switch to AI Chatbot
|
||||
* Press `CTRL+Alt+X` to open the AI chatbot sidebar directly
|
113
docs/tutorials/integrations/libre-translate.md
Normal file
@ -0,0 +1,113 @@
|
||||
---
|
||||
sidebar_position: 25
|
||||
title: "🔠 LibreTranslate Integration"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the OpenWebUI team. It serves only as a demonstration on how to customize OpenWebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
LibreTranslate is a free and open-source machine translation API that supports a wide range of languages. LibreTranslate is a self hosted, offline capable, and easy to setup, and unlike other APIs, it doesn't rely on proprietary providers such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source [Argos Translate](https://github.com/argosopentech/argos-translate) library. You can integrate LibreTranslate with Open WebUI to leverage its machine translation capabilities. This documentation provides a step-by-step guide to setting up LibreTranslate in Docker and configuring the integration within Open WebUI.
|
||||
|
||||
Setting up LibreTranslate in Docker
|
||||
-----------------------------------
|
||||
|
||||
To set up LibreTranslate in Docker, follow these steps:
|
||||
|
||||
### Step 1: Create a Docker Compose File
|
||||
|
||||
Create a new file named `docker-compose.yml` in a directory of your choice. Add the following configuration to the file:
|
||||
|
||||
```yml
|
||||
services:
|
||||
libretranslate:
|
||||
container_name: libretranslate
|
||||
image: libretranslate/libretranslate:v1.6.0
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "5000:5000"
|
||||
env_file:
|
||||
- stack.env
|
||||
volumes:
|
||||
- libretranslate_api_keys:/app/db
|
||||
- libretranslate_models:/home/libretranslate/.local:rw
|
||||
tty: true
|
||||
stdin_open: true
|
||||
healthcheck:
|
||||
test: ['CMD-SHELL', './venv/bin/python scripts/healthcheck.py']
|
||||
|
||||
volumes:
|
||||
libretranslate_models:
|
||||
libretranslate_api_keys:
|
||||
```
|
||||
|
||||
### Step 2: Create a `stack.env` File
|
||||
|
||||
Create a new file named `stack.env` in the same directory as your `docker-compose.yml` file. Add the following configuration to the file:
|
||||
|
||||
```bash
|
||||
# LibreTranslate
|
||||
LT_DEBUG="false"
|
||||
LT_UPDATE_MODELS="true"
|
||||
LT_SSL="false"
|
||||
LT_SUGGESTIONS="false"
|
||||
LT_METRICS="false"
|
||||
LT_HOST="0.0.0.0"
|
||||
|
||||
LT_API_KEYS="false"
|
||||
|
||||
LT_THREADS="12"
|
||||
LT_FRONTEND_TIMEOUT="2000"
|
||||
```
|
||||
|
||||
### Step 3: Run the Docker Compose File
|
||||
|
||||
Run the following command to start the LibreTranslate service:
|
||||
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
This will start the LibreTranslate service in detached mode.
|
||||
|
||||
Configuring the Integration in Open WebUI
|
||||
-------------------------------------------
|
||||
|
||||
Once you have LibreTranslate up and running in Docker, you can configure the integration within Open WebUI. There are several community integrations available, including:
|
||||
|
||||
* [LibreTranslate Filter Function](https://openwebui.com/f/iamg30/libretranslate_filter)
|
||||
* [LibreTranslate Action Function](https://openwebui.com/f/jthesse/libretranslate_action)
|
||||
* [MultiLanguage LibreTranslate Action Function](https://openwebui.com/f/iamg30/multilanguage_libretranslate_action)
|
||||
* [LibreTranslate Filter Pipeline](https://github.com/open-webui/pipelines/blob/main/examples/filters/libretranslate_filter_pipeline.py)
|
||||
|
||||
Choose the integration that best suits your needs and follow the instructions to configure it within Open WebUI.
|
||||
|
||||
Supported languages for the LibreTranslate pipeline & function:
|
||||
Really just all the languages that can be found within LibreTranslate, but here is the list:
|
||||
```
|
||||
Albanian, Arabic, Azerbaijani, Bengali, Bulgarian, Catalan, Valencian, Chinese, Czech, Danish, Dutch, English, Flemish, Esperanto, Estonian, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Irish, Italian, Japanese, Korean, Latvian, Lithuanian, Malay, Persian, Polish, Portuguese, Romanian, Moldavian, Moldovan, Russian, Slovak, Slovenian, Spanish, Castilian, Swedish, Tagalog, Thai, Turkish, Ukrainian, Urdu
|
||||
```
|
||||
|
||||
Troubleshooting
|
||||
--------------
|
||||
|
||||
* Make sure the LibreTranslate service is running and accessible.
|
||||
* Verify that the Docker configuration is correct.
|
||||
* Check the LibreTranslate logs for any errors.
|
||||
|
||||
Benefits of Integration
|
||||
----------------------
|
||||
|
||||
Integrating LibreTranslate with Open WebUI provides several benefits, including:
|
||||
|
||||
* Machine translation capabilities for a wide range of languages.
|
||||
* Improved text analysis and processing.
|
||||
* Enhanced functionality for language-related tasks.
|
||||
|
||||
Conclusion
|
||||
----------
|
||||
|
||||
Integrating LibreTranslate with Open WebUI is a straightforward process that can enhance the functionality of your Open WebUI instance. By following the steps outlined in this documentation, you can set up LibreTranslate in Docker and configure the integration within Open WebUI.
|
100
docs/tutorials/s3-storage.md
Normal file
@ -0,0 +1,100 @@
|
||||
---
|
||||
sidebar_position: 320
|
||||
title: "🪣 Switching to S3 Storage"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
# 🪣 Switching to S3 Storage
|
||||
|
||||
This guide provides instructions on how to switch the default `local` storage in Open WebUI config to Amazon S3.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
In order to follow this tutorial, you must have the following:
|
||||
|
||||
- An active AWS account
|
||||
- An active AWS Access Key and Secret Key
|
||||
- IAM permissions in AWS to create and put objects in S3
|
||||
- Docker installed on your system
|
||||
|
||||
## What is Amazon S3
|
||||
|
||||
Direct from AWS' website:
|
||||
|
||||
"Amazon S3 is an object storage service that offers industry-leading scalability, data availability, security, and performance. Store and protect any amount of data for a range of use cases, such as data lakes, websites, cloud-native applications, backups, archive, machine learning, and analytics. Amazon S3 is designed for 99.999999999% (11 9's) of durability, and stores data for millions of customers all around the world."
|
||||
|
||||
To learn more about S3, visit: [Amazon S3's Official Page](https://aws.amazon.com/s3/)
|
||||
|
||||
# How to Set-Up
|
||||
|
||||
## 1. Required environment variables
|
||||
|
||||
In order to configure this option, you need to gather the following environment variables:
|
||||
|
||||
| **Open-WebUI Environment Variable** | **Example Value** |
|
||||
|-------------------------------------|---------------------------------------------|
|
||||
| `S3_ACCESS_KEY_ID` | ABC123 |
|
||||
| `S3_SECRET_ACCESS_KEY` | SuperSecret |
|
||||
| `S3_ENDPOINT_URL` | https://s3.us-east-1.amazonaws.com |
|
||||
| `S3_REGION_NAME` | us-east-1 |
|
||||
| `S3_BUCKET_NAME` | my-awesome-bucket-name |
|
||||
|
||||
- S3_ACCESS_KEY_ID: This is an identifier for your AWS account's access key. You get this from the AWS Management Console or AWS CLI when creating an access key.
|
||||
- S3_SECRET_ACCESS_KEY: This is the secret part of your AWS access key pair. It's provided when you create an access key in AWS and should be stored securely.
|
||||
- S3_ENDPOINT_URL: This URL directs to your S3 service endpoint and can typically be found in AWS service documentation or account settings.
|
||||
- S3_REGION_NAME: This is the AWS region where your S3 bucket resides, like "us-east-1". You can identify this from the AWS Management Console under your S3 bucket details.
|
||||
- S3_BUCKET_NAME: This is the unique name of your S3 bucket, which you specified when creating the bucket in AWS.
|
||||
|
||||
For a complete list of the available S3 endpoint URLs, see: [Amazon S3 Regular Endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html)
|
||||
|
||||
See all the `Cloud Storage` configuration options here: [Open-WebUI Cloud Storage Config](https://docs.openwebui.com/getting-started/env-configuration#cloud-storage)
|
||||
|
||||
## 2. Run Open-WebUI
|
||||
|
||||
Before we launch our instance of Open-WebUI, there is one final environment variable called `STORAGE_PROVIDER` we need to set. This variable tells Open-WebUI which provider you want to use. By default, `STORAGE_PROVIDER` is empty which means Open-WebUI uses local storage.
|
||||
|
||||
| **Storage Provider** | **Type** | **Description** | **Default** |
|
||||
|----------------------|----------|-------------------------------------------------------------------------------------------------|-------------|
|
||||
| `local` | str | Defaults to local storage if an empty string (`' '`) is provided | Yes |
|
||||
| `s3` | str | Uses S3 client library and related environment variables mentioned in Amazon S3 Storage | No |
|
||||
| `gcs` | str | Uses GCS client library and related environment variables mentioned in Google Cloud Storage | No |
|
||||
|
||||
To use Amazon S3, we need to set `STORAGE_PROVIDER` to "S3" along with all the environment variables we gathered in Step 1 (`S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, `S3_ENDPOINT_URL`, `S3_REGION_NAME`, `S3_BUCKET_NAME`).
|
||||
|
||||
Here, I'm also setting the `ENV` to "dev", which will allow us to see the Open-WebUI Swagger docs so we can further test and confirm the S3 storage set-up is working as expected.
|
||||
|
||||
```sh
|
||||
docker run -d \
|
||||
-p 3000:8080 \
|
||||
-v open-webui:/app/backend/data \
|
||||
-e STORAGE_PROVIDER="s3" \
|
||||
-e S3_ACCESS_KEY_ID="ABC123" \
|
||||
-e S3_SECRET_ACCESS_KEY="SuperSecret" \
|
||||
-e S3_ENDPOINT_URL="https://s3.us-east-1.amazonaws.com" \
|
||||
-e S3_REGION_NAME="us-east-1" \
|
||||
-e S3_BUCKET_NAME="my-awesome-bucket-name" \
|
||||
-e ENV="dev" \
|
||||
--name open-webui \
|
||||
ghcr.io/open-webui/open-webui:main
|
||||
```
|
||||
|
||||
## 3. Test the set-up
|
||||
|
||||
Now that we have Open-WebUI running, let's upload a simple `Hello, World` text file and test our set-up.
|
||||
|
||||

|
||||
|
||||
And confirm that we're getting a response from the selected LLM.
|
||||
|
||||

|
||||
|
||||
Great! Looks like everything is worked as expected in Open-WebUI. Now let's verify that the text file was indeed uploaded and stored in the specified S3 bucket. Using the AWS Management Console, we can see that there is now a file in the S3 bucket. In addition to the name of the file we uploaded (`hello.txt`) you can see the object's name was appended with a unique ID. This is how Open-WebUI tracks all the files uploaded.
|
||||
|
||||

|
||||
|
||||
Using Open-WebUI's swagger docs, we can get all the information related to this file using the `/api/v1/files/{id}` endpoint and passing in the unique ID (4405fabb-603e-4919-972b-2b39d6ad7f5b).
|
||||
|
||||

|
@ -7,15 +7,9 @@ title: "🗨️ Kokoro-FastAPI Using Docker"
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
# Integrating `Kokoro-FastAPI` 🗣️ with Open WebUI
|
||||
|
||||
## What is `Kokoro-FastAPI`?
|
||||
|
||||
[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) is a dockerized FastAPI wrapper for the [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) text-to-speech model that implements the OpenAI API endpoint specification. It offers high-performance text-to-speech with impressive generation speeds:
|
||||
|
||||
- 100x+ real-time speed via HF A100
|
||||
- 35-50x+ real-time speed via 4060Ti
|
||||
- 5x+ real-time speed via M3 Pro CPU
|
||||
[Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) is a dockerized FastAPI wrapper for the [Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M) text-to-speech model that implements the OpenAI API endpoint specification. It offers high-performance text-to-speech with impressive generation speeds.
|
||||
|
||||
## Key Features
|
||||
|
||||
@ -23,18 +17,20 @@ This tutorial is a community contribution and is not supported by the Open WebUI
|
||||
- NVIDIA GPU accelerated or CPU Onnx inference
|
||||
- Streaming support with variable chunking
|
||||
- Multiple audio format support (`.mp3`, `.wav`, `.opus`, `.flac`, `.aac`, `.pcm`)
|
||||
- Gradio Web UI interface for easy testing
|
||||
- Integrated web interface on localhost:8880/web (or additional container in repo for gradio)
|
||||
- Phoneme endpoints for conversion and generation
|
||||
|
||||
## Voices
|
||||
|
||||
- af
|
||||
- af_bella
|
||||
- af_irulan
|
||||
- af_nicole
|
||||
- af_sarah
|
||||
- af_sky
|
||||
- am_adam
|
||||
- am_michael
|
||||
- am_gurney
|
||||
- bf_emma
|
||||
- bf_isabella
|
||||
- bm_george
|
||||
@ -49,7 +45,7 @@ This tutorial is a community contribution and is not supported by the Open WebUI
|
||||
|
||||
- Docker installed on your system
|
||||
- Open WebUI running
|
||||
- For GPU support: NVIDIA GPU with CUDA 12.1
|
||||
- For GPU support: NVIDIA GPU with CUDA 12.3
|
||||
- For CPU-only: No special requirements
|
||||
|
||||
## ⚡️ Quick start
|
||||
@ -58,14 +54,54 @@ This tutorial is a community contribution and is not supported by the Open WebUI
|
||||
|
||||
### GPU Version (Requires NVIDIA GPU with CUDA 12.1)
|
||||
|
||||
Using docker run:
|
||||
|
||||
```bash
|
||||
docker run -d -p 8880:8880 -p 7860:7860 remsky/kokoro-fastapi:latest
|
||||
docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu
|
||||
```
|
||||
|
||||
Or docker compose, by creating a `docker-compose.yml` file and running `docker compose up`. For example:
|
||||
|
||||
```yaml
|
||||
name: kokoro
|
||||
services:
|
||||
kokoro-fastapi-gpu:
|
||||
ports:
|
||||
- 8880:8880
|
||||
image: ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.1
|
||||
restart: always
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
count: all
|
||||
capabilities:
|
||||
- gpu
|
||||
```
|
||||
|
||||
:::info
|
||||
You may need to install and configure [the NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
|
||||
:::
|
||||
|
||||
### CPU Version (ONNX optimized inference)
|
||||
|
||||
With docker run:
|
||||
|
||||
```bash
|
||||
docker run -d -p 8880:8880 -p 7860:7860 remsky/kokoro-fastapi:cpu-latest
|
||||
docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu
|
||||
```
|
||||
|
||||
With docker compose:
|
||||
|
||||
```yaml
|
||||
name: kokoro
|
||||
services:
|
||||
kokoro-fastapi-cpu:
|
||||
ports:
|
||||
- 8880:8880
|
||||
image: ghcr.io/remsky/kokoro-fastapi-cpu
|
||||
restart: always
|
||||
```
|
||||
|
||||
## Setting up Open WebUI to use `Kokoro-FastAPI`
|
||||
@ -75,10 +111,10 @@ To use Kokoro-FastAPI with Open WebUI, follow these steps:
|
||||
- Open the Admin Panel and go to `Settings` -> `Audio`
|
||||
- Set your TTS Settings to match the following:
|
||||
- - Text-to-Speech Engine: OpenAI
|
||||
- API Base URL: `http://localhost:8880/v1`
|
||||
- API Base URL: `http://localhost:8880/v1` # you may need to use `host.docker.internal` instead of `localhost`
|
||||
- API Key: `not-needed`
|
||||
- TTS Model: `kokoro`
|
||||
- TTS Voice: `af_bella`
|
||||
- TTS Voice: `af_bella` # also accepts mapping of existing OAI voices for compatibility
|
||||
|
||||
:::info
|
||||
The default API key is the string `not-needed`. You do not have to change that value if you do not need the added security.
|
||||
@ -89,9 +125,10 @@ The default API key is the string `not-needed`. You do not have to change that v
|
||||
```bash
|
||||
git clone https://github.com/remsky/Kokoro-FastAPI.git
|
||||
cd Kokoro-FastAPI
|
||||
cd docker/cpu # or docker/gpu
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
**That's it!**
|
||||
|
||||
## For more information on building the Docker container, including changing ports, please refer to the [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) repository
|
||||
For more information on building the Docker container, including changing ports, please refer to the [Kokoro-FastAPI](https://github.com/remsky/Kokoro-FastAPI) repository
|
||||
|
587
docs/tutorials/tips/sqlite-database.md
Normal file
@ -0,0 +1,587 @@
|
||||
---
|
||||
sidebar_position: 11
|
||||
title: "💠 SQLite Database Overview"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
> [!WARNING]
|
||||
> This documentation was created based on the current version (0.5.11) and is constantly being updated.
|
||||
|
||||
# Open-WebUI Internal SQLite Database
|
||||
|
||||
For Open-WebUI, the SQLite database serves as the backbone for user management, chat history, file storage, and various other core functionalities. Understanding this structure is essential for anyone looking to contribute to or maintain the project effectively.
|
||||
|
||||
## Internal SQLite Location
|
||||
|
||||
You can find the SQLite database at `root` -> `data` -> `webui.db`
|
||||
|
||||
```
|
||||
📁 Root (/)
|
||||
├── 📁 data
|
||||
│ ├── 📁 cache
|
||||
│ ├── 📁 uploads
|
||||
│ ├── 📁 vector_db
|
||||
│ └── 📄 webui.db
|
||||
├── 📄 dev.sh
|
||||
├── 📁 open_webui
|
||||
├── 📄 requirements.txt
|
||||
├── 📄 start.sh
|
||||
└── 📄 start_windows.bat
|
||||
```
|
||||
|
||||
## Copy Database Locally
|
||||
|
||||
If you want to copy the Open-WebUI SQLite database running in the container to your local machine, you can use:
|
||||
|
||||
```bash
|
||||
docker cp open-webui:/app/backend/data/webui.db ./webui.db
|
||||
```
|
||||
|
||||
Alternatively, you can access the database within the container using:
|
||||
|
||||
```bash
|
||||
docker exec -it open-webui /bin/sh
|
||||
```
|
||||
|
||||
## Table Overview
|
||||
|
||||
Here is a complete list of tables in Open-WebUI's SQLite database. The tables are listed alphabetically and numbered for convinience.
|
||||
|
||||
| **No.** | **Table Name** | **Description** |
|
||||
| ------- | ---------------- | ------------------------------------------------------------ |
|
||||
| 01 | auth | Stores user authentication credentials and login information |
|
||||
| 02 | channel | Manages chat channels and their configurations |
|
||||
| 03 | channel_member | Tracks user membership and permissions within channels |
|
||||
| 04 | chat | Stores chat sessions and their metadata |
|
||||
| 05 | chatidtag | Maps relationships between chats and their associated tags |
|
||||
| 06 | config | Maintains system-wide configuration settings |
|
||||
| 07 | document | Stores documents and their metadata for knowledge management |
|
||||
| 08 | feedback | Captures user feedback and ratings |
|
||||
| 09 | file | Manages uploaded files and their metadata |
|
||||
| 10 | folder | Organizes files and content into hierarchical structures |
|
||||
| 11 | function | Stores custom functions and their configurations |
|
||||
| 12 | group | Manages user groups and their permissions |
|
||||
| 13 | knowledge | Stores knowledge base entries and related information |
|
||||
| 14 | memory | Maintains chat history and context memory |
|
||||
| 15 | message | Stores individual chat messages and their content |
|
||||
| 16 | message_reaction | Records user reactions (emojis/responses) to messages |
|
||||
| 17 | migrate_history | Tracks database schema version and migration records |
|
||||
| 18 | model | Manages AI model configurations and settings |
|
||||
| 19 | prompt | Stores templates and configurations for AI prompts |
|
||||
| 20 | tag | Manages tags/labels for content categorization |
|
||||
| 21 | tool | Stores configurations for system tools and integrations |
|
||||
| 22 | user | Maintains user profiles and account information |
|
||||
|
||||
Note: there are two additional tables in Open-WebUI's SQLite database that are not related to Open-WebUI's core functionality, that have been excluded:
|
||||
|
||||
- Alembic Version table
|
||||
- Migrate History table
|
||||
|
||||
Now that we have all the tables, let's understand the structure of each table.
|
||||
|
||||
## Auth Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ----------------- |
|
||||
| id | String | PRIMARY KEY | Unique identifier |
|
||||
| email | String | - | User's email |
|
||||
| password | Text | - | Hashed password |
|
||||
| active | Boolean | - | Account status |
|
||||
|
||||
Things to know about the auth table:
|
||||
|
||||
- Uses UUID for primary key
|
||||
- One-to-One relationship with `users` table (shared id)
|
||||
|
||||
## Channel Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ----------------------------------- |
|
||||
| id | Text | PRIMARY KEY | Unique identifier (UUID) |
|
||||
| user_id | Text | - | Owner/creator of channel |
|
||||
| type | Text | nullable | Channel type |
|
||||
| name | Text | - | Channel name |
|
||||
| description | Text | nullable | Channel description |
|
||||
| data | JSON | nullable | Flexible data storage |
|
||||
| meta | JSON | nullable | Channel metadata |
|
||||
| access_control | JSON | nullable | Permission settings |
|
||||
| created_at | BigInteger | - | Creation timestamp (nanoseconds) |
|
||||
| updated_at | BigInteger | - | Last update timestamp (nanoseconds) |
|
||||
|
||||
Things to know about the auth table:
|
||||
|
||||
- Uses UUID for primary key
|
||||
- Case-insensitive channel names (stored lowercase)
|
||||
|
||||
## Channel Member Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | -------------------------------------------- |
|
||||
| id | TEXT | NOT NULL | Unique identifier for the channel membership |
|
||||
| channel_id | TEXT | NOT NULL | Reference to the channel |
|
||||
| user_id | TEXT | NOT NULL | Reference to the user |
|
||||
| created_at | BIGINT | - | Timestamp when membership was created |
|
||||
|
||||
## Chat Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | ----------------------- | ------------------------ |
|
||||
| id | String | PRIMARY KEY | Unique identifier (UUID) |
|
||||
| user_id | String | - | Owner of the chat |
|
||||
| title | Text | - | Chat title |
|
||||
| chat | JSON | - | Chat content and history |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
| share_id | Text | UNIQUE, nullable | Sharing identifier |
|
||||
| archived | Boolean | default=False | Archive status |
|
||||
| pinned | Boolean | default=False, nullable | Pin status |
|
||||
| meta | JSON | server_default="{}" | Metadata including tags |
|
||||
| folder_id | Text | nullable | Parent folder ID |
|
||||
|
||||
## Chat ID Tag Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------ |
|
||||
| id | VARCHAR(255) | NOT NULL | Unique identifier |
|
||||
| tag_name | VARCHAR(255) | NOT NULL | Name of the tag |
|
||||
| chat_id | VARCHAR(255) | NOT NULL | Reference to chat |
|
||||
| user_id | VARCHAR(255) | NOT NULL | Reference to user |
|
||||
| timestamp | INTEGER | NOT NULL | Creation timestamp |
|
||||
|
||||
## Config
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Default** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ----------------- | ---------------------- |
|
||||
| id | INTEGER | NOT NULL | - | Primary key identifier |
|
||||
| data | JSON | NOT NULL | - | Configuration data |
|
||||
| version | INTEGER | NOT NULL | - | Config version number |
|
||||
| created_at | DATETIME | NOT NULL | CURRENT_TIMESTAMP | Creation timestamp |
|
||||
| updated_at | DATETIME | - | CURRENT_TIMESTAMP | Last update timestamp |
|
||||
|
||||
## Feedback Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------------------- |
|
||||
| id | Text | PRIMARY KEY | Unique identifier (UUID) |
|
||||
| user_id | Text | - | User who provided feedback |
|
||||
| version | BigInteger | default=0 | Feedback version number |
|
||||
| type | Text | - | Type of feedback |
|
||||
| data | JSON | nullable | Feedback data including ratings |
|
||||
| meta | JSON | nullable | Metadata (arena, chat_id, etc) |
|
||||
| snapshot | JSON | nullable | Associated chat snapshot |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
# File Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | --------------------- |
|
||||
| id | String | PRIMARY KEY | Unique identifier |
|
||||
| user_id | String | - | Owner of the file |
|
||||
| hash | Text | nullable | File hash/checksum |
|
||||
| filename | Text | - | Name of the file |
|
||||
| path | Text | nullable | File system path |
|
||||
| data | JSON | nullable | File-related data |
|
||||
| meta | JSON | nullable | File metadata |
|
||||
| access_control | JSON | nullable | Permission settings |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
The `meta` field's expected structure:
|
||||
|
||||
```python
|
||||
{
|
||||
"name": string, # Optional display name
|
||||
"content_type": string, # MIME type
|
||||
"size": integer, # File size in bytes
|
||||
# Additional metadata supported via ConfigDict(extra="allow")
|
||||
}
|
||||
```
|
||||
|
||||
## Folder Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------------------ |
|
||||
| id | Text | PRIMARY KEY | Unique identifier (UUID) |
|
||||
| parent_id | Text | nullable | Parent folder ID for hierarchy |
|
||||
| user_id | Text | - | Owner of the folder |
|
||||
| name | Text | - | Folder name |
|
||||
| items | JSON | nullable | Folder contents |
|
||||
| meta | JSON | nullable | Folder metadata |
|
||||
| is_expanded | Boolean | default=False | UI expansion state |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
Things to know about the folder table:
|
||||
|
||||
- Folders can be nested (parent_id reference)
|
||||
- Root folders have null parent_id
|
||||
- Folder names must be unique within same parent
|
||||
|
||||
## Function Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------------- |
|
||||
| id | String | PRIMARY KEY | Unique identifier |
|
||||
| user_id | String | - | Owner of the function |
|
||||
| name | Text | - | Function name |
|
||||
| type | Text | - | Function type |
|
||||
| content | Text | - | Function content/code |
|
||||
| meta | JSON | - | Function metadata |
|
||||
| valves | JSON | - | Function control settings |
|
||||
| is_active | Boolean | - | Function active status |
|
||||
| is_global | Boolean | - | Global availability flag |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
Things to know about the folder table:
|
||||
|
||||
- `type` can only be: ["filter", "action"]
|
||||
|
||||
## Group Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | ------------------- | ------------------------ |
|
||||
| id | Text | PRIMARY KEY, UNIQUE | Unique identifier (UUID) |
|
||||
| user_id | Text | - | Group owner/creator |
|
||||
| name | Text | - | Group name |
|
||||
| description | Text | - | Group description |
|
||||
| data | JSON | nullable | Additional group data |
|
||||
| meta | JSON | nullable | Group metadata |
|
||||
| permissions | JSON | nullable | Permission configuration |
|
||||
| user_ids | JSON | nullable | List of member user IDs |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
## Knowledge Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | ------------------- | -------------------------- |
|
||||
| id | Text | PRIMARY KEY, UNIQUE | Unique identifier (UUID) |
|
||||
| user_id | Text | - | Knowledge base owner |
|
||||
| name | Text | - | Knowledge base name |
|
||||
| description | Text | - | Knowledge base description |
|
||||
| data | JSON | nullable | Knowledge base content |
|
||||
| meta | JSON | nullable | Additional metadata |
|
||||
| access_control | JSON | nullable | Access control rules |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
The `access_control` fields expected structure:
|
||||
|
||||
```python
|
||||
{
|
||||
"read": {
|
||||
"group_ids": ["group_id1", "group_id2"],
|
||||
"user_ids": ["user_id1", "user_id2"]
|
||||
},
|
||||
"write": {
|
||||
"group_ids": ["group_id1", "group_id2"],
|
||||
"user_ids": ["user_id1", "user_id2"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Memory Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------------ |
|
||||
| id | String | PRIMARY KEY | Unique identifier (UUID) |
|
||||
| user_id | String | - | Memory owner |
|
||||
| content | Text | - | Memory content |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
## Message Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ----------------------------------- |
|
||||
| id | Text | PRIMARY KEY | Unique identifier (UUID) |
|
||||
| user_id | Text | - | Message author |
|
||||
| channel_id | Text | nullable | Associated channel |
|
||||
| parent_id | Text | nullable | Parent message for threads |
|
||||
| content | Text | - | Message content |
|
||||
| data | JSON | nullable | Additional message data |
|
||||
| meta | JSON | nullable | Message metadata |
|
||||
| created_at | BigInteger | - | Creation timestamp (nanoseconds) |
|
||||
| updated_at | BigInteger | - | Last update timestamp (nanoseconds) |
|
||||
|
||||
## Message Reaction Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------------ |
|
||||
| id | Text | PRIMARY KEY | Unique identifier (UUID) |
|
||||
| user_id | Text | - | User who reacted |
|
||||
| message_id | Text | - | Associated message |
|
||||
| name | Text | - | Reaction name/emoji |
|
||||
| created_at | BigInteger | - | Reaction timestamp |
|
||||
|
||||
## Model Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ---------------------- |
|
||||
| id | Text | PRIMARY KEY | Model identifier |
|
||||
| user_id | Text | - | Model owner |
|
||||
| base_model_id | Text | nullable | Parent model reference |
|
||||
| name | Text | - | Display name |
|
||||
| params | JSON | - | Model parameters |
|
||||
| meta | JSON | - | Model metadata |
|
||||
| access_control | JSON | nullable | Access permissions |
|
||||
| is_active | Boolean | default=True | Active status |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
## Prompt Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------------- |
|
||||
| command | String | PRIMARY KEY | Unique command identifier |
|
||||
| user_id | String | - | Prompt owner |
|
||||
| title | Text | - | Prompt title |
|
||||
| content | Text | - | Prompt content/template |
|
||||
| timestamp | BigInteger | - | Last update timestamp |
|
||||
| access_control | JSON | nullable | Access permissions |
|
||||
|
||||
## Tag Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | ------------------------- |
|
||||
| id | String | PK (composite) | Normalized tag identifier |
|
||||
| name | String | - | Display name |
|
||||
| user_id | String | PK (composite) | Tag owner |
|
||||
| meta | JSON | nullable | Tag metadata |
|
||||
|
||||
Things to know about the tag table:
|
||||
|
||||
- Primary key is composite (id, user_id)
|
||||
|
||||
## Tool Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| --------------- | ------------- | --------------- | --------------------- |
|
||||
| id | String | PRIMARY KEY | Unique identifier |
|
||||
| user_id | String | - | Tool owner |
|
||||
| name | Text | - | Tool name |
|
||||
| content | Text | - | Tool content/code |
|
||||
| specs | JSON | - | Tool specifications |
|
||||
| meta | JSON | - | Tool metadata |
|
||||
| valves | JSON | - | Tool control settings |
|
||||
| access_control | JSON | nullable | Access permissions |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
|
||||
## User Table
|
||||
|
||||
| **Column Name** | **Data Type** | **Constraints** | **Description** |
|
||||
| ----------------- | ------------- | ---------------- | ------------------------ |
|
||||
| id | String | PRIMARY KEY | Unique identifier |
|
||||
| name | String | - | User's name |
|
||||
| email | String | - | User's email |
|
||||
| role | String | - | User's role |
|
||||
| profile_image_url | Text | - | Profile image path |
|
||||
| last_active_at | BigInteger | - | Last activity timestamp |
|
||||
| updated_at | BigInteger | - | Last update timestamp |
|
||||
| created_at | BigInteger | - | Creation timestamp |
|
||||
| api_key | String | UNIQUE, nullable | API authentication key |
|
||||
| settings | JSON | nullable | User preferences |
|
||||
| info | JSON | nullable | Additional user info |
|
||||
| oauth_sub | Text | UNIQUE | OAuth subject identifier |
|
||||
|
||||
# Entity Relationship Diagram
|
||||
|
||||
To help visualize the relationship between the tables, refer to the below Entity Relationship Diagram (ERD) generated with Mermaid.
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
%% User and Authentication
|
||||
user ||--o{ auth : "has"
|
||||
user ||--o{ chat : "owns"
|
||||
user ||--o{ channel : "owns"
|
||||
user ||--o{ message : "creates"
|
||||
user ||--o{ folder : "owns"
|
||||
user ||--o{ file : "owns"
|
||||
user ||--o{ feedback : "provides"
|
||||
user ||--o{ function : "manages"
|
||||
user ||--o{ group : "manages"
|
||||
user ||--o{ knowledge : "manages"
|
||||
user ||--o{ memory : "owns"
|
||||
user ||--o{ model : "manages"
|
||||
user ||--o{ prompt : "creates"
|
||||
user ||--o{ tag : "creates"
|
||||
user ||--o{ tool : "manages"
|
||||
|
||||
%% Content Relationships
|
||||
message ||--o{ message_reaction : "has"
|
||||
chat ||--o{ tag : "tagged_with"
|
||||
chat }|--|| folder : "organized_in"
|
||||
channel ||--o{ message : "contains"
|
||||
message ||--o{ message : "replies"
|
||||
|
||||
user {
|
||||
string id PK
|
||||
string name
|
||||
string email
|
||||
string role
|
||||
text profile_image_url
|
||||
bigint last_active_at
|
||||
string api_key
|
||||
json settings
|
||||
json info
|
||||
text oauth_sub
|
||||
}
|
||||
|
||||
auth {
|
||||
string id PK
|
||||
string email
|
||||
text password
|
||||
boolean active
|
||||
}
|
||||
|
||||
chat {
|
||||
string id PK
|
||||
string user_id FK
|
||||
string title
|
||||
json chat
|
||||
text share_id
|
||||
boolean archived
|
||||
boolean pinned
|
||||
json meta
|
||||
text folder_id FK
|
||||
}
|
||||
|
||||
channel {
|
||||
text id PK
|
||||
text user_id FK
|
||||
text name
|
||||
text description
|
||||
json data
|
||||
json meta
|
||||
json access_control
|
||||
}
|
||||
|
||||
message {
|
||||
text id PK
|
||||
text user_id FK
|
||||
text channel_id FK
|
||||
text parent_id FK
|
||||
text content
|
||||
json data
|
||||
json meta
|
||||
}
|
||||
|
||||
message_reaction {
|
||||
text id PK
|
||||
text user_id FK
|
||||
text message_id FK
|
||||
text name
|
||||
}
|
||||
|
||||
feedback {
|
||||
text id PK
|
||||
text user_id FK
|
||||
bigint version
|
||||
text type
|
||||
json data
|
||||
json meta
|
||||
json snapshot
|
||||
}
|
||||
|
||||
file {
|
||||
string id PK
|
||||
string user_id FK
|
||||
text hash
|
||||
text filename
|
||||
text path
|
||||
json data
|
||||
json meta
|
||||
json access_control
|
||||
}
|
||||
|
||||
folder {
|
||||
text id PK
|
||||
text parent_id FK
|
||||
text user_id FK
|
||||
text name
|
||||
json items
|
||||
json meta
|
||||
boolean is_expanded
|
||||
}
|
||||
|
||||
function {
|
||||
string id PK
|
||||
string user_id FK
|
||||
text name
|
||||
text content
|
||||
json meta
|
||||
json valves
|
||||
boolean is_active
|
||||
boolean is_global
|
||||
}
|
||||
|
||||
group {
|
||||
text id PK
|
||||
text user_id FK
|
||||
text name
|
||||
text description
|
||||
json data
|
||||
json meta
|
||||
json permissions
|
||||
json user_ids
|
||||
}
|
||||
|
||||
knowledge {
|
||||
text id PK
|
||||
text user_id FK
|
||||
text name
|
||||
text description
|
||||
json data
|
||||
json meta
|
||||
json access_control
|
||||
}
|
||||
|
||||
memory {
|
||||
string id PK
|
||||
string user_id FK
|
||||
text content
|
||||
}
|
||||
|
||||
model {
|
||||
text id PK
|
||||
text user_id FK
|
||||
text base_model_id FK
|
||||
text name
|
||||
json params
|
||||
json meta
|
||||
json access_control
|
||||
boolean is_active
|
||||
}
|
||||
|
||||
prompt {
|
||||
string command PK
|
||||
string user_id FK
|
||||
text title
|
||||
text content
|
||||
json access_control
|
||||
}
|
||||
|
||||
tag {
|
||||
string id PK "composite"
|
||||
string user_id PK "composite"
|
||||
string name
|
||||
json meta
|
||||
}
|
||||
|
||||
tool {
|
||||
string id PK
|
||||
string user_id FK
|
||||
text name
|
||||
text content
|
||||
json specs
|
||||
json meta
|
||||
json valves
|
||||
json access_control
|
||||
}
|
||||
```
|
7
docs/tutorials/web-search/_category_.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"label": "🌐 Web Search",
|
||||
"position": 6,
|
||||
"link": {
|
||||
"type": "generated-index"
|
||||
}
|
||||
}
|
19
docs/tutorials/web-search/bing.md
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: "Bing"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## Bing API
|
||||
|
||||
### Setup
|
||||
|
||||
1. Navigate to the [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) and create a new resource. After creation, you’ll be redirected to the resource overview page. From there, select "Click here to manage keys." 
|
||||
2. On the key management page, locate Key1 or Key2 and copy your desired key.
|
||||
3. Open the Open WebUI Admin Panel, switch to the Settings tab, and then select Web Search.
|
||||
4. Enable the Web search option and set the Web Search Engine to bing.
|
||||
5. Fill `SearchApi API Key` with the `API key` that you copied in step 2 from [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) dashboard.
|
||||
6. Click `Save`.
|
25
docs/tutorials/web-search/brave.md
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
title: "Brave"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## Brave API
|
||||
|
||||
### Docker Compose Setup
|
||||
|
||||
Add the following environment variables to your Open WebUI `docker-compose.yaml` file:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
open-webui:
|
||||
environment:
|
||||
ENABLE_RAG_WEB_SEARCH: True
|
||||
RAG_WEB_SEARCH_ENGINE: "brave"
|
||||
BRAVE_SEARCH_API_KEY: "YOUR_API_KEY"
|
||||
RAG_WEB_SEARCH_RESULT_COUNT: 3
|
||||
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
|
||||
```
|
18
docs/tutorials/web-search/duckduckgo.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
title: "DuckDuckGo"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## DuckDuckGo API
|
||||
|
||||
### Setup
|
||||
|
||||
No setup is required to use DuckDuckGo API for Open WebUI's built in web search! DuckDuckGo works out of the box in Open WebUI.
|
||||
|
||||
:::note
|
||||
There is a possibility of your web searches being rate limited.
|
||||
:::
|
8
docs/tutorials/web-search/exa.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
title: "Exa"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
30
docs/tutorials/web-search/google-pse.md
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
title: "Google PSE"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## Google PSE API
|
||||
|
||||
### Setup
|
||||
|
||||
1. Go to Google Developers, use [Programmable Search Engine](https://developers.google.com/custom-search), and log on or create account.
|
||||
2. Go to [control panel](https://programmablesearchengine.google.com/controlpanel/all) and click `Add` button
|
||||
3. Enter a search engine name, set the other properties to suit your needs, verify you're not a robot and click `Create` button.
|
||||
4. Generate `API key` and get the `Search engine ID`. (Available after the engine is created)
|
||||
5. With `API key` and `Search engine ID`, open `Open WebUI Admin panel` and click `Settings` tab, and then click `Web Search`
|
||||
6. Enable `Web search` and Set `Web Search Engine` to `google_pse`
|
||||
7. Fill `Google PSE API Key` with the `API key` and `Google PSE Engine Id` (# 4)
|
||||
8. Click `Save`
|
||||
|
||||

|
||||
|
||||
#### Note
|
||||
|
||||
You have to enable `Web search` in the prompt field, using plus (`+`) button.
|
||||
Search the web ;-)
|
||||
|
||||

|
8
docs/tutorials/web-search/jina.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
title: "Jina"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
8
docs/tutorials/web-search/kagi.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
sidebar_position: 7
|
||||
title: "Kagi"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
33
docs/tutorials/web-search/mojeek.md
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
sidebar_position: 8
|
||||
title: "Mojeek"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## Mojeek Search API
|
||||
|
||||
### Setup
|
||||
|
||||
1. Please visit [Mojeek Search API page](https://www.mojeek.com/services/search/web-search-api/) to obtain an `API key`
|
||||
2. With `API key`, open `Open WebUI Admin panel` and click `Settings` tab, and then click `Web Search`
|
||||
3. Enable `Web search` and Set `Web Search Engine` to `mojeek`
|
||||
4. Fill `Mojeek Search API Key` with the `API key`
|
||||
5. Click `Save`
|
||||
|
||||
### Docker Compose Setup
|
||||
|
||||
Add the following environment variables to your Open WebUI `docker-compose.yaml` file:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
open-webui:
|
||||
environment:
|
||||
ENABLE_RAG_WEB_SEARCH: True
|
||||
RAG_WEB_SEARCH_ENGINE: "mojeek"
|
||||
BRAVE_SEARCH_API_KEY: "YOUR_MOJEEK_API_KEY"
|
||||
RAG_WEB_SEARCH_RESULT_COUNT: 3
|
||||
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
|
||||
```
|
30
docs/tutorials/web-search/searchapi.md
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
sidebar_position: 9
|
||||
title: "SearchApi"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## SearchApi API
|
||||
|
||||
[SearchApi](https://searchapi.io) is a collection of real-time SERP APIs. Any existing or upcoming SERP engine that returns `organic_results` is supported. The default web search engine is `google`, but it can be changed to `bing`, `baidu`, `google_news`, `bing_news`, `google_scholar`, `google_patents`, and others.
|
||||
|
||||
### Setup
|
||||
|
||||
1. Go to [SearchApi](https://searchapi.io), and log on or create a new account.
|
||||
2. Go to `Dashboard` and copy the API key.
|
||||
3. With `API key`, open `Open WebUI Admin panel` and click `Settings` tab, and then click `Web Search`.
|
||||
4. Enable `Web search` and set `Web Search Engine` to `searchapi`.
|
||||
5. Fill `SearchApi API Key` with the `API key` that you copied in step 2 from [SearchApi](https://www.searchapi.io/) dashboard.
|
||||
6. [Optional] Enter the `SearchApi engine` name you want to query. Example, `google`, `bing`, `baidu`, `google_news`, `bing_news`, `google_videos`, `google_scholar` and `google_patents.` By default, it is set to `google`.
|
||||
7. Click `Save`.
|
||||
|
||||

|
||||
|
||||
#### Note
|
||||
|
||||
You have to enable `Web search` in the prompt field, using plus (`+`) button to search the web using [SearchApi](https://www.searchapi.io/) engines.
|
||||
|
||||

|
@ -1,15 +1,13 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
title: "🌐 Web Search"
|
||||
sidebar_position: 10
|
||||
title: "SearXNG"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
# 🌐 Web Search
|
||||
|
||||
This guide provides instructions on how to set up web search capabilities in Open WebUI using various search engines.
|
||||
This guide provides instructions on how to set up web search capabilities in Open WebUI using SearXNG in Docker.
|
||||
|
||||
## SearXNG (Docker)
|
||||
|
||||
@ -365,147 +363,3 @@ By following these steps, you will have successfully set up SearXNG with Open We
|
||||
You will have to explicitly toggle this On/Off in a chat.
|
||||
|
||||
This is enabled on a per session basis eg. reloading the page, changing to another chat will toggle off.
|
||||
|
||||
## Google PSE API
|
||||
|
||||
### Setup
|
||||
|
||||
1. Go to Google Developers, use [Programmable Search Engine](https://developers.google.com/custom-search), and log on or create account.
|
||||
2. Go to [control panel](https://programmablesearchengine.google.com/controlpanel/all) and click `Add` button
|
||||
3. Enter a search engine name, set the other properties to suit your needs, verify you're not a robot and click `Create` button.
|
||||
4. Generate `API key` and get the `Search engine ID`. (Available after the engine is created)
|
||||
5. With `API key` and `Search engine ID`, open `Open WebUI Admin panel` and click `Settings` tab, and then click `Web Search`
|
||||
6. Enable `Web search` and Set `Web Search Engine` to `google_pse`
|
||||
7. Fill `Google PSE API Key` with the `API key` and `Google PSE Engine Id` (# 4)
|
||||
8. Click `Save`
|
||||
|
||||

|
||||
|
||||
#### Note
|
||||
|
||||
You have to enable `Web search` in the prompt field, using plus (`+`) button.
|
||||
Search the web ;-)
|
||||
|
||||

|
||||
|
||||
## Brave API
|
||||
|
||||
### Docker Compose Setup
|
||||
|
||||
Add the following environment variables to your Open WebUI `docker-compose.yaml` file:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
open-webui:
|
||||
environment:
|
||||
ENABLE_RAG_WEB_SEARCH: True
|
||||
RAG_WEB_SEARCH_ENGINE: "brave"
|
||||
BRAVE_SEARCH_API_KEY: "YOUR_API_KEY"
|
||||
RAG_WEB_SEARCH_RESULT_COUNT: 3
|
||||
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
|
||||
```
|
||||
|
||||
## Mojeek Search API
|
||||
|
||||
### Setup
|
||||
|
||||
1. Please visit [Mojeek Search API page](https://www.mojeek.com/services/search/web-search-api/) to obtain an `API key`
|
||||
2. With `API key`, open `Open WebUI Admin panel` and click `Settings` tab, and then click `Web Search`
|
||||
3. Enable `Web search` and Set `Web Search Engine` to `mojeek`
|
||||
4. Fill `Mojeek Search API Key` with the `API key`
|
||||
5. Click `Save`
|
||||
|
||||
### Docker Compose Setup
|
||||
|
||||
Add the following environment variables to your Open WebUI `docker-compose.yaml` file:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
open-webui:
|
||||
environment:
|
||||
ENABLE_RAG_WEB_SEARCH: True
|
||||
RAG_WEB_SEARCH_ENGINE: "mojeek"
|
||||
BRAVE_SEARCH_API_KEY: "YOUR_MOJEEK_API_KEY"
|
||||
RAG_WEB_SEARCH_RESULT_COUNT: 3
|
||||
RAG_WEB_SEARCH_CONCURRENT_REQUESTS: 10
|
||||
```
|
||||
|
||||
## SearchApi API
|
||||
|
||||
[SearchApi](https://searchapi.io) is a collection of real-time SERP APIs. Any existing or upcoming SERP engine that returns `organic_results` is supported. The default web search engine is `google`, but it can be changed to `bing`, `baidu`, `google_news`, `bing_news`, `google_scholar`, `google_patents`, and others.
|
||||
|
||||
### Setup
|
||||
|
||||
1. Go to [SearchApi](https://searchapi.io), and log on or create a new account.
|
||||
2. Go to `Dashboard` and copy the API key.
|
||||
3. With `API key`, open `Open WebUI Admin panel` and click `Settings` tab, and then click `Web Search`.
|
||||
4. Enable `Web search` and set `Web Search Engine` to `searchapi`.
|
||||
5. Fill `SearchApi API Key` with the `API key` that you copied in step 2 from [SearchApi](https://www.searchapi.io/) dashboard.
|
||||
6. [Optional] Enter the `SearchApi engine` name you want to query. Example, `google`, `bing`, `baidu`, `google_news`, `bing_news`, `google_videos`, `google_scholar` and `google_patents.` By default, it is set to `google`.
|
||||
7. Click `Save`.
|
||||
|
||||

|
||||
|
||||
#### Note
|
||||
|
||||
You have to enable `Web search` in the prompt field, using plus (`+`) button to search the web using [SearchApi](https://www.searchapi.io/) engines.
|
||||
|
||||

|
||||
|
||||
## Kagi API
|
||||
|
||||
Coming Soon
|
||||
|
||||
### Setup
|
||||
|
||||
## Serpstack API
|
||||
|
||||
Coming Soon
|
||||
|
||||
### Setup
|
||||
|
||||
## Serper API
|
||||
|
||||
Coming Soon
|
||||
|
||||
### Setup
|
||||
|
||||
## Serply API
|
||||
|
||||
Coming Soon
|
||||
|
||||
### Setup
|
||||
|
||||
## DuckDuckGo API
|
||||
|
||||
### Setup
|
||||
|
||||
No setup is required to use DuckDuckGo API for Open WebUI's built in web search! DuckDuckGo works out of the box in Open WebUI.
|
||||
|
||||
:::note
|
||||
There is a possibility of your web searches being rate limited.
|
||||
:::
|
||||
|
||||
## Tavily API
|
||||
|
||||
Coming Soon
|
||||
|
||||
### Setup
|
||||
|
||||
## Jina API
|
||||
|
||||
Coming Soon
|
||||
|
||||
### Setup
|
||||
|
||||
## Bing API
|
||||
|
||||
### Setup
|
||||
|
||||
1. Navigate to the [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) and create a new resource. After creation, you’ll be redirected to the resource overview page. From there, select "Click here to manage keys." 
|
||||
2. On the key management page, locate Key1 or Key2 and copy your desired key.
|
||||
3. Open the Open WebUI Admin Panel, switch to the Settings tab, and then select Web Search.
|
||||
4. Enable the Web search option and set the Web Search Engine to bing.
|
||||
5. Fill `SearchApi API Key` with the `API key` that you copied in step 2 from [AzurePortal](https://portal.azure.com/#create/Microsoft.BingSearch) dashboard.
|
||||
6. Click `Save`.
|
||||
|
30
docs/tutorials/web-search/serpapi.md
Normal file
@ -0,0 +1,30 @@
|
||||
---
|
||||
sidebar_position: 15
|
||||
title: "SerpApi"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
||||
|
||||
## SerpApi API
|
||||
|
||||
[SerpApi](https://serpapi.com/) Scrape Google and other search engines from our fast, easy, and complete API. Any existing or upcoming SERP engine that returns `organic_results` is supported. The default web search engine is `google`, but it can be changed to `bing`, `baidu`, `google_news`, `google_scholar`, `google_patents`, and others.
|
||||
|
||||
### Setup
|
||||
|
||||
1. Go to [SerpApi](https://serpapi.com/), and log on or create a new account.
|
||||
2. Go to `Dashboard` and copy the API key.
|
||||
3. With `API key`, open `Open WebUI Admin panel` and click `Settings` tab, and then click `Web Search`.
|
||||
4. Enable `Web search` and set `Web Search Engine` to `serpapi`.
|
||||
5. Fill `SerpApi API Key` with the `API key` that you copied in step 2 from [SerpApi](https://serpapi.com/) dashboard.
|
||||
6. [Optional] Enter the `SerpApi engine` name you want to query. Example, `google`, `bing`, `baidu`, `google_news`, `google_videos`, `google_scholar` and `google_patents.` By default, it is set to `google`. Find more options at [SerpApi documentation](https://serpapi.com/dashboard).
|
||||
7. Click `Save`.
|
||||
|
||||

|
||||
|
||||
#### Note
|
||||
|
||||
You have to enable `Web search` in the prompt field to search the web using [SerpApi](https://serpapi.com/) engines.
|
||||
|
||||

|
8
docs/tutorials/web-search/serper.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
sidebar_position: 11
|
||||
title: "Serper"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
8
docs/tutorials/web-search/serply.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
sidebar_position: 12
|
||||
title: "Serply"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
8
docs/tutorials/web-search/serpstack.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
sidebar_position: 13
|
||||
title: "Serpstack"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
8
docs/tutorials/web-search/tavily.md
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
sidebar_position: 14
|
||||
title: "Tavily"
|
||||
---
|
||||
|
||||
:::warning
|
||||
This tutorial is a community contribution and is not supported by the Open WebUI team. It serves only as a demonstration on how to customize Open WebUI for your specific use case. Want to contribute? Check out the contributing tutorial.
|
||||
:::
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 34 KiB |
BIN
static/images/enterprise/users.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
static/images/tutorial_serpapi_search.png
Normal file
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 505 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 130 KiB |
BIN
static/images/tutorials/amazon-s3/amazon-s3-get-file-by-id.png
Normal file
After Width: | Height: | Size: 304 KiB |
BIN
static/images/tutorials/amazon-s3/amazon-s3-object-in-bucket.png
Normal file
After Width: | Height: | Size: 171 KiB |
BIN
static/images/tutorials/amazon-s3/amazon-s3-oui-response.png
Normal file
After Width: | Height: | Size: 137 KiB |
BIN
static/images/tutorials/amazon-s3/amazon-s3-upload-file.png
Normal file
After Width: | Height: | Size: 148 KiB |