[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10753":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":46,"readmeContent":47,"aiSummary":48,"trendingCount":16,"starSnapshotCount":16,"syncStatus":49,"lastSyncTime":50,"discoverSource":51},10753,"py-gpt","szczyglis-dev\u002Fpy-gpt","szczyglis-dev","Desktop AI Assistant powered by GPT-5, GPT-4, o1, o3, Gemini, Claude, Ollama, DeepSeek, Perplexity, Grok, Bielik, chat, vision, voice, RAG, image and video generation, agents, tools, MCP, plugins, speech synthesis and recognition, web search, memory, presets, assistants,and more. Linux, Windows, Mac","https:\u002F\u002Fpygpt.net",null,"Python",1823,330,42,43,0,1,11,51,6,68.16,"Other",false,"master",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"ai","ai-assistant","artificial-intelligence","autonomous-agent","chatbot","claude","deepseek","desktop-app","gemini","gpt-4","gpt-5","grok","llama-index","llm","mcp","o1","ollama","openai","perplexity","sora2","2026-06-12 04:00:52","# PyGPT - Desktop AI Assistant\n\n[![pygpt](https:\u002F\u002Fsnapcraft.io\u002Fpygpt\u002Fbadge.svg)](https:\u002F\u002Fsnapcraft.io\u002Fpygpt)\n\nRelease: **2.7.12** | build: **2026-02-06** | Python: **>=3.10, \u003C3.14**\n\n> Official website: https:\u002F\u002Fpygpt.net | Documentation: https:\u002F\u002Fpygpt.readthedocs.io\n> \n> Discord: https:\u002F\u002Fpygpt.net\u002Fdiscord | Snap: https:\u002F\u002Fsnapcraft.io\u002Fpygpt | PyPi: https:\u002F\u002Fpypi.org\u002Fproject\u002Fpygpt-net\n> \n> Compiled version for Linux (`zip`) and Windows 10\u002F11 (`msi`) 64-bit: https:\u002F\u002Fpygpt.net\u002F#download\n> \n> ❤️ Donate: https:\u002F\u002Fwww.buymeacoffee.com\u002Fszczyglis | https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fszczyglis-dev\n\n## Overview\n\n**PyGPT** is **all-in-one** Desktop AI Assistant that provides direct interaction with OpenAI language models, including `GPT-5`, `GPT-4`, `o1`, `o3` and more, through the `OpenAI API`. By utilizing other SDKs and `LlamaIndex`, the application also supports alternative LLMs, like those available on `HuggingFace`, locally available models via `Ollama` (like `gpt-oss`, `Llama 3`,`Mistral`, `DeepSeek V3\u002FR1` or `Bielik`), and other models like `Google Gemini`, `Anthropic Claude`, `Perplexity \u002F Sonar`, and `xAI Grok`.\n\nThis assistant offers multiple modes of operation such as chat, assistants, agents, completions, and image-related tasks like image generation and image analysis. **PyGPT** has filesystem capabilities for file I\u002FO, can generate and run Python code, execute system commands, execute custom commands and manage file transfers. It also allows models to perform web searches with the `DuckDuckGo`, `Google` and `Microsoft Bing`.\n\nFor audio interactions, **PyGPT** includes speech synthesis using the `Microsoft Azure`, `Google`, `Eleven Labs` and `OpenAI` Text-To-Speech services. Additionally, it features speech recognition capabilities provided by `OpenAI Whisper`, `Google` and `Bing` enabling the application to understand spoken commands and transcribe audio inputs into text. It features context memory with save and load functionality, enabling users to resume interactions from predefined points in the conversation. Prompt creation and management are streamlined through an intuitive preset system.\n\n**PyGPT**'s functionality extends through plugin support, allowing for custom enhancements (with multiple plugins included). Its multi-modal capabilities make it an adaptable tool for a range of AI-assisted operations, such as text-based interactions, system automation, daily assisting, vision applications, natural language processing, code generation and image creation.\n\nMultiple operation modes are included, such as chat, text completion, assistant, agents, vision, Chat with Files (via `LlamaIndex`), commands execution, external API calls and image generation, making **PyGPT** a multi-tool for many AI-driven tasks.\n\n**Showcase** (mp4, version `2.5.65`, build `2025-07-24`):\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fd8305109-8b1b-41cb-b3ba-8c654271a95c\n\n**Screenshots** (version `2.5.64`, build `2025-07-23`):\n\nDark theme:\n![v2_main](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_main.png)\n\nLight theme:\n![v2_light](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_light.png)\n\nYou can download compiled 64-bit versions for Windows and Linux here: https:\u002F\u002Fpygpt.net\u002F#download\n\n## Features\n\n- Desktop AI Assistant for `Linux`, `Windows` and `Mac`, written in Python.\n- Works similarly to `ChatGPT`, but locally (on a desktop computer).\n- 11 modes of operation: Chat, Chat with Files, Realtime + audio, Research (Perplexity), Completion, Image and Video generation, Assistants, Experts, Computer use, Agents and Autonomous Mode.\n- Supports multiple models like `OpenAI GPT-5`, `GPT-4`, `o1`, `o3`, `o4`, `Google Gemini`, `Anthropic Claude`, `xAI Grok`, `DeepSeek V3\u002FR1`, `Perplexity \u002F Sonar`, and any model accessible through `LlamaIndex` and `Ollama` such as `DeepSeek`, `gpt-oss`, `Llama 3`, `Mistral`, `Bielik`, etc.\n- Chat with your own Files: integrated `LlamaIndex` support: chat with data such as: `txt`, `pdf`, `csv`, `html`, `md`, `docx`, `json`, `epub`, `xlsx`, `xml`, webpages, `Google`, `GitHub`, video\u002Faudio, images and other data types, or use conversation history as additional context provided to the model.\n- Built-in vector databases support and automated files and data embedding.\n- Image generation via models like `DALL-E`, `gpt-image`, `Imagen`, `Gemini`, and `Nano Banana`.\n- Video generation via models like `Veo3` and `Sora2`.\n- Internet access via `DuckDuckGo`, `Google` and `Microsoft Bing`.\n- Speech synthesis via `Microsoft Azure`, `Google`, `Eleven Labs` and `OpenAI` Text-To-Speech services.\n- Speech recognition via `OpenAI Whisper`, `Google` and `Microsoft Speech Recognition`.\n- Plugins support with built-in plugins like `Files I\u002FO`, `Code Interpreter`, `Web Search`, `Google`, `Facebook`, `X\u002FTwitter`, `Slack`, `Telegram`, `GitHub`, `MCP`, and many more.\n- MCP support.\n- Real-time video camera capture in Vision mode.\n- Image analysis via vision models.\n- Included support features for individuals with disabilities: customizable keyboard shortcuts, voice control, and translation of on-screen actions into audio via speech synthesis.\n- Handles and stores the full context of conversations (short and long-term memory).\n- Integrated calendar, day notes and search in contexts by selected date.\n- Tools and commands execution (via plugins: access to the local filesystem, Python Code Interpreter, system commands execution, and more).\n- Custom commands creation and execution.\n- Crontab \u002F Task scheduler included.\n- Built-in real-time Python Code Interepreter.\n- Manages files and attachments with options to upload, download, and organize.\n- Context history with the capability to revert to previous contexts (long-term memory).\n- Allows you to easily manage prompts with handy editable presets.\n- Provides an intuitive operation and interface.\n- Includes a notepad.\n- Includes simple painter \u002F drawing tool.\n- Includes an node-based Agents Builder.\n- Supports multiple languages.\n- Requires no previous knowledge of using AI models.\n- Fully configurable.\n- Themes support.\n- Real-time code syntax highlighting.\n- Built-in token usage calculation.\n- Possesses the potential to support future OpenAI models.\n- **Open source**; source code is available on `GitHub`.\n- Utilizes the user's own API key.\n- and many more.\n\nThe application is free, open-source, and runs on PCs with `Linux`, `Windows 10`, `Windows 11` and `Mac`. \nFull Python source code is available on `GitHub`.\n\n**PyGPT uses the user's API key  -  to use the GPT models, \nyou must have a registered OpenAI account and your own API key. Local models do not require any API keys.**\n\nYou can also use built-it LlamaIndex support to connect to other Large Language Models (LLMs), \nsuch as those on HuggingFace. Additional API keys may be required.\n\n# Installation\n\n## Binaries (Linux, Windows 10 and 11)\n\nYou can download compiled binary versions for `Linux` and `Windows` (10\u002F11). \n\n**PyGPT** binaries require a PC with Windows 10, 11, or Linux. Simply download the installer or the archive with the appropriate version from the download page at https:\u002F\u002Fpygpt.net, extract it, or install it, and then run the application. A binary version for Mac is not available, so you must run PyGPT from PyPi or from the source code on Mac. Currently, only 64-bit binaries are available.\n\nLinux version requires `GLIBC` >= `2.35`.\n\n## Microsoft Store (Windows)\n\nFor Windows 10\u002F11, you can install **PyGPT** directly from Microsoft Store:\n\n[![Get it from Microsoft Store](https:\u002F\u002Fget.microsoft.com\u002Fimages\u002Fen-us%20dark.svg)](https:\u002F\u002Fapps.microsoft.com\u002Fdetail\u002FXP99R4MX3X65VQ)\n\nLink to MS Store: https:\u002F\u002Fapps.microsoft.com\u002Fdetail\u002FXP99R4MX3X65VQ\n\n## AppImage (Linux)\n\nYou can download the latest **PyGPT** `AppImage` for Linux from the release page:\n\n**Releases:** https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Freleases\n\n**Tip:** Remember to give execution permissions to the downloaded file:\n\n```chmod +x .\u002FPyGPT-X.X.X-x86_64.AppImage```\n\nTo manage future updates you can use `AppImageUpdate` tool:\n\nYou can download it from: https:\u002F\u002Fgithub.com\u002FAppImage\u002FAppImageUpdate\u002Freleases\n\nAfter downloading, run the following command in terminal:\n\n```appimageupdatetool .\u002FPyGPT-X.X.X-x86_64.AppImage```\n\n## Snap Store (Linux)\n\nYou can install **PyGPT** directly from Snap Store:\n\n```commandline\nsudo snap install pygpt\n```\n\nTo manage future updates use:\n\n```commandline\nsudo snap refresh pygpt\n```\n\n[![Get it from the Snap Store](https:\u002F\u002Fsnapcraft.io\u002Fstatic\u002Fimages\u002Fbadges\u002Fen\u002Fsnap-store-black.svg)](https:\u002F\u002Fsnapcraft.io\u002Fpygpt)\n\n**Using camera:** to use camera in Snap version you must connect the camera with:\n\n```commandline\nsudo snap connect pygpt:camera\n```\n\n**Using microphone:** to use microphone in Snap version you must connect the microphone with:\n\n```commandline\nsudo snap connect pygpt:audio-record :audio-record\nsudo snap connect pygpt:alsa\n```\n\n**Using audio output:** to use audio output in Snap version you must connect the audio with:\n\n```commandline\nsudo snap connect pygpt:audio-playback\nsudo snap connect pygpt:alsa\n```\n\n**Connecting IPython in Docker in Snap version**:\n\nTo use IPython in the Snap version, you must connect PyGPT to the Docker daemon:\n\n```commandline\nsudo snap connect pygpt:docker-executables docker:docker-executables\n```\n\n````commandline\nsudo snap connect pygpt:docker docker:docker-daemon\n````\n\n## PyPi (pip)\n\nThe application can also be installed from `PyPi` using `pip install`:\n\n1. Create virtual environment:\n\n```commandline\npython3 -m venv venv\nsource venv\u002Fbin\u002Factivate\n```\n\n2. Install from PyPi:\n\n``` commandline\npip install pygpt-net\n```\n\n3. Once installed run the command to start the application:\n\n``` commandline\npygpt\n```\n\n## Running from GitHub source code\n\nAn alternative method is to download the source code from `GitHub` and execute the application using the Python interpreter (`>=3.10`, `\u003C3.14`). \n\n### Install with pip\n\n1. Clone git repository or download .zip file:\n\n```commandline\ngit clone https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt.git\ncd py-gpt\n```\n\n2. Create a new virtual environment:\n\n```commandline\npython3 -m venv venv\nsource venv\u002Fbin\u002Factivate\n```\n\n3. Install requirements:\n\n```commandline\npip install -r requirements.txt\n```\n\n4. Run the application:\n\n```commandline\npython3 run.py\n```\n\n### Install with Poetry\n\n1. Clone git repository or download .zip file:\n\n```commandline\ngit clone https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt.git\ncd py-gpt\n```\n\n2. Install Poetry (if not installed):\n\n```commandline\npip install poetry\n```\n\n3. Create a new virtual environment that uses Python 3.10:\n\n```commandline\npoetry env use python3.10\npoetry shell\n```\n\nor (Poetry >= 2.0):\n\n```commandline\npoetry env use python3.10\npoetry env activate\n```\n\n4. Install requirements:\n\n```commandline\npoetry install\n```\n\n5. Run the application:\n\n```commandline\npoetry run python3 run.py\n```\n\n**Tip**: you can use `PyInstaller` to create a compiled version of\nthe application for your system (required version >= `6.0.0`).\n\n### Troubleshooting\n\nIf you have a problems with `xcb` plugin with newer versions of PySide on Linux, e.g. like this:\n\n```commandline\nqt.qpa.plugin: Could not load the Qt platform plugin \"xcb\" in \"\" even though it was found.\nThis application failed to start because no Qt platform plugin could be initialized. \nReinstalling the application may fix this problem.\n```\n\n...then install `libxcb`:\n\n```commandline\nsudo apt install libxcb-cursor0\n```\n\nIf you have a problems with audio on Linux, then try to install `portaudio19-dev` and\u002For `libasound2`:\n\n```commandline\nsudo apt install portaudio19-dev\n```\n\n```commandline\nsudo apt install libasound2\nsudo apt install libasound2-data \nsudo apt install libasound2-plugins\n```\n\n**Problems with GLIBC on Linux**\n\nIf you encounter error: \n\n```commandline\nError loading Python lib libpython3.10.so.1.0: dlopen: \u002Flib\u002Fx86_64-linux-gnu\u002Flibm.so.6: version GLIBC_2.35 not found (required by libpython3.10.so.1.0)\n```\nwhen trying to run the compiled version for Linux, try updating GLIBC to version `2.35`, or use a newer operating system that has at least version `2.35` of GLIBC.\n\n**Access to camera in Snap version:**\n\n\n```commandline\nsudo snap connect pygpt:camera\n```\n\n**Access to microphone in Snap version:**\n\nTo use microphone in Snap version you must connect the microphone with:\n\n```commandline\nsudo snap connect pygpt:audio-record :audio-record\n```\n\n**Snap and AppArmor permission denied**\n\nSnap installs AppArmor profiles for each application by default. The profile for PyGPT is created at:\n\n`\u002Fvar\u002Flib\u002Fsnapd\u002Fapparmor\u002Fprofiles\u002Fsnap.pygpt.pygpt`\n\nThe application should work with the default profile; however, if you encounter errors like:\n\n`PermissionError: [Errno 13] Permission denied: '\u002Fetc\u002Fhttpd\u002Fconf\u002Fmime.types'`\n\nadd the appropriate access rules to the profile file, for example:\n\n```\n# \u002Fvar\u002Flib\u002Fsnapd\u002Fapparmor\u002Fprofiles\u002Fsnap.pygpt.pygpt\n\n...\n\n\u002Fetc\u002Fhttpd\u002Fconf\u002Fmime.types r\n```\n\nand reload the profiles.\n\nAlternatively, you can try removing snap and reinstalling it:\n\n`sudo snap remove --purge pygpt`\n\n`sudo snap install pygpt`\n\n\n**Access to a microphone and audio in Windows version:**\n\nIf you have a problems with audio or a microphone in the non-binary PIP\u002FPython version on Windows, check to see if FFmpeg is installed. If it's not, install it and add it to the PATH. You can find a tutorial on how to do this here: https:\u002F\u002Fphoenixnap.com\u002Fkb\u002Fffmpeg-windows. The binary version already includes FFmpeg.\n\n**Windows and VC++ Redistributable**\n\nOn Windows, the proper functioning requires the installation of the `VC++ Redistributable`, which can be found on the Microsoft website:\n\nhttps:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fcpp\u002Fwindows\u002Flatest-supported-vc-redist\n\nThe libraries from this environment are used by `PySide6` - one of the base packages used by PyGPT. \nThe absence of the installed libraries may cause display errors or completely prevent the application from running.\n\nIt may also be necessary to add the path `C:\\path\\to\\venv\\Lib\\python3.x\\site-packages\\PySide6` to the `PATH` variable.\n\n**WebEngine\u002FChromium renderer and OpenGL problems**\n\nIf you have a problems with `WebEngine \u002F Chromium` renderer you can force the legacy mode by launching the app with command line arguments:\n\n``` ini\npython3 run.py --legacy=1\n```\n\nand to force disable OpenGL hardware acceleration:\n\n``` ini\npython3 run.py --disable-gpu=1\n```\n\nYou can also manualy enable legacy mode by editing config file - open the `%WORKDIR%\u002Fconfig.json` config file in editor and set the following options:\n\n``` json\n\"render.engine\": \"legacy\",\n\"render.open_gl\": false,\n```\n\n## Other requirements\n\nFor operation, an internet connection is needed (for API connectivity), a registered OpenAI account, \nand an active API key that must be input into the program. Local models, such as `Llama3` do not require OpenAI account and any API keys.\n\n## Debugging and logging\n\nPlease go to `Debugging and Logging` section for instructions on how to log and diagnose issues in a more detailed manner.\n\n\n# Quick Start\n\n## Setting-up API Key(s)\n\nYou can configure API keys for various providers, such as OpenAI, Anthropic, Google, xAI, Perplexity, OpenRouter, and more. This flexibility allows you to use different providers based on your needs.\n\nDuring the initial setup, configure your API keys within the application.\n\nTo do so, navigate to the menu:\n\n`Config -> Settings -> API Keys`\n\nHere, you can add or manage API keys for any supported provider.\n\n![v2_api_keys](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_api_keys.png)\n\n**Configuring Provider**\n\n1. **Select the Provider:** Choose a tab with provider.\n2. **Enter the API Key:** Paste the corresponding API key for the selected provider.\n\n**Example**\n\n- **OpenAI:** Obtain your API key by registering on the OpenAI website: https:\u002F\u002Fplatform.openai.com and navigating to https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys.\n- **Anthropic, Google, etc.:** Follow similar steps on their respective platforms.\n\n**Note:** The ability to use models or services depends on your access level with the respective provider. If you wish to use custom API endpoints or local APIs that do not require API keys, simply enter any value into the API key field to bypass prompts about an empty key.\n\n# Work modes\n\n## Chat\n\n**+ Inline Vision and Image generation**\n\nIn **PyGPT**, this mode mirrors `ChatGPT`, allowing you to chat with models like `GPT-5`, `GPT-4`, `o1`, `o3`, `Claude`, `Gemini`, `Grok`, `Perplexity (Sonar)`, `Deepseek`, and more. It works with the OpenAI SDK using the `Responses API` and `ChatCompletions API. You can also use SDKs from Google GenAI, Anthropic, or xAI if the native SDK is enabled. You can set the endpoint for `ChatCompletions in Config -> Settings -> API Keys`.\n\n**Tip:** This mode uses the provider SDK directly. If there's no native client built into the app, models like Sonar, or Llama3 are supported in Chat mode via LlamaIndex or OpenAI-compatible API endpoints. The app automatically switches to these endpoints when using non-OpenAI models. You can enable or disable the use of the native API SDK (per provider) in `Settings -> API Keys`. If the native SDK is disabled, the OpenAI SDK will be used via the compatible ChatCompletions API endpoint.\n\nCurrently built-in native clients:\n\n- Anthropic SDK\n- OpenAI SDK\n- Google GenAI SDK\n- xAI SDK\n\nThe main part of the interface is a chat window where you see your conversations. Below it is a message box for typing. On the right side, you can set up or change the model and system prompt. You can also save these settings as presets to easily switch between models or tasks.\n\nAbove where you type your messages, the interface shows you the number of tokens your message will use up as you type it – this helps to keep track of usage. There is also a feature to attach and upload files in this area. Go to the `Files and Attachments` section for more information on how to use attachments.\n\n![v2_mode_chat](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_mode_chat.png)\n\n**Vision:** If you want to send photos from your disk or images from your camera for analysis, and the selected model does not support Vision, you must enable the `Vision (inline)` plugin in the Plugins menu. This plugin allows you to send photos or images from your camera for analysis in any Chat mode.\n\n![v3_vision_plugins](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv3_vision_plugins.png)\n\nWith this plugin, you can capture an image with your camera or attach an image and send it for analysis to discuss the photograph:\n\n![v3_vision_chat](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv3_vision_chat.png)\n\n**Image generation:** If you want to generate images directly in chat you must enable plugin `Image generation (inline)` in the Plugins menu.\nPlugin allows you to generate images in Chat mode:\n\n![v3_img_chat](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv3_img_chat.png)\n\n##  Chat with Files (LlamaIndex)\n\nThis mode enables chat interaction with your documents and entire context history through conversation. \nIt seamlessly incorporates `LlamaIndex` into the chat interface, allowing for immediate querying of your indexed documents.\n\n**Tip:** If you do not want to call tools\u002Fcommands, disable the checkbox `+Tools`. It will speed up the response time when using local models. You can also enable the ReAct agent for tool calls in: `Settings -> Indexes \u002F LlamaIndex -> Chat -> Use ReAct agent for Tool calls in Chat with Files mode`. Stream mode is disabled if the ReAct agent and `+Tools` checkbox are active.\n\n**Querying single files**\n\nYou can also query individual files \"on the fly\" using the `query_file` command from the `Files I\u002FO` plugin. This allows you to query any file by simply asking a question about that file. A temporary index will be created in memory for the file being queried, and an answer will be returned from it. From version `2.1.9` similar command is available for querying web and external content: `Directly query web content with LlamaIndex`.\n\n**For example:**\n\nIf you have a file: `data\u002Fmy_cars.txt` with content `My car is red.`\n\nYou can ask for: `Query the file my_cars.txt about what color my car is.`\n\nAnd you will receive the response: `Red`.\n\nNote: this command indexes the file only for the current query and does not persist it in the database. To store queried files also in the standard index you must enable the option `Auto-index readed files` in plugin settings. Remember to enable `+ Tools` checkbox to allow usage of tools and commands from plugins. \n\n**Using Chat with Files mode**\n\nIn this mode, you are querying the whole index, stored in a vector store database.\nTo start, you need to index (embed) the files you want to use as additional context.\nEmbedding transforms your text data into vectors. If you're unfamiliar with embeddings and how they work, check out this article:\n\nhttps:\u002F\u002Fstackoverflow.blog\u002F2023\u002F11\u002F09\u002Fan-intuitive-introduction-to-text-embeddings\u002F\n\nFor a visualization from OpenAI's page, see this picture:\n\n![vectors](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fassets\u002F61396542\u002F4bbb3860-58a0-410d-b5cb-3fbfadf1a367)\n\nSource: https:\u002F\u002Fcdn.openai.com\u002Fnew-and-improved-embedding-model\u002Fdraft-20221214a\u002Fvectors-3.svg\n\nTo index your files, simply copy or upload them  into the `data` directory and initiate indexing (embedding) by clicking the `Index all` button, or right-click on a file and select `Index...`. Additionally, you have the option to utilize data from indexed files in any Chat mode by activating the `Chat with Files (LlamaIndex, inline)` plugin.\n\n![v2_idx1](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_idx1.png)\n\nAfter the file(s) are indexed (embedded in vector store), you can use context from them in chat mode:\n\n![v2_idx2](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_idx2.png)\n\nBuilt-in file loaders: \n\n**Files:**\n\n- CSV files (csv)\n- Epub files (epub)\n- Excel .xlsx spreadsheets (xlsx)\n- HTML files (html, htm)\n- IPYNB Notebook files (ipynb)\n- Image (vision) (jpg, jpeg, png, gif, bmp, tiff, webp)\n- JSON files (json)\n- Markdown files (md)\n- PDF documents (pdf)\n- Plain-text files (txt)\n- Video\u002Faudio (mp4, avi, mov, mkv, webm, mp3, mpeg, mpga, m4a, wav)\n- Word .docx documents (docx)\n- XML files (xml)\n\n**Web\u002Fexternal content:**\n\n- Bitbucket\n- ChatGPT Retrieval Plugin\n- GitHub Issues\n- GitHub Repository\n- Google Calendar\n- Google Docs\n- Google Drive \n- Google Gmail\n- Google Keep\n- Google Sheets\n- Microsoft OneDrive\n- RSS\n- SQL Database\n- Sitemap (XML)\n- Twitter\u002FX posts\n- Webpages (crawling any webpage content)\n- YouTube (transcriptions)\n\nYou can configure data loaders in `Settings \u002F Indexes \u002F LlamaIndex \u002F Data Loaders` by providing list of keyword arguments for specified loaders.\nYou can also develop and provide your own custom loader and register it within the application.\n\nLlamaIndex is also integrated with context database - you can use data from database (your context history) as additional context in discussion. \nOptions for indexing existing context history or enabling real-time indexing new ones (from database) are available in `Settings \u002F Indexes \u002F LlamaIndex` section.\n\n**WARNING:** remember that when indexing content, API calls to the embedding model are used. Each indexing consumes additional tokens. Always control the number of tokens used on the provider's page.\n\n**Tip:** Using the Chat with Files mode, you have default access to files manually indexed from the \u002Fdata directory. However, you can use additional context by attaching a file - such additional context from the attachment does not land in the main index, but only in a temporary one, available only for the given conversation.\n\n**Token limit:** When you use `Chat with Files` in non-query mode, LlamaIndex adds extra context to the system prompt. If you use a plugins (which also adds more instructions to system prompt), you might go over the maximum number of tokens allowed. If you get a warning that says you've used too many tokens, turn off plugins you're not using or turn off the \"+ Tools\" option to reduce the number of tokens used by the system prompt.\n\n**Available vector stores** (provided by `LlamaIndex`):\n\n```\n- ChromaVectorStore\n- ElasticsearchStore\n- PinecodeVectorStore\n- QdrantVectorStore\n- RedisVectorStore\n- SimpleVectorStore\n```\n\nYou can configure selected vector store by providing config options like `api_key`, etc. in `Settings -> LlamaIndex` window. See the section: `Configuration \u002F Vector stores` for configuration reference.\n\n\n**Configuring data loaders**\n\nIn the `Settings -> LlamaIndex -> Data loaders` section you can define the additional keyword arguments to pass into data loader instance. See the section: `Configuration \u002F Data Loaders` for configuration reference.\n\n\n## Chat with Audio\n\nThis mode works like the Chat mode but with native support for audio input and output using a Realtime and Live APIs. In this mode, audio input and output are directed to and from the model directly, without the use of external plugins. This enables faster and better audio communication.\n\nCurrently, in beta. \n\nAt this moment, only OpenAI real-time models (via the Realtime API) and Google Gemini real-time models (via the Live API) are supported.\n\n## Research\n\nThis mode (when using Sonar and R1 models) operates using the Perplexity API: https:\u002F\u002Fperplexity.ai.\n\nIt allows for deep web searching and utilizes Sonar models, available in `Perplexity AI`.\n\nIt requires a Perplexity API key, which can be generated at: https:\u002F\u002Fperplexity.ai.\n\nFrom version `2.5.27` also OpenAI deep-research models are available in this mode.\n\n## Completion\n\nAn older mode of operation that allows working in the standard text completion mode. However, it allows for a bit more flexibility with the text by enabling you to initiate the entire discussion in any way you like.\n\nSimilar to chat mode, on the right-hand side of the interface, there are convenient presets. These allow you to fine-tune instructions and swiftly transition between varied configurations and pre-made prompt templates.\n\nAdditionally, this mode offers options for labeling the AI and the user, making it possible to simulate dialogues between specific characters - for example, you could create a conversation between Batman and the Joker, as predefined in the prompt. This feature presents a range of creative possibilities for setting up different conversational scenarios in an engaging and exploratory manner.\n\nFrom version `2.0.107` the `davinci` models are deprecated and has been replaced with `gpt-3.5-turbo-instruct` model in Completion mode.\n\n## Image and video generation\n\n**PyGPT** enables quick and easy image creation with models like `DALL-E 3`, `gpt-image-1`, `Imagen 3\u002F4`, and `Nano Banana`, as well as video generation using `Veo3` and `Sora2`.\nGenerating images and videos is akin to a chat conversation  -  a user's prompt triggers the generation, followed by downloading, saving to the computer, and displaying the image onscreen. You can send raw prompt to the model in `Image generation` mode or ask the model for the best prompt.\n\n![v3_img](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv3_img.png)\n\nImage generation using image models is also available in every mode via plugin `Image Generation (inline)`. Just ask any model, in any mode, like e.g. GPT or Gemini to generate an image and it will do it inline, without need to mode change.\n\nIf you want to generate images directly in chat you must enable plugin **Image generation (inline)** in the Plugins menu.\nPlugin allows you to generate images in Chat mode:\n\n![v3_img_chat](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv3_img_chat.png)\n\nFor OpenAI models, you can also enable remote image generation in `Config -> Settings -> Remote Tools`. If enabled, image generation will be available natively within the conversation, without plugins, in Chat mode.\n\nTo use `Imagen` models you must enable `VertexAI` in `Config -> Settings -> API Keys -> Google -> Advanced options`.\n\n### Remix, Edit, or Extend\n\nTo remix or extend from a previous image or video instead of creating a new one from scratch, enable the `Remix\u002FExtend` option checkbox in the toolbox. The last generated image or video in the current context will be used as a reference for your prompt, allowing you to request changes to the generated content. If the `Remix\u002FExtend` option is enabled, uploading an image attachment as a reference will not take effect.\n\n### Raw mode\n\nThere is an option for switching prompt generation mode.\n\nIf **Raw Mode** is enabled, a model will receive the prompt exactly as you have provided it.\nIf **Raw Mode** is disabled, a model will generate the best prompt for you based on your instructions.\n\n### Image storage\n\nOnce you've generated an image, you can easily save it anywhere on your disk by right-clicking on it. \nYou also have the options to delete it or view it in full size in your web browser.\n\n**Tip:** Use presets to save your prepared prompts. \nThis lets you quickly use them again for generating new images later on.\n\nThe app keeps a history of all your prompts, allowing you to revisit any session and reuse previous \nprompts for creating new images.\n\nImages are stored in ``img`` directory in **PyGPT** user data folder.\n\n## Assistants\n\nThis mode uses the OpenAI's **Assistants API**.\n\nThis mode expands on the basic chat functionality by including additional external tools like a `Code Interpreter` for executing code, `Retrieval Files` for accessing files, and custom `Functions` for enhanced interaction and integration with other APIs or services. In this mode, you can easily upload and download files. **PyGPT** streamlines file management, enabling you to quickly upload documents and manage files created by the model.\n\nSetting up new assistants is simple - a single click is all it takes, and they instantly sync with the `OpenAI API`. Importing assistants you've previously created with OpenAI into **PyGPT** is also a seamless process.\n\n![v2_mode_assistant](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_mode_assistant.png)\n\nIn Assistant mode you are allowed to storage your files in remote vector store (per Assistant) and manage them easily from app:\n\n![v2_mode_assistant_upload](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_mode_assistant_upload.png)\n\nPlease note that token usage calculation is unavailable in this mode. Nonetheless, file (attachment) \nuploads are supported. Simply navigate to the `Files` tab to effortlessly manage files and attachments which \ncan be sent to the OpenAI API.\n\n### Vector stores (via Assistants API)\n\nAssistant mode supports the use of external vector databases offered by the OpenAI API. This feature allows you to store your files in a database and then search them using the Assistant's API. Each assistant can be linked to one vector database—if a database is linked, all files uploaded in this mode will be stored in the linked vector database. If an assistant does not have a linked vector database, a temporary database is automatically created during the file upload, which is accessible only in the current thread. Files from temporary databases are automatically deleted after 7 days.\n\nTo enable the use of vector stores, enable the `Chat with Files` checkbox in the Assistant settings. This enables the `File search` tool in Assistants API.\n\nTo manage external vector databases, click the DB icon next to the vector database selection list in the Assistant creation and editing window (screen below). In this management window, you can create a new vector database, edit an existing one, or import a list of all existing databases from the OpenAI server:\n\n![v2_assistant_stores](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_assistant_stores.png)\n\nYou can define, using `Expire days`, how long files should be automatically kept in the database before deletion (as storing files on OpenAI incurs costs). If the value is set to 0, files will not be automatically deleted.\n\nThe vector database in use will be displayed in the list of uploaded files, on the field to the right—if a file is stored in a database, the name of the database will be displayed there; if not, information will be shown indicating that the file is only accessible within the thread:\n\n![v2_assistant_stores_upload](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_assistant_stores_upload.png)\n\n\n##  Agent (LlamaIndex) \n\nMode that allows the use of agents offered by `LlamaIndex`.\n\nIncludes built-in agents (Workflow):\n\n- FunctionAgent\n- ReAct\n- Structured Planner (sub-tasks)\n- CodeAct (connected to Code Interpreter plugin)\n- Supervisor + worker\n\nIncludes built-in agents (Legacy):\n\n- OpenAI Assistants\n\nIn the future, the list of built-in agents will be expanded.\n\nYou can create your own types (workflows\u002Fpatterns) using the built-in visual node-based editor found in the `Tools -> Agents Builder`.\n\nYou can also create your own agent by creating a new provider that inherits from `pygpt_net.provider.agents.base`.\n\n**Tools and Plugins**  \n\nIn this mode, all commands from active plugins are available (commands from plugins are automatically converted into tools for the agent on-the-fly).\n\n**RAG - using indexes**  \n\nIf an index is selected in the agent preset, a tool for reading data from the index is automatically added to the agent, creating a RAG automatically.\n\nMultimodality is currently unavailable, only text is supported. Vision support will be added in the future.\n\n**Loop \u002F Evaluate Mode**\n\nYou can run the agent in autonomous mode, in a loop, and with evaluation of the current output. When you enable the `Loop \u002F Evaluate` checkbox, after the final response is given, the quality of the answer will be rated on a percentage scale of `0% to 100%` by another agent. If the response receives a score lower than the one expected (set using a slider at the bottom right corner of the screen, with a default value `75%`), a prompt will be sent to the agent requesting improvements and enhancements to the response.\n\nSetting the expected (required) score to `0%` means that the response will be evaluated every time the agent produces a result, and it will always be prompted to self-improve its answer. This way, you can put the agent in an autonomous loop, where it will continue to operate until it succeeds.\n\nYou can choose between two methods of evaluation:\n\n- By the percentage of tasks completed\n- By the accuracy (score) of the final response\n\nYou can set the limit of steps in such a loop by going to `Settings -> Agents and experts -> LlamaIndex agents -> Max evaluation steps `. The default value is `3`, meaning the agent will only make three attempts to improve or correct its answer. If you set the limit to zero, there will be no limit, and the agent can operate in this mode indefinitely (watch out for tokens!).\n\nYou can change the prompts used for evaluating the response in `Settings -> Prompts -> Agent: evaluation prompt in loop`. Here, you can adjust it to suit your needs, for example, by defining more or less critical feedback for the responses received.\n\n## Agent (OpenAI)\n\nThe mode operates on the `openai-agents` library integrated into the application:\n\nhttps:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python\n\nIt allows running agents for OpenAI models and models compatible with the OpenAI API.\n\nIn this mode, you can use pre-configured Experts in Expert mode presets - they will be launched as agents (in the `openai_agents_experts` type, which allows launching one main agent and subordinate agents to which queries will be appropriately directed).\n\n**Agent types (workflows\u002Fpatterns):**\n\n- `Agent with experts` - uses attached experts as sub-agents\n- `Agent with experts + feedback` - uses attached experts as sub-agents + feedback agent in a loop\n- `Agent with feedback` - single agent + feedback agent in a loop\n- `Planner` - planner agent, 3 sub-agents inside: planner, base agent + feedback\n- `Research bot` - researcher, 3 sub-agents inside: planner, searcher and writer as base agent\n- `Simple agent` - a single agent.\n- `Evolve` - in each generation (cycle), the best response from a given parent agent is selected; in the next generation, the cycle repeats.\n- `B2B` - bot-to-bot communication, involving two bots interacting with each other while keeping a human in the loop.\n- `Supervisor + Worker` - one agent (supervisor) acts as a bridge between the user and the second agent (worker). The user provides a query to the supervisor, who then sends instructions to the worker until the task is completed by the worker.\n\nYou can create your own types (workflows\u002Fpatterns) using the built-in visual node-based editor found in the `Tools -> Agents Builder`.\n\nThere are also predefined presets added as examples:\n\n- `Coder`\n- `Experts agent`\n- `Planner`\n- `Researcher`\n- `Simple agent`\n- `Writer with Feedback`\n- `2 bots`\n- `Supervisor + worker`\n\nIn the Agents (OpenAI) mode, all remote tools are available for the base agent according to the configuration in the Config -> Settings -> Remote tools menu.\n\nRemote tools for experts can be selected separately for each expert in the preset configuration.\n\nLocal tools (from plugins) are available for agents and experts according to the enabled plugins, as in other modes.\n\nIn agents with feedback and plans, tools can be allowed in a preset configuration for each agent. They also have separate prompts that can be configured in presets.\n\n**Description of how different types of agents work:**\n\nBelow is a pattern for how different types of agents work. You can use these patterns to create agents for different tasks by modifying the appropriate prompts in the preset for the specific task.\n\n**Simple Agent**\n- The agent completes its task and then stops working.\n\n**Agent with Feedback**\n- The first agent answers a question.\n- The second agent (feedback) evaluates the answer and, if necessary, goes back to the first agent to enforce corrections.\n- The cycle repeats until the feedback agent is satisfied with the evaluation.\n\n**Agent with Experts**\n- The agent completes the assigned task on its own or delegates it to the most suitable expert (another agent).\n\n**Agent with Experts + Feedback**\n- The first agent answers a question or delegates it to the most suitable expert.\n- The second agent (feedback) evaluates and, if necessary, goes back to the first agent to enforce corrections.\n- The cycle repeats until the feedback agent is satisfied with the evaluation.\n\n**Research Bot**\n- The first agent (planner) prepares a list of phrases to search.\n- The second agent (search) finds information based on the phrases and creates a summary.\n- The third agent (writer) prepares a report based on the summary.\n\n**Planner**\n- The first agent (planner) breaks down a task into sub-tasks and sends the list to the second agent.\n- The second agent performs the task based on the prepared task list.\n- The third agent, responsible for feedback, evaluates, requests corrections if needed, and sends the request back to the first agent. The cycle repeats.\n\n**Evolve**\n- You select the number of agents (parents) to operate in each generation (iteration).\n- Each agent prepares a separate answer to a question.\n- The best agent (producing the best answer) in a generation is selected by the next agent (chooser).\n- Another agent (feedback) verifies the best answer and suggests improvements.\n- A request for improving the best answer is sent to a new pair of agents (new parents).\n- From this new pair, the best answer is selected again in the next generation, and the cycle repeats.\n\n**B2B**\n- A human provides a topic for discussion.\n- Bot 1 generates a response and sends it to Bot 2.\n- Bot 2 receives the response from Bot 1 as input, provides an answer, and sends the response back to Bot 1 as its input. This cycle repeats.\n- The human can interrupt the loop at any time and update the entire discussion.\n\n**Supervisor + Worker**\n\n- A human provides a query to the Supervisor.\n- The Supervisor prepares instructions for the Worker and sends them to the Worker.\n- The Worker completes the task and returns the result to the Supervisor.\n- If the task is completed, the Supervisor returns the result to the user. If not, the Supervisor sends another instruction to the Worker to complete the task or asks the user if there are any questions.\n- The cycle repeats until the task is completed.\n\n**Tip**: Starting from version `2.5.97`, you can assign and use Experts in all of the agent types.\n\n**Limitations:**\n\n- When the `Computer use` tool is selected for an expert or when the `computer-use` model is chosen, all other tools will not be available for that model.\n\n##  Agent (Autonomous) \n\nThis is an older version of the Agent mode, still available as legacy. However, it is recommended to use the newer mode: `Agent (LlamaIndex)`.\n\n**WARNING: Please use this mode with caution** - autonomous mode, when connected with other plugins, may produce unexpected results!\n\nThe mode activates autonomous mode, where AI begins a conversation with itself. \nYou can set this loop to run for any number of iterations. Throughout this sequence, the model will engage\nin self-dialogue, answering his own questions and comments, in order to find the best possible solution, subjecting previously generated steps to criticism.\n\n**WARNING:** Setting the number of run steps (iterations) to `0` activates an infinite loop which can generate a large number of requests and cause very high token consumption, so use this option with caution! Confirmation will be displayed every time you run the infinite loop.\n\nThis mode is similar to `Auto-GPT` - it can be used to create more advanced inferences and to solve problems by breaking them down into subtasks that the model will autonomously perform one after another until the goal is achieved.\n\nYou can create presets with custom instructions for multiple agents, incorporating various workflows, instructions, and goals to achieve.\n\nAll plugins are available for agents, so you can enable features such as file access, command execution, web searching, image generation, vision analysis, etc., for your agents. Connecting agents with plugins can create a fully autonomous, self-sufficient system. All currently enabled plugins are automatically available to the Agent.\n\nWhen the `Auto-stop` option is enabled, the agent will attempt to stop once the goal has been reached.\n\nIn opposition to `Auto-stop`, when the `Always continue...` option is enabled, the agent will use the \"always continue\" prompt to generate additional reasoning and automatically proceed to the next step, even if it appears that the task has been completed.\n\n**Options**\n\nThe agent is essentially a **virtual** mode that internally sequences the execution of a selected underlying mode. \nYou can choose which internal mode the agent should use in the settings:\n\n```Settings \u002F Agent (autonomous) \u002F Sub-mode to use```\n\nDefault mode is: `Chat`.\n\nIf you want to use the LlamaIndex mode when running the agent, you can also specify which index `LlamaIndex` should use with the option:\n\n```Settings \u002F Agents and experts \u002F Index to use```\n\n![v2_agent_settings](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_agent_settings.png)\n\n\n##  Experts (co-op, co-operation mode)\n\nExpert mode allows for the creation of experts (using presets) and then consulting them during a conversation. In this mode, a primary base context is created for conducting the conversation. From within this context, the model can make requests to an expert to perform a task and return the results to the main thread. When an expert is called in the background, a separate context is created for them with their own memory. This means that each expert, during the life of one main context, also has access to their own memory via their separate, isolated context.\n\n**In simple terms - you can imagine an expert as a separate, additional instance of the model running in the background, which can be called at any moment for assistance, with its own context and memory, as well as its own specialized instructions in a given subject.**\n\nExperts do not share contexts with one another, and the only point of contact between them is the main conversation thread. In this main thread, the model acts as a manager of experts, who can exchange data between them as needed.\n\nAn expert is selected based on the name in the presets; for example, naming your expert as: ID = python_expert, name = \"Python programmer\" will create an expert whom the model will attempt to invoke for matters related to Python programming. You can also manually request to refer to a given expert:\n\n```bash\nCall the Python expert to generate some code.\n```\n\nExperts can be activated or deactivated - to enable or disable use RMB context menu to select the `Enable\u002FDisable` options from the presets list. Only enabled experts are available to use in the thread.\n\nExperts can also be used in `Agent (autonomous)` mode - by creating a new agent using a preset. Simply move the appropriate experts to the active list to automatically make them available for use by the agent.\n\nYou can also use experts in \"inline\" mode - by activating the `Experts (inline)` plugin. This allows for the use of experts in any mode, such as normal chat.\n\nExpert mode, like agent mode, is a \"virtual\" mode - you need to select a target mode of operation for it, which can be done in the settings at `Settings \u002F Agent (autonomous) \u002F Sub-mode for experts`.\n\nYou can also ask for a list of active experts at any time:\n\n```bash\nGive me a list of active experts.\n```\n\n##  Computer use\n\nThis mode allows for autonomous computer control.\n\nIn this mode, the model takes control of the mouse and keyboard and can navigate within the user's environment. The `Computer use` remote tool is used here: https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Ftools-computer-use, combined with the `Mouse and Keyboard` plugin.\n\n**Example of use:**\n\n```Click on the Start Menu to open it, search for the Notepad in the list, and run it.```\n\nYou can change the environment in which the navigation mode operates by using the list at the bottom of the toolbox.\n\n**Available Environments:**\n\n- Browser\n- Linux\n- Windows\n- Mac\n\nYou can run this mode in Sandbox (using `Playwright` - https:\u002F\u002Fplaywright.dev\u002F) - to do it, just enable the `Sandbox` switch in the toolbox. Playwright browsers must be installed on your system. To do so, run:\n\n```bash\npip install playwright\nplaywright install \u003Cchromium|firefox|webkit>\n```\nAfter that, set the path to directory with installed browsers in `Mouse and Keyborad` plugin settings option: `Sandbox  (Playwright) \u002F Browsers directory`.\n\nCompiled binary and Snap versions have `chromium` preinstalled in the package.\n\n\n**Tip:** DO NOT enable the `Mouse and Keyboard` plugin in Computer use mode—it is already connected to Computer use mode \"in the background.\"\n\n\n# Context and memory\n\n## Short and long-term memory\n\n**PyGPT** features a continuous chat mode that maintains a long context of the ongoing dialogue. It preserves the entire conversation history and automatically appends it to each new message (prompt) you send to the AI. Additionally, you have the flexibility to revisit past conversations whenever you choose. The application keeps a record of your chat history, allowing you to resume discussions from the exact point you stopped.\n\n## Handling multiple contexts\n\nOn the left side of the application interface, there is a panel that displays a list of saved conversations. You can save numerous contexts and switch between them with ease. This feature allows you to revisit and continue from any point in a previous conversation. **PyGPT** automatically generates a summary for each context, akin to the way `ChatGPT` operates and gives you the option to modify these titles itself.\n\n![v2_context_list](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_context_list.png)\n\nYou can disable context support in the settings by using the following option:\n\n``` ini\nConfig -> Settings -> Use context \n```\n\n## Clearing history\n\nYou can clear the entire memory (all contexts) by selecting the menu option:\n\n``` ini\nFile -> Clear history...\n```\n\n## Context storage\n\nOn the application side, the context is stored in the `SQLite` database located in the working directory (`db.sqlite`).\nIn addition, all history is also saved to `.txt` files for easy reading.\n\nOnce a conversation begins, a title for the chat is generated and displayed on the list to the left. This process is similar to `ChatGPT`, where the subject of the conversation is summarized, and a title for the thread is created based on that summary. You can change the name of the thread at any time.\n\n# Files And Attachments\n\n## Uploading attachments\n\n**Using Your Own Files as Additional Context in Conversations**\n\nYou can use your own files (for example, to analyze them) during any conversation. You can do this in two ways: by indexing (embedding) your files in a vector database, which makes them available all the time during a \"Chat with Files\" session, or by adding a file attachment (the attachment file will only be available during the conversation in which it was uploaded).\n\n**Attachments**\n\n**PyGPT** makes it simple for users to upload files and send them to the model for tasks like analysis, similar to attaching files in `ChatGPT`. There's a separate `Attachments` tab next to the text input area specifically for managing file uploads. \n\n**Tip: Attachments uploaded in group are available in all contexts in group**.\n\n![v2_file_input](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_file_input.png)\n\nYou can use attachments to provide additional context to the conversation. Uploaded files will be converted into text using loaders from LlamaIndex, and then embedded into the vector store. You can upload any file format supported by the application through LlamaIndex. Supported formats include:\n\nText-based types:\n\n- CSV files (csv)\n- Epub files (epub)\n- Excel .xlsx spreadsheets (xlsx)\n- HTML files (html, htm)\n- IPYNB Notebook files (ipynb)\n- JSON files (json)\n- Markdown files (md)\n- PDF documents (pdf)\n- Plain-text files (txt and etc.)\n- Word .docx documents (docx)\n- XML files (xml)\n\nMedia-types:\n\n- Image (using vision) (jpg, jpeg, png, gif, bmp, tiff, webp)\n- Video\u002Faudio (mp4, avi, mov, mkv, webm, mp3, mpeg, mpga, m4a, wav)\n\nArchives:\n\n- zip\n- tar, tar.gz, tar.bz2\n\nThe content from the uploaded attachments will be used in the current conversation and will be available throughout (per context). There are 3 modes available for working with additional context from attachments:\n\n- `Full context`: Provides best results. This mode attaches the entire content of the read file to the user's prompt. This process happens in the background and may require a large number of tokens if you uploaded extensive content.\n\n- `RAG`: The indexed attachment will only be queried in real-time using LlamaIndex. This operation does not require any additional tokens, but it may not provide access to the full content of the file 1:1.\n\n- `Summary`: When queried, an additional query will be generated in the background and executed by a separate model to summarize the content of the attachment and return the required information to the main model. You can change the model used for summarization in the settings under the `Files and attachments` section.\n\nIn the `RAG` and `Summary` mode, you can enable an additional setting by going to `Settings -> Files and attachments -> Use history in RAG query`. This allows for better preparation of queries for RAG. When this option is turned on, the entire conversation context is considered, rather than just the user's last query. This allows for better searching of the index for additional context. In the `RAG limit` option, you can set a limit on how many recent entries in a discussion should be considered (`0 = no limit, default: 3`).\n\n**Important**: When using `Full context` mode, the entire content of the file is included in the prompt, which can result in high token usage each time. If you want to reduce the number of tokens used, instead use the `RAG` option, which will only query the indexed attachment in the vector database to provide additional context.\n\n**Images as Additional Context**\n\nFiles such as jpg, png, and similar images are a special case. By default, images are not used as additional context; they are analyzed in real-time using a vision model. If you want to use them as additional context instead, you must enable the \"Allow images as additional context\" option in the settings: `Files and attachments -> Allow images as additional context`.\n\n**Uploading larger files and auto-index**\n\nTo use the `RAG` mode, the file must be indexed in the vector database. This occurs automatically at the time of upload if the `Auto-index on upload` option in the `Attachments` tab is enabled. When uploading large files, such indexing might take a while - therefore, if you are using the `Full context` option, which does not use the index, you can disable the `Auto-index` option to speed up the upload of the attachment. In this case, it will only be indexed when the `RAG` option is called for the first time, and until then, attachment will be available in the form of `Full context` and `Summary`.\n\n**Embeddings**\n\nWhen using RAG to query attachments, the documents are indexed into a temporary vector store. With multiple providers and models available, you can select the model used for querying attachments in: `Config -> Settings -> Files and Attachments`. You can also choose the embedding models for specified providers in `Config -> Settings -> Indexes \u002F LlamaIndex -> Embeddings -> Default embedding models` list. By default, when querying an attachment using RAG, the default embedding model and provider corresponding to the RAG query model will be used. If no default configuration is provided for a specific provider, the global embedding configuration will be used.\n\nFor example, if the RAG query model is `gpt-4o-mini`, then the default model for the provider `OpenAI` will be used. If the default model for `OpenAI` is not specified on the list, the global provider and model will be used.\n\n## Downloading files\n\n**PyGPT** enables the automatic download and saving of files created by the model. This is carried out in the background, with the files being saved to an `data` folder located within the user's working directory. To view or manage these files, users can navigate to the `Files` tab which features a file browser for this specific directory. Here, users have the interface to handle all files sent by the AI.\n\nThis `data` directory is also where the application stores files that are generated locally by the AI, such as code files or any other data requested from the model. Users have the option to execute code directly from the stored files and read their contents, with the results fed back to the AI. This hands-off process is managed by the built-in plugin system and model-triggered commands. You can also indexing files from this directory (using integrated `LlamaIndex`) and use it's contents as additional context provided to discussion.\n\nThe `Files I\u002FO` plugin takes care of file operations in the `data` directory, while the `Code Interpreter` plugin allows for the execution of code from these files.\n\n![v2_file_output](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_file_input.png)\n\nTo allow the model to manage files or python code execution, the `+ Tools` option must be active, along with the above-mentioned plugins:\n\n![v2_code_execute](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_code_execute.png)\n\n# Presets\n\n## What is preset?\n\nPresets in **PyGPT** are essentially templates used to store and quickly apply different configurations. Each preset includes settings for the mode you want to use (such as chat, completion, or image generation), an initial system prompt, an assigned name for the AI, a username for the session, and the desired \"temperature\" for the conversation. A warmer \"temperature\" setting allows the AI to provide more creative responses, while a cooler setting encourages more predictable replies. These presets can be used across various modes and with models accessed via the `OpenAI API` or `LlamaIndex`.\n\nThe application lets you create as many presets as needed and easily switch among them. Additionally, you can clone an existing preset, which is useful for creating variations based on previously set configurations and experimentation.\n\n![v2_preset](https:\u002F\u002Fgithub.com\u002Fszczyglis-dev\u002Fpy-gpt\u002Fraw\u002Fmaster\u002Fdocs\u002Fsource\u002Fimages\u002Fv2_preset.png)\n\n## Example usage\n\nThe application includes several sample presets that help you become acquainted with the mechanism of their use.\n\n# Profiles\n\nYou can create multiple profiles for an app and switch between them. Each profile uses its own configuration, settings, context history, and a separate folder for user files. This allows you to set up different environments and quickly switch between them, changing the entire setup with just one click.\n\nThe app lets you create new profiles, edit existing ones, and duplicate current ones.\n\nTo create a new profile, select the option from the menu: `Config -> Profile -> New Profile...`\n\nTo edit saved profiles, choose the option from the menu: `Config -> Profile -> Edit Profiles...`\n\nTo switch to a created profile, pick the profile from the menu: `Config -> Profile -> [Profile Name]`\n\nEach profile uses its own user directory (workdir). You can link a newly created or edited profile to an existing workdir with its configuration.\n\nThe name of the currently active profile is shown as (Profile Name) in the window title.\n\n# Models\n\n## Built-in models\n\nPyGPT has a preconfigured list of models (as of 2026-02-06):\n\n- `bielik-11b-v2.3-instruct:Q4_K_M` (Ollama)\n- `chatgpt-4o-latest` (OpenAI)\n- `claude-3-5-sonnet-20240620` (Anthropic)\n- `claude-3-7-sonnet` (Anthropic)\n- `claude-3-opus` (Anthropic)\n- `claude-3-opus` (Anthropic)\n- `claude-opus-4-0` (Anthropic)\n- `claude-sonnet-4-0` (Anthropic)\n- `claude-opus-4-5` (Anthropic)\n- `claude-sonnet-4-5` (Anthropic)\n- `codellama` (Ollama)\n- `codex-mini` (OpenAI)\n- `dall-e-2` (OpenAI)\n- `dall-e-3` (OpenAI)\n- `deep-research-pro-preview-12-2025` (Google)\n- `deepseek-chat` (DeepSeek)\n- `deepseek-r1:1.5b` (Ollama)\n- `deepseek-r1:14b` (Ollama)\n- `deepseek-r1:32b` (Ollama)\n- `deepseek-r1:7b` (Ollama)\n- `deepseek-reasoner` (DeepSeek)\n- `gemini-2.5-computer-use-preview-10-2025` (Google)\n- `gemini-1.5-flash` (Google)\n- `gemini-1.5-pro` (Google)\n- `gemini-2.0-flash-exp` (Google)\n- `gemini-2.5-flash` (Google)\n- `gemini-2.5-flash-preview-native-audio-dialog` (Google, real-time)\n- `gemini-2.5-pro` (Google)\n- `gemini-3-flash-preview` (Google)\n- `gemini-3-pro-image-preview` (Google)\n- `gemini-3-pro-preview` (Google)\n- `gpt-3.5-turbo` (OpenAI)\n- `gpt-3.5-turbo-16k` (OpenAI)\n- `gpt-3.5-turbo-instruct` (OpenAI)\n- `gpt-4` (OpenAI)\n- `gpt-4-32k` (OpenAI)\n- `gpt-4-turbo` (OpenAI)\n- `gpt-4-vision-preview` (OpenAI)\n- `gpt-4.1` (OpenAI)\n- `gpt-4.1-mini` (OpenAI)\n- `gpt-4.1-nano` (OpenAI)\n- `gpt-4o` (OpenAI)\n- `gpt-4o-realtime-preview` (OpenAI, real-time)\n- `gpt-4o-mini` (OpenAI)\n- `gpt-5` (OpenAI)\n- `gpt-5-mini` (OpenAI)\n- `gpt-5-nano` (OpenAI)\n- `gpt-5.2` (OpenAI)\n- `gpt-image-1` (OpenAI)\n- `gpt-image-1.5` (OpenAI)\n- `gpt-oss:20b` (OpenAI - via Ollama and HuggingFace Router)\n- `gpt-oss:120b` (OpenAI - via Ollama and HuggingFace Router)\n- `gpt-realtime` (OpenAI, real-time)\n- `grok-2-vision` (xAI)\n- `grok-3` (xAI)\n- `grok-3-fast` (xAI)\n- `grok-3-mini` (xAI)\n- `grok-3-mini-fast` (xAI)\n- `grok-4` (xAI)\n- `grok-imagine-image` (xAI)\n- `grok-imagine-video` (xAI)\n- `llama2-uncensored` (Ollama)\n- `llama3.1` (Ollama)\n- `llama3.1:70b` (Ollama)\n- `mistral` (Ollama)\n- `mistral-large` (Ollama)\n- `mistral-small3.1` (Ollama)\n- `nano-banana-pro-preview` (Google)\n- `o1` (OpenAI)\n- `o1-mini` (OpenAI)\n- `o1-pro` (OpenAI)\n- `o3` (OpenAI)\n- `o3-deep-research` (OpenAI)\n- `o3-mini` (OpenAI)\n- `o3-pro` (OpenAI)\n- `o4-mini` (OpenAI)\n- `o4-mini-deep-research` (OpenAI)\n- `qwen2:7b` (Ollama)\n- `qwen2.5-coder:7b` (Ollama)\n- `qwen3:8b` (Ollama)\n- `qwen3:30b-a3b` (Ollama)\n- `r1` (Perplexity)\n- `sonar` (Perplexity)\n- `sonar-deep-research` (Perplexity)\n- `sonar-pro` (Perplexity)\n- `sonar-reasoning` (Perplexity)\n- `sonar-reasoning-pro` (Perplexity)\n- `sora-2` (OpenAI)\n- `veo-3.0-generate-preview` (Google)\n- `veo-3.0-fast-generate-preview` (Google)\n- `veo-3.1-generate-preview` (Google)\n- `veo-3.1-fast-generate-preview` (Google)\n\nAll models are specified in the configuration file `models.json`, which you can customize. \nThis file is located in your working directory. You can add new models provided directly by `OpenAI API` (or compatible), `Google Gen AI API`, `Anthropic API`, `xAI API`, and those supported by `LlamaIndex` or `Ollama` to this file. Configuration for LlamaIndex in placed in `llama_index` key.\n\nYou can import new models by manually editing `models.json` or by using the model importer in the `Config -> Models -> Import` menu.\n\n**Tip:** The models on the list are sorted by provider, not by manufacturer. A model from a particular manufacturer may be available through different providers (e.g., OpenAI models can be provided by the `OpenAI API` or by `OpenRouter`). If you want to use a specific model through a particular provider, you need to configure the provider in `Config -> Models -> Edit`, or import it directly via `Config -> Models -> Import`.\n\n**Tip**: Anthropic and Deepseek API providers use VoyageAI for embeddings (Chat with Files and attachments RAG), so you must also configure the Voyage API key if you want to use embeddings from these providers.\n\n## Adding a custom model\n\nYou can add your own models. See the section `Extending PyGPT \u002F Adding a new model` for more info.\n\nThere is built-in support for those LLM providers:\n\n- `Anthropic`\n- `Azure OpenAI` (native SDK)\n- `Deepseek API`\n- `Google` (native SDK)\n- `HuggingFace API`\n- `HuggingFace Router` (wrapper for OpenAI compatible ChatCompletions)\n- `Local models` (OpenAI API compatible)\n- `Mistral AI`\n- `Ollama`\n- `OpenAI` (native SDK)\n- `OpenRouter`\n- `Perplexity`\n- `xAI` (native SDK)\n\n## How to use local or non-GPT models\n\n### Llama 3, Mistral, DeepSeek, Qwen, gpt-oss, and other local models\n\nHow to use locally installed Llama 3, DeepSeek, Mistral, etc. models:\n\n1) Choose a working mode: `Chat` or `Chat with Files`.\n\n2) On the models list - select, edit, or add a new model (with `ollama` provider). You can edit the model settings through the menu `Config -> Models -> Edit`, then configure the model parameters in the `advanced` section.\n\n3) Download and install Ollama from here: https:\u002F\u002Fgithub.com\u002Follama\u002Follama\n\nFor example, on Linux:\n\n```curl -fsSL https:\u002F\u002Follama.com\u002Finstall.sh | sh```\n\n4) Run the model (e.g. Llama 3) locally on your machine. For example, on Linux:\n\n```ollama run llama3.1```\n\n5) Return to PyGPT and select the correct model from models list to chat with selected model using Ollama running locally.\n\n**Example available models**\n\n- `llama3.1`\n- `codellama`\n- `mistral`\n- `llama2-uncensored`\n- `deepseek-r1`\n\netc.\n\nYou can add more models by editing the models list.\n\n**Real-time importer**\n\nYou can also import models in real-time from a running Ollama instance using the `Config -> Models -> Import...` tool.\n\n**Custom Ollama endpoint**\n\nThe default endpoint for Ollama is: http:\u002F\u002Flocalhost:11434\n\nYou can change it globally by setting the environment variable `OLLAMA_API_BASE` in `Settings -> General -> Advanced -> Application environment`.\n\nYou can also change the \"base_url\" for a specific model in its configuration:\n\n`Config -> Models -> Edit`, then in the `Advanced -> [LlamaIndex] ENV Vars` section add the variable:\n\nNAME: `OLLAMA_API_BASE`\nVALUE: `http:\u002F\u002Fmy_endpoint.com:11434`\n\n\n**List of all models supported by Ollama**\n\nhttps:\u002F\u002Follama.com\u002Flibrary\n\nhttps:\u002F\u002Fgithub.com\u002Follama\u002Follama\n\n**IMPORTANT:** Remember to define the correct model name in the **kwargs list in the model settings.\n\n**Using local embeddings**\n\nRefer to: https:\u002F\u002Fdocs.llamaindex.ai\u002Fen\u002Fstable\u002Fexamples\u002Fembeddings\u002Follama_embedding\u002F\n\nYou can use an Ollama instance for embeddings. Simply select the `ollama` provider in:\n\n```Config -> Settings -> Indexes \u002F LlamaIndex -> Embeddings -> Embeddings provider```\n\nDefine parameters like model name and Ollama base URL in the Embeddings provider **kwargs list, e.g.:\n\n- name: `model_name`, value: `llama3.1`, type: `str`\n\n- name: `base_url`, value: `http:\u002F\u002Flocalhost:11434`, type: `str`\n\n### Google Gemini, Anthropic Claude, xAI Grok, etc.\n\nIf you want to use non-OpenAI models in `Chat with Files` and `Agents (LlamaIndex)` modes, then remember to configure the required parameters like API keys in the model config fields. `Chat` mode works via OpenAI SDK (compatible API), `Chat with Files` and `Agents (LlamaIndex)` modes works via LlamaIndex.\n\n**Google Gemini**\n\nRequired ENV:\n\n- GOOGLE_API_KEY = {api_key_google}\n\nRequired **kwargs:\n\n- model\n\n**Anthropic Claude**\n\nRequired ENV:\n\n- ANTHROPIC_API_KEY = {api_key_anthropic}\n\nRequired **kwargs:\n\n- model\n\n**xAI Grok** (Chat mode only)\n\nRequired ENV:\n\n- OPENAI_API_KEY = {api_key_xai}\n-","PyGPT 是一个基于多种AI模型的桌面助手，支持GPT-5、GPT-4、o1、o3等语言模型。其核心功能包括多模式交互如文本聊天、图像生成与分析、语音合成及识别，并且能够执行系统命令和管理文件传输。技术上，PyGPT利用了OpenAI API及其他SDKs如LlamaIndex来集成不同的AI服务，同时提供了插件扩展能力以满足个性化需求。适用于需要AI辅助的各种场景，比如日常办公协助、代码生成、自然语言处理任务以及多媒体内容创作等。",2,"2026-06-11 03:30:01","top_topic"]