Package: chatplayground
Chat PlaygroundA simple local chat playground with power user features. All messages are stored as JSON files in a local directory, making it easy to sync them with a cloud service like Dropbox or Google Drive and access them from multiple devices while protecting your privacy.MotivationThe ChatGPP web app is a great way to play with LLMs, but it has a few limitations:It's not possible to edit messages without deleting everything below.It's hard to see what the explored alternatives are for a given message.It's hard to see what the explored alternatives are for a given message thread.It's not possible to change the model settings or the model type (GPT3.5/4) later on.InstallationNode.JSTo install Chat Playground, first, make sure you have Node.js installed. You can usecondato install Node.js as follows:conda install -c conda-forge nodejsOr, to install a specific version of Node.js (this one worked for me on my MacBook---so this will not work on Linux):conda install -c conda-forge nodejs=18.15.0=h26a3f6d_0Chat PlaygroundOnce Node.js is installed, you can install Chat Playground usingpiporpipx(if you have nodejs available in your base environment):pipx install chatplaygroundOpenAI Key :key:Ensure that your OpenAI key is set in an OPENAI_API_KEY environment variable. You then can run the playground withchatplaygroundFeaturesPreview of possible alternative message threads as an exposee view.Preview of possible alternatives at the message level.Editing messages within a message thread without deleting everything below.Forking message threads (similar to the ChatGPT web app).Messages stored as JSON files in a local directory.Easy sync with cloud services like Dropbox or Google Drive.Real-time updates from the filesystem to the UI.Atomic changes of the stored messages.ScreenshotsCode & LayoutThis project was written in ~25 hours usingPynecone. The code is currently in one big Python file, which may benefit from refactoring into a package with multiple files. However, the code is mostly simple and it was quite productive to keep everything together.There are a few issues with the current code (in part due to Pynecone's early stage of development):No tests currently.Calling event functions in State classes requires passing self, even though it shouldn't:self.state_event_function(self).Issues with streaming events from the OpenAI request to the UI, requiring a hacky workaround for updates to propagate to the UI correctly.Known Pynecone issues, as mentioned in the code.Despite these issues, the project came together very quickly with PyneCone and works quite well.DocumentationLicense: GPL-3.0-onlySource Code:https://github.com/blackhc/chatplaygroundPyPI Package:https://pypi.org/project/chatplayground/Official Documentation:https://blackhc.github.io/chatplaygroundContributingBug fixes, feature requests, and pull requests are welcome! If you have any questions or suggestions, please open an issue on GitHub.LicenseChat Playground is licensed under AGPL3.0. If you require a commercial license for any part of the project, please contact the author.Hopefully, this project will inspire new UX paradigms for working with LLMs in the future.CreditsThis package was created usingPyneConewithCookiecutterand thewaynerv/cookiecutter-pypackageproject template.