{"id":15442519,"url":"https://github.com/yujiosaka/chatiq","last_synced_at":"2025-04-19T18:27:12.119Z","repository":{"id":170517793,"uuid":"646664251","full_name":"yujiosaka/ChatIQ","owner":"yujiosaka","description":"ChatIQ is a versatile Slack bot using GPT \u0026 Weaviate-powered long-term memory to accomplish various tasks.","archived":false,"fork":false,"pushed_at":"2024-03-17T22:48:13.000Z","size":865,"stargazers_count":30,"open_issues_count":6,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-20T23:03:03.475Z","etag":null,"topics":["bolt","chatgpt","chatgpt-api","langchain","slack","slack-bot","weaviate"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yujiosaka.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["yujiosaka"]}},"created_at":"2023-05-29T04:04:34.000Z","updated_at":"2024-12-26T14:08:16.000Z","dependencies_parsed_at":"2024-11-08T16:02:26.413Z","dependency_job_id":null,"html_url":"https://github.com/yujiosaka/ChatIQ","commit_stats":{"total_commits":14,"total_committers":3,"mean_commits":4.666666666666667,"dds":0.5,"last_synced_commit":"def21481b0c132173b51d1d7a314b103db324ca2"},"previous_names":["yujiosaka/chatiq"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiosaka%2FChatIQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiosaka%2FChatIQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiosaka%2FChatIQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yujiosaka%2FChatIQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yujiosaka","download_url":"https://codeload.github.com/yujiosaka/ChatIQ/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235519884,"owners_count":19003201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bolt","chatgpt","chatgpt-api","langchain","slack","slack-bot","weaviate"],"created_at":"2024-10-01T19:28:16.814Z","updated_at":"2025-01-24T23:59:55.366Z","avatar_url":"https://github.com/yujiosaka.png","language":"Python","funding_links":["https://github.com/sponsors/yujiosaka"],"categories":[],"sub_categories":[],"readme":"# ChatIQ [![CI/CD](https://github.com/yujiosaka/ChatIQ/actions/workflows/ci_cd.yml/badge.svg)](https://github.com/yujiosaka/ChatIQ/actions/workflows/ci_cd.yml) [![codecov](https://codecov.io/gh/yujiosaka/ChatIQ/branch/main/graph/badge.svg?token=GQKTMGMH96)](https://codecov.io/gh/yujiosaka/ChatIQ)\n\n###### [Usage](https://github.com/yujiosaka/ChatIQ#how-to-use) | [Prerequisites](https://github.com/yujiosaka/ChatIQ#Prerequisites) | [Installation](https://github.com/yujiosaka/ChatIQ#installation) | [Development](https://github.com/yujiosaka/ChatIQ#development) | [Deployment](https://github.com/yujiosaka/ChatIQ#local-deployment) | [Configuration](https://github.com/yujiosaka/ChatIQ#configuration) | [Limitations](https://github.com/yujiosaka/ChatIQ#limitations-and-considerations) | [FAQ](https://github.com/yujiosaka/ChatIQ#faq) | [Tips](https://github.com/yujiosaka/ChatIQ#tips) | [Changelog](https://github.com/yujiosaka/ChatIQ/blob/master/CHANGELOG.md) | [License](https://github.com/yujiosaka/ChatIQ/blob/master/LICENSE)\n\nChatIQ is a versatile Slack bot using GPT \u0026 Weaviate-powered long-term memory to accomplish various tasks.\n\n## Features\n\n\u003cimg src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/a6840900-665e-46a8-bcb0-245191fab08d\" alt=\"icon\" width=\"300\" align=\"right\"\u003e\n\n- Provides Home view for configurations.\n- Extracts context from the channel description and topic.\n- Uses OpenAI's GPT model for generating responses.\n- Reads conversation replies in the mentioned thread.\n- Uses [Weaviate](https://weaviate.io/) to store conversations in long-term memory.\n- Stores titles and previews of unfurling links in long-term memory.\n- Stores plain text and PDF file attachments in long-term memory.\n- Detects channel privacy to keeps private conversations within the channel.\n- Support integrating with existing [Flask](https://flask.palletsprojects.com/) or [Bolt](https://github.com/SlackAPI/bolt-python) applications.\n- Easily deployable to Kubernetes using provided configurations.\n\n## How to Use\n\n### Configure workspace settings\n\nClick ChatIQ app to configure Slack workspace settings in App Home.\n\n\u003cimg width=\"400\" alt=\"home-screen\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/e1b73fae-78b1-47d0-9a02-d181e81b5c0f\"\u003e\n\n### Configure channel settings\n\nUse emojis in Slack channel topics and descriptions to override workspace settings.\n\n\u003cimg width=\"400\" alt=\"Screenshot 2023-05-29 at 10 04 43\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/1c8733d0-3da2-42cb-98ef-1a786042f13a\"\u003e\u003cbr /\u003e\n\n- Use :thermometer: for temperature, :round_pushpin: for timezone and :speech_balloon: for system message to override workspace settings.\n- Override channel descriptions by channel topics. (channel topic \u003e channel description \u003e app home in priority)\n\n### Start conversation\n\nMention `@ChatIQ` to start conversation.\n\n\u003cimg width=\"400\" alt=\"conversation\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/24328bfd-7e06-4067-a498-7b5c4bc4b687\"\u003e\n\n### Reads from long-term memory\n\nMore interestingly, you can ask `@ChatIQ` for the past conversations and even uploaded files in the current channel and public channels that`@ChatIQ` is invited to.\n\n\u003cimg width=\"400\" alt=\"conversation\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/4a1d2d03-baf5-4e9b-a234-8cdce7920017\"\u003e\n\n## Prerequisites\n\n- Python 3.10\n- A Slack bot token\n- An OpenAI API key\n- A Weaviate instance\n- A PostgreSQL instance\n\n### Weaviate Setup\n\nIf you plan to run the chatbot locally without Docker Compose or Kubernetes, you will need to set up a Weaviate instance. Follow the [instructions](https://weaviate.io/developers/weaviate/installation) to install and configure Weaviate.\n\nWhen running the chatbot with Docker Compose or Kubernetes, no additional setup is required for Weaviate as it is included in the configurations.\n\n### PostgreSQL Setup\n\nThe chatbot requires a PostgreSQL database to store OAuth tokens and state information. If you're running the bot locally without Docker Compose or Kubernetes, you will need to set up and configure a PostgreSQL instance. Please refer to the [official PostgreSQL documentation](https://www.postgresql.org/docs/current/tutorial-install.html) for installation instructions.\n\nWhen running the chatbot with Docker Compose or Kubernetes, no additional setup is required for PostgreSQL as it is included in the configurations.\n\n## Installation\n\nTo install the package, you can use `pip`:\n\n```sh\npip install chatiq\n```\n\n## Standalone Server\n\nAfter installing the `chatiq` package, you can start the server by running:\n\n```sh\nchatiq\n```\n\nBy default, the server listens on port 3000. To specify a different port, use the `-p` or `--port` option:\n\n```sh\nchatiq --port 4000\n```\n\nTo configure the server, you can set various environment variables. A complete list of available environment variables and their default values can be found in the [.env.example](https://github.com/yujiosaka/ChatIQ/blob/main/.env.example) file.\n\n## Integration with FastAPI\n\nChatIQ does not officially support [FastAPI](https://github.com/slackapi/python-slack-sdk/issues/1276) because [one of the critical components in Python Slack SDK for multi-workspace support does not yet support asyncio](https://github.com/slackapi/python-slack-sdk/issues/1276).\n\nBut the rest of the codebase is independent from server frameworks. So feel free to try integrating with FastAPI on your own. FastAPI will be officially supported as soon as the upstream issue is resolved.\n\n## Integration with Flask\n\nChatIQ can be integrated with [Flask](https://flask.palletsprojects.com/). Below are examples of how to set up a simple ChatIQ server with Flask.\n\nFirst, install Flask and an ASGI server like [Gunicorn](https://gunicorn.org/):\n\n```sh\npip install gunicorn\n```\n\nCreate a file named `app.py` with the following content:\n\n```python\nfrom flask import Flask, make_response, request\nfrom slack_bolt import BoltRequest\nfrom slack_bolt.adapter.flask import SlackRequestHandler\nfrom chatiq import ChatIQ\n\n# Initialize ChatIQ with your settings\nchatiq = ChatIQ(\n    slack_client_id=\"your-slack-client-id\", # Optional, or read SLACK_CLIENT_ID from environment variables\n    slack_client_secret=\"your-slack-client-secret\", # Optional, or read SLACK_CLIENT_SECRET from environment variables\n    slack_signing_secret=\"your-slack-signing-secret\", # Optional, or read SLACK_SIGNING_SECRET from environment variables\n    openai_api_key=\"your-openai-api-key\", # Optional, or read OPENAI_API_KEY from environment variables\n    postgres_url=\"your-postgres-url\", # Optional, or read POSTGRES_URL from environment variables\n    weaviate_url=\"your-weaviate-url\", # Optional, or read WEAVIATE_URL from environment variables\n    rate_limit_retry=True, # Optional. Enable the rate limit retry handler (default is False)\n)\n# Start listening for Slack events\nchatiq.listen()\n\n# Create a Flask app\napp = Flask(__name__)\n# Create a SlackRequestHandler with the Bolt app from ChatIQ\nhandler = SlackRequestHandler(chatiq.bolt_app)\n\n# Handle installation and OAuth redirect endpoints\n@app.route(\"/slack/install\", methods=[\"GET\"])\n@app.route(\"/slack/oauth_redirect\", methods=[\"GET\"])\ndef oauth_redirect():\n    # Use the SlackRequestHandler to handle these requests\n    return handler.handle(request)\n\n# Handle Slack events\n@app.route(\"/slack/events\", methods=[\"POST\"])\ndef endpoint():\n    # Get the request body and headers\n    body = request.get_data().decode(\"utf-8\")\n    headers = {k: v for k, v in request.headers}\n    # Create a BoltRequest from the request data\n    bolt_req = BoltRequest(body=body, headers=headers)\n    # Dispatch the Bolt request in the ChatIQ's Bolt app\n    bolt_resp = chatiq.bolt_app.dispatch(bolt_req)\n    # Return the response from the Bolt app\n    return make_response(bolt_resp.body, bolt_resp.status, bolt_resp.headers)\n```\n\nRun the Flask app with Gunicorn:\n\n```sh\ngunicorn app:app\n```\n\n## Integration with Existing Bolt Apps\n\nIn addition to integrating with web frameworks, ChatIQ can also be plugged into your existing [Bolt](https://github.com/SlackAPI/bolt-python) apps. This allows you to add the functionality of ChatIQ to your existing Slack apps. Here's a simple example:\n\n```python\nfrom slack_bolt import App\nfrom chatiq import ChatIQ\n\n# Assume that you have an existing Bolt app\nbolt_app = App(...)\n\n# Initialize ChatIQ with the existing Bolt app\nchatiq = ChatIQ(\n    bolt_app=bolt_app,\n    openai_api_key=\"your-openai-api-key\", # Optional, or read OPENAI_API_KEY from environment variables\n    postgres_url=\"your-postgres-url\", # Optional, or read POSTGRES_URL from environment variables\n    weaviate_url=\"your-weaviate-url\", # Optional, or read WEAVIATE_URL from environment variables\n    rate_limit_retry=True, # Optional. Enable the rate limit retry handler (default is False)\n)\n\n# Start listening for Slack events\nchatiq.listen()\n```\n\nPlease note that if the same event is registered multiple times in a Bolt app, all the handlers will execute in the order they were registered. Therefore, the event handlers of ChatIQ will be added after your existing handlers. If your existing Bolt app has settings that conflict with ChatIQ, it might cause unexpected behaviors.\n\n## Development\n\nThere are two ways to set up the development environment: manually or using Visual Studio Code and the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers).\n\n### Manual Setup\n\n1. Clone the repository:\n\n```sh\ngit clone https://github.com/yujiosaka/ChatIQ.git\n```\n\n2. Navigate to the project directory:\n\n```sh\ncd chatiq\n```\n\n3. Install `poetry`:\n\n```sh\npip install poetry\n```\n\n4. Run the `setup_dev_env.sh` script to set up your development environment:\n\n```sh\n./setup_dev_env.sh\n```\n\n5. Set the required environment variables in a `.env` file.\n\n6. Run the chatbot:\n\n```sh\nflask --app chatiq.main:app --debug run\n```\n\n### Docker Dev Container Setup\n\nUsing Visual Studio Code and the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension, you can simplify the development environment setup process. The extension allows you to develop inside a Docker container and automatically sets up the development environment for you.\n\n1. Install the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension in Visual Studio Code.\n\n2. Clone the repository:\n\n```sh\ngit clone https://github.com/yujiosaka/ChatIQ.git\n```\n\n3. Open the cloned repository in Visual Studio Code.\n\n4. When prompted by Visual Studio Code, click \"Reopen in Container\" to open the project inside the Docker container.\n\n5. The extension will build the Docker container and set up the development environment for you. This may take a few minutes.\n\n6. Set the required environment variables in a `.env` file.\n\n7. Build and run the Docker container with Docker Compose:\n\n```sh\ndocker-compose up --build\n```\n\n## Local Deployment\n\nTo deploy the services locally, follow the steps below:\n\n### Set up the repository\n\n1. Clone the repository:\n\n```sh\ngit clone https://github.com/yujiosaka/ChatIQ.git\n```\n\n2. Navigate to the project directory:\n\n```sh\ncd chatiq\n```\n\n### Secrets and ConfigMaps\n\nBefore deploying the services, you need to set up Kubernetes Secrets and ConfigMaps.\n\n1. Create a `.env` file from the `.env.example` file and fill it with your actual values.\n2. Use the following command to create Kubernetes Secrets:\n\n```sh\nmake create-secrets\n```\n\n3. For ConfigMaps, use the following command:\n\n```sh\nmake create-configmap\n```\n\nBy default, the ConfigMap will be created with the `LOG_LEVEL` value set to `info`. If you want to use a different value, you can specify it as an argument:\n\n```sh\nmake create-configmap LOG_LEVEL=debug\n```\n\n### Deploying to Kubernetes\n\nTo deploy the services to Kubernetes, use the following command:\n\n```sh\nmake deploy\n```\n\nThis command applies all Kubernetes configuration files located in the `./kubernetes/` directory.\n\nMake sure you have a compatible version of Kubernetes running. The project has been tested and verified with Kubernetes version `1.25.4`. You can check your Kubernetes version using the following command:\n\n```sh\nkubectl version\n```\n\n### Accessing Services\n\nTo access the deployed services, use the following command to get the list of services and their corresponding URLs:\n\n```sh\nkubectl get services\n```\n\nTo check the availability of the service, you can access the health check endpoint at http://localhost:3000/healthcheck.\n\n### Cleaning Up\n\nTo delete all the deployed resources, use the following command:\n\n```sh\nmake delete\n```\n\nNote: Make sure you have `kubectl` configured to communicate with your Kubernetes cluster.\n\n### Docker Hub Repository\n\nDocker images for this project are available in the [Docker Hub repository](https://hub.docker.com/r/yujiosaka/chatiq). You can find suitable images for different versions or tags of the ChatIQ application.\n\n## Configuration\n\nTo configure and install ChatIQ in your Slack workspace, follow the steps below:\n\n### Create a new app from the manifest\n\n1. Go to Slack's [Your Apps](https://api.slack.com/apps) page and click on \"Create an App\".\n\n   \u003cimg width=\"400\" alt=\"create-new-app\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/344f5164-ab0b-41ea-acc2-f1a58979a5cd\"\u003e\n\n2. Select \"From an app manifest\" as the creation method.\n\n3. Choose the workspace where you want to install the app and click the \"Next\" button.\n\n4. Copy the contents of the [manifest.yaml](https://github.com/yujiosaka/ChatIQ/blob/main/manifest.yml) file and paste it into the text field. Then click the \"Next\" button.\n\n5. Review the app details and click \"Create\" to create the app.\n\n### Modify the URLs\n\nBefore installing the app, you need to modify the URLs in Slack's app settings:\n\n- In the \"Event Subscriptions\" section, update the \"Request URL\" field by replacing `example.com` with your app's domain.\n\n   \u003cimg width=\"400\" alt=\"event-subscriptions\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/a8403e28-9b77-4de7-814b-02236a941278\"\u003e\n\n- In the \"OAuth \u0026 Permissions\" section, update the \"Redirect URLs\" by replacing `example.com` with your app's domain.\n\n   \u003cimg width=\"400\" alt=\"oauth-and-permissions\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/3198c5bf-f4ea-4f6e-955b-fb50b7b8c77c\"\u003e\n\n- In the \"Interactivity \u0026 Shortcuts\" section, update the \"Request URL\" field by replacing `example.com` with your app's domain.\n\n   \u003cimg width=\"400\" alt=\"interactivity-and-shortcuts\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/b75f9bc3-c079-4332-b18b-120c86eb0833\"\u003e\n\n### (Optional) Upload the app icon\n\nTo add an app icon, go to the \"Display Information\" section in the Basic Information settings. Click the \"+ Add App Icon\" button and upload the desired icon image. You can use [this icon](https://github.com/yujiosaka/ChatIQ/blob/main/images/icon.png) for the ChatIQ app.\n\n\u003cimg width=\"400\" alt=\"basic-information\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/225849ad-b555-48cc-a215-3b9a1eb72798\"\u003e\n\n### Updating App Credentials\n\nBefore starting the application, you need to update the `.env` file with the required credentials. Follow the steps below:\n\n1. Create a `.env` file from the `.env.example` file.\n\n2. Retrieve the \"Client ID\", \"Client Secret\", and \"Signing Secret\" from the \"App Credentials\" section in the \"Basic Settings\" menu of your Slack app.\n\n   \u003cimg width=\"400\" alt=\"app-credentials\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/4e95b824-e96f-4727-b056-440d969ad2e8\"\u003e\n\n3. Replace the placeholders in the `.env` file with your actual credentials. Make sure to update the `OPENAI_API_KEY` with your own OpenAI API Key as well.\n\n4. Save the `.env` file.\n\n5. (Re)start the application.\n\n### Install the app to your workspace\n\n1. Open the following URL in your web browser: `https://\u003cyour-domain\u003e/slack/install`\n\n   \u003cimg width=\"400\" alt=\"slack-install\" src=\"https://github.com/yujiosaka/ChatIQ/assets/2261067/92338e5d-5238-40d0-81c0-4ab483d92051\"\u003e\n\n2. Click the \"Add to Slack\" button.\n\n3. Grant the necessary permissions to the app by clicking \"Allow\".\n\nThat's it! The ChatIQ Slack app is now installed in your workspace.\n\n## Building and Publishing\n\n1. To build the project, use the `poetry build` command:\n\n```sh\npoetry build\n```\n\n2. To upload the built package to PyPI, use `poetry publish` command:\n\n```sh\npoetry publish\n```\n\n## Linting and Formatting\n\nThis project uses `flake8` for linting, `black` for code formatting, `isort` for organizing imports, and `pytype` for type checking.\n\nTo lint the code, run:\n\n```sh\nflake8\n```\n\nTo format the code, run:\n\n```sh\nblack .\n```\n\nTo organize imports, run:\n\n```sh\nisort .\n```\n\nTo perform type checking with pytype, run:\n\n```sh\npytype chatiq\n```\n\n## Limitations and Considerations\n\n### Text Length and Token Limitation\n\nOpenAI language models have inherent token limitations. For example, the GPT-3.5-turbo model, currently supported by ChatIQ, has a maximum limit of 4096 tokens. As a result, very long messages might exceed this token limit and cannot be processed.\n\nTo circumvent this issue, ChatIQ truncates messages to a limit of 3000 tokens. The token limit of 3000 (instead of the maximum 4096) has been chosen to allow room for the wrapping prompt and the inclusion of relevant information from long-term memory in the vectorstore.\n\nPlease note that this token limit is set based on the chosen language model and may vary if a different model is selected. The ability to select a different model for each team/workspace will be provided in future updates, enabling you to adjust this token limit according to your specific needs and the capabilities of the chosen model.\n\n### Considerations for CJK Characters\n\nWhen using languages with CJK (Chinese, Japanese, and Korean) characters, note that these languages may consume tokens at a higher rate compared to others for the same number of characters due to the way the tokenizer processes these scripts. This may result in a message hitting the token limit with fewer characters than expected. Always consider the token consumption of your chosen language when interacting with the bot.\n\n## FAQ\n\n### 1. How is ChatIQ different from ChatGPT?\n\nThe main difference between ChatIQ and ChatGPT is that the responses generated by ChatIQ are not private and can be shared with others. While ChatGPT provides individual users with private responses, ChatIQ integrates with Slack, enabling team collaboration and knowledge sharing. It allows team members to benefit from the useful responses generated by GPT and facilitates sharing information within the workspace.\n\nAdditionally, ChatIQ has the capability to read and analyze conversations, including uploaded files, whereas ChatGPT cannot access internal information like sales decks and documents. This feature of ChatIQ enhances its usefulness for business purposes.\n\n### 2. How is ChatIQ different from the ChatGPT app in Slack?\n\nThe [ChatGPT app for Slack](https://www.salesforce.com/news/stories/chatgpt-app-for-slack/) is still in beta and its features may change over time. From what is currently known, the ChatGPT app in Slack offers specific functionalities such as providing summarization of threads and assisting in drafting replies to messages. It also aims to enhance the search experience within Slack.\n\nOn the other hand, ChatIQ provides more flexibility in its use cases. It allows you to use ChatGPT directly within Slack, similar to the ChatGPT app, but with the added advantage of being able to share the generated responses with others. ChatIQ serves as a versatile Slack bot that can be utilized for a wide range of tasks, making it a valuable tool for team collaboration and knowledge sharing.\n\n### 3. What are the security and privacy concerns with ChatIQ?\n\nIt is important to be aware that when using ChatIQ, the conversation is sent to OpenAI for processing. OpenAI's [Terms of use](https://openai.com/policies/terms-of-use) explicitly state that the content provided via their API will not be used to develop or improve their services. You can refer to OpenAI's TOS for more details on their data usage policy.\n\nFurthermore, ChatIQ stores past conversations and uploaded files in Vectorstore. The decision to make ChatIQ an open-source tool was made to ensure that users have control over their data and do not need to store sensitive information externally. However, it is still advised to exercise caution when inviting the bot to highly sensitive channels, as conversations in those channels will be stored. It is recommended to avoid sharing confidential or sensitive information in channels where the bot is invited.\n\n## Tips\n\n### Debugging\n\nIf you're encountering issues with the chatbot, you can modify the log level by setting the corresponding environment variables.\n\nTo modify the log level, you can pass the `LOG_LEVEL` environment variable when running the services with Docker Compose:\n\n```sh\nLOG_LEVEL=debug docker-compose up\n```\n\nThis will override the default log level and set it to `debug`. You can replace `debug` with any desired log level.\n\n### Tracing\n\nIf you want to trace the LangChain runs by the chatbot, you can use LangChain server, which is already configured with Docker Compose. After running `docker compose up`, you can access `http://localhost:4173/` to see the traced chains.\n\n## License\n\nThis project is licensed under the GPLv3 License. See [LICENSE](https://github.com/yujiosaka/ChatIQ/blob/main/LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyujiosaka%2Fchatiq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyujiosaka%2Fchatiq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyujiosaka%2Fchatiq/lists"}