![cover](https://raw.githubusercontent.com/LlmKira/.github/main/llmbot/project_cover.png)
------------------
<p align="center">
<a href="https://hub.docker.com/repository/docker/sudoskys/llmbot/general">
<img src="https://img.shields.io/docker/pulls/sudoskys/llmbot" alt="docker">
</a>
<a href="https://badge.fury.io/py/llmkira">
<img src="https://badge.fury.io/py/llmkira.svg" alt="docker workflow">
</a>
<br />
<a href="https://t.me/Openai_LLM">
<img src="https://img.shields.io/badge/Join-Telegram-blue" alt="telegram">
</a>
<a href="https://discord.gg/6QHNdwhdE5">
<img src="https://img.shields.io/badge/Join-Discord-blue" alt="discord">
</a>
<br/>
<a href="https://raw.githubusercontent.com/llmkira/openaibot/main/LICENSE">
<img src="https://img.shields.io/github/license/llmkira/openaibot" alt="license">
</a>
<a href="https://hub.docker.com/repository/docker/sudoskys/llmbot/builds">
<img src="https://img.shields.io/docker/v/sudoskys/llmbot" alt="docker build">
</a>
</p>
<p align="center">
<a href="https://llmkira.github.io/Docs/">🍩 Deploy Docs</a>
&
<a href="https://llmkira.github.io/Docs/dev/basic">🧀 Dev Docs</a>
&
<a href=".github/CONTRIBUTING.md">🤝 Contribute</a>
</p>
> Don't hesitate to Star ⭐️, Issue 📝, and PR 🛠️
> Python>=3.9
This project uses the ToolCall feature.
It integrates a message queuing and snapshot system, offering plugin mechanisms and authentication prior to plugin
execution.
The bot adheres to the **Openai Format Schema**. Please adapt using [gateway](https://github.com/Portkey-AI/gateway)
or [one-api](https://github.com/songquanpeng/one-api) independently.
| Demo | Vision With Voice | Code Interpreter |
|-------------------------------------------------------------------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------|
| ![sticker](https://github.com/LlmKira/Openaibot/raw/main/docs/chain_chat.gif) | ![vision](https://github.com/LlmKira/Openaibot/raw/main/docs/vision.gif) | ![code](https://github.com/LlmKira/Openaibot/raw/main/docs/code_interpreter_func.gif) |
## 🔨 Roadmap
> The program has iterated to its fourth generation.
- [x] Removal of legacy code
- [x] Deletion of metric system
- [x] Deletion of model selection system, unified to OpenAI Schema
- [x] Implementation of a more robust plugin system
- [x] Project structure simplification
- [x] Elimination of the Provider system
- [x] Hook support
- [x] Access to TTS
- [x] Add standalone support for gpt-4-turbo and vision
- [ ] Add LLM reference support to the plugin environment. (extract && search in text)
## 📦 Features
- 🍪 A comprehensive plugin development ecosystem, adopting a classic design, and seamless integration with plugins
through `pip` installation
- 📝 Message system with no time or sender constraints, offering fully decoupled logics
- 📬 Offers Login via a URL mechanism, providing a flexible and expandable authentication development solution
- 🍰 Empowers users to authorize plugin execution. Users can configure plugin environment variables at their discretion
- 📦 Support for plugins to access files
- 🍟 Multi-platform support – extend new platforms by inheriting the base class
- 🍔 Plugins can determine their appearance in new sessions dynamically, preventing performance degradation despite large
amounts of plugins
### 🍔 Login Modes
- `Login via url`: Use `/login <a token>$<something like https://provider.com/login>` to Login. The program posts the token to the interface to
retrieve configuration
information, [how to develop this](https://github.com/LlmKira/Openaibot/blob/81eddbff0f136697d5ad6e13ee1a7477b26624ed/app/components/credential.py#L20).
- `Login`: Use `/login https://<api endpoint>/v1$<api key>$<the model>$<tool model such as gpt-3.5-turbo>` to login
### 🧀 Plugin Can Do More
| Sticker Converter | Timer Function(built-in) |
|-------------------------------------|---------------------------------|
| ![sticker](./docs/sticker_func.gif) | ![timer](./docs/timer_func.gif) |
### 🎬 Platform Support
| Platform | Support | File System | Remarks |
|----------|---------|-------------|----------------------------------------|
| Telegram | ✅ | ✅ | |
| Discord | ✅ | ✅ | |
| Kook | ✅ | ✅ | Does not support `triggering by reply` |
| Slack | ✅ | ✅ | Does not support `triggering by reply` |
| Line | ❌ | | |
| QQ | ❌ | | |
| Wechat | ❌ | | |
| Twitter | ❌ | | |
| Matrix | ❌ | | |
| IRC | ❌ | | |
| ... | | | Create Issue/PR |
## 📦 Quick Start
Refer to the [🧀 Deployment Document](https://llmkira.github.io/Docs/) for more information.
### 📦 One-click Deployment
If you are using a brand-new server, you can use the following shell to automatically install this project.
```shell
curl -sSL https://raw.githubusercontent.com/LLMKira/Openaibot/main/deploy.sh | bash
```
### 📦 Manual Installation
```shell
# Install Voice dependencies
apt install ffmpeg
# Install RabbitMQ
docker pull rabbitmq:3.10-management
docker run -d -p 5672:5672 -p 15672:15672 \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=8a8a8a \
--hostname myRabbit \
--name rabbitmq \
rabbitmq:3.10-management
docker ps -l
# Install Project
git clone https://github.com/LlmKira/Openaibot/
cd Openaibot
pip install pdm
pdm install -G bot
cp .env.exp .env && nano .env
# Test
pdm run python3 start_sender.py
pdm run python3 start_receiver.py
# Host
apt install npm
npm install pm2 -g
pm2 start pm2.json
```
> **Be sure to change the default password for the command, or disable open ports to prevent the database from being
scanned and attacked.**
### 🥣 Docker
Build Hub: [sudoskys/llmbot](https://hub.docker.com/repository/docker/sudoskys/llmbot/general)
> Note that if you run this project using Docker, you will start Redis, MongoDB, and RabbitMQ. But if you're running
> locally, just RabbitMQ
#### Manual Docker-compose Installation
```shell
git clone https://github.com/LlmKira/Openaibot.git
cd Openaibot
cp .env.exp .env&&nano .env
docker-compose -f docker-compose.yml up -d
```
The Docker configuration file `docker-compose.yml` contains all databases. In fact, Redis and MongoDB are not required.
You can remove these databases yourself and use the local file system.
Update image using `docker-compose pull`.
Use `docker exec -it llmbot /bin/bash` to view Shell in Docker, enter `exit` to exit.
## 🍪 Slash Commands
```shell
clear - Deletes chat records
help - Displays documentation
chat - Conversation
task - Use a function to converse
ask - Disable function-based conversations
tool - Lists all functions
login - Login
auth - Authorize a function
env - Environment variables of the function
```
## 💻 How to Develop Plugins?
Refer to the example plugins in the `plugins` directory and
the [🧀 Plugin Development Document](https://llmkira.github.io/Docs/dev/basic) for plugin development documentation.
### Hooks
Hooks control the EventMessage in sender and receiver. For example, we have `voice_hook` in built-in hooks.
you can enable it by setting `VOICE_REPLY_ME=true` in `.env`.
```shell
/env VOICE_REPLY_ME=yes
# must
/env REECHO_VOICE_KEY=<key in dev.reecho.ai>
# not must
```
use `/env VOICE_REPLY_ME=NONE` to disable this env.
check the source code in `llmkira/extra/voice_hook.py`, learn to write your own hooks.
## 🧀 Sponsor
[![sponsor](./.github/sponsor_ohmygpt.png)](https://www.ohmygpt.com)
## 📜 Notice
> This project, named OpenAiBot, signifying "Open Artificial Intelligence Robot", is not officially affiliated with
> OpenAI.
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsudoskys%2FOpenaibot.svg?type=small)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsudoskys%2FOpenaibot?ref=badge_small)
Raw data
{
"_id": null,
"home_page": "https://llmkira.github.io/Docs/",
"name": "llmkira",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.12,>=3.9",
"maintainer_email": null,
"keywords": "llmbot, llmkira, openai, chatgpt, llm",
"author": null,
"author_email": "sudoskys <me@dianas.cyou>, llmkira <me@dianas.cyou>",
"download_url": "https://files.pythonhosted.org/packages/9d/3f/3a52a56dba60412852e2373c09f27e51f31b0cf6f21d9a42f4cda61e0bb9/llmkira-1.0.5.tar.gz",
"platform": null,
"description": "![cover](https://raw.githubusercontent.com/LlmKira/.github/main/llmbot/project_cover.png)\n\n------------------\n\n<p align=\"center\">\n<a href=\"https://hub.docker.com/repository/docker/sudoskys/llmbot/general\">\n <img src=\"https://img.shields.io/docker/pulls/sudoskys/llmbot\" alt=\"docker\">\n</a>\n<a href=\"https://badge.fury.io/py/llmkira\">\n <img src=\"https://badge.fury.io/py/llmkira.svg\" alt=\"docker workflow\">\n</a>\n<br />\n<a href=\"https://t.me/Openai_LLM\">\n <img src=\"https://img.shields.io/badge/Join-Telegram-blue\" alt=\"telegram\">\n</a>\n<a href=\"https://discord.gg/6QHNdwhdE5\">\n <img src=\"https://img.shields.io/badge/Join-Discord-blue\" alt=\"discord\">\n</a>\n<br/>\n<a href=\"https://raw.githubusercontent.com/llmkira/openaibot/main/LICENSE\">\n <img src=\"https://img.shields.io/github/license/llmkira/openaibot\" alt=\"license\">\n</a>\n<a href=\"https://hub.docker.com/repository/docker/sudoskys/llmbot/builds\">\n <img src=\"https://img.shields.io/docker/v/sudoskys/llmbot\" alt=\"docker build\">\n</a>\n</p>\n\n<p align=\"center\">\n <a href=\"https://llmkira.github.io/Docs/\">\ud83c\udf69 Deploy Docs</a>\n &\n <a href=\"https://llmkira.github.io/Docs/dev/basic\">\ud83e\uddc0 Dev Docs</a>\n &\n <a href=\".github/CONTRIBUTING.md\">\ud83e\udd1d Contribute</a>\n</p>\n\n> Don't hesitate to Star \u2b50\ufe0f, Issue \ud83d\udcdd, and PR \ud83d\udee0\ufe0f\n\n> Python>=3.9\n\nThis project uses the ToolCall feature.\n\nIt integrates a message queuing and snapshot system, offering plugin mechanisms and authentication prior to plugin\nexecution.\n\nThe bot adheres to the **Openai Format Schema**. Please adapt using [gateway](https://github.com/Portkey-AI/gateway)\nor [one-api](https://github.com/songquanpeng/one-api) independently.\n\n| Demo | Vision With Voice | Code Interpreter |\n|-------------------------------------------------------------------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------|\n| ![sticker](https://github.com/LlmKira/Openaibot/raw/main/docs/chain_chat.gif) | ![vision](https://github.com/LlmKira/Openaibot/raw/main/docs/vision.gif) | ![code](https://github.com/LlmKira/Openaibot/raw/main/docs/code_interpreter_func.gif) |\n\n## \ud83d\udd28 Roadmap\n\n> The program has iterated to its fourth generation.\n\n- [x] Removal of legacy code\n- [x] Deletion of metric system\n- [x] Deletion of model selection system, unified to OpenAI Schema\n- [x] Implementation of a more robust plugin system\n- [x] Project structure simplification\n- [x] Elimination of the Provider system\n- [x] Hook support\n- [x] Access to TTS\n- [x] Add standalone support for gpt-4-turbo and vision\n- [ ] Add LLM reference support to the plugin environment. (extract && search in text)\n\n## \ud83d\udce6 Features\n\n- \ud83c\udf6a A comprehensive plugin development ecosystem, adopting a classic design, and seamless integration with plugins\n through `pip` installation\n- \ud83d\udcdd Message system with no time or sender constraints, offering fully decoupled logics\n- \ud83d\udcec Offers Login via a URL mechanism, providing a flexible and expandable authentication development solution\n- \ud83c\udf70 Empowers users to authorize plugin execution. Users can configure plugin environment variables at their discretion\n- \ud83d\udce6 Support for plugins to access files\n- \ud83c\udf5f Multi-platform support \u2013 extend new platforms by inheriting the base class\n- \ud83c\udf54 Plugins can determine their appearance in new sessions dynamically, preventing performance degradation despite large\n amounts of plugins\n\n### \ud83c\udf54 Login Modes\n\n- `Login via url`: Use `/login <a token>$<something like https://provider.com/login>` to Login. The program posts the token to the interface to\n retrieve configuration\n information, [how to develop this](https://github.com/LlmKira/Openaibot/blob/81eddbff0f136697d5ad6e13ee1a7477b26624ed/app/components/credential.py#L20).\n- `Login`: Use `/login https://<api endpoint>/v1$<api key>$<the model>$<tool model such as gpt-3.5-turbo>` to login\n\n### \ud83e\uddc0 Plugin Can Do More\n\n| Sticker Converter | Timer Function(built-in) |\n|-------------------------------------|---------------------------------|\n| ![sticker](./docs/sticker_func.gif) | ![timer](./docs/timer_func.gif) |\n\n### \ud83c\udfac Platform Support\n\n| Platform | Support | File System | Remarks |\n|----------|---------|-------------|----------------------------------------|\n| Telegram | \u2705 | \u2705 | |\n| Discord | \u2705 | \u2705 | |\n| Kook | \u2705 | \u2705 | Does not support `triggering by reply` |\n| Slack | \u2705 | \u2705 | Does not support `triggering by reply` |\n| Line | \u274c | | |\n| QQ | \u274c | | |\n| Wechat | \u274c | | |\n| Twitter | \u274c | | |\n| Matrix | \u274c | | |\n| IRC | \u274c | | |\n| ... | | | Create Issue/PR |\n\n## \ud83d\udce6 Quick Start\n\nRefer to the [\ud83e\uddc0 Deployment Document](https://llmkira.github.io/Docs/) for more information.\n\n### \ud83d\udce6 One-click Deployment\n\nIf you are using a brand-new server, you can use the following shell to automatically install this project.\n\n```shell\ncurl -sSL https://raw.githubusercontent.com/LLMKira/Openaibot/main/deploy.sh | bash\n```\n\n### \ud83d\udce6 Manual Installation\n\n```shell\n# Install Voice dependencies\napt install ffmpeg\n# Install RabbitMQ\ndocker pull rabbitmq:3.10-management\ndocker run -d -p 5672:5672 -p 15672:15672 \\\n -e RABBITMQ_DEFAULT_USER=admin \\\n -e RABBITMQ_DEFAULT_PASS=8a8a8a \\\n --hostname myRabbit \\\n --name rabbitmq \\\n rabbitmq:3.10-management\ndocker ps -l\n# Install Project\ngit clone https://github.com/LlmKira/Openaibot/\ncd Openaibot\npip install pdm\npdm install -G bot\ncp .env.exp .env && nano .env\n# Test\npdm run python3 start_sender.py\npdm run python3 start_receiver.py\n# Host\napt install npm\nnpm install pm2 -g\npm2 start pm2.json\n```\n\n> **Be sure to change the default password for the command, or disable open ports to prevent the database from being\nscanned and attacked.**\n\n### \ud83e\udd63 Docker\n\nBuild Hub: [sudoskys/llmbot](https://hub.docker.com/repository/docker/sudoskys/llmbot/general)\n\n> Note that if you run this project using Docker, you will start Redis, MongoDB, and RabbitMQ. But if you're running\n> locally, just RabbitMQ\n\n#### Manual Docker-compose Installation\n\n```shell\ngit clone https://github.com/LlmKira/Openaibot.git\ncd Openaibot\ncp .env.exp .env&&nano .env\ndocker-compose -f docker-compose.yml up -d\n```\n\nThe Docker configuration file `docker-compose.yml` contains all databases. In fact, Redis and MongoDB are not required.\nYou can remove these databases yourself and use the local file system.\n\nUpdate image using `docker-compose pull`.\n\nUse `docker exec -it llmbot /bin/bash` to view Shell in Docker, enter `exit` to exit.\n\n## \ud83c\udf6a Slash Commands\n\n```shell\nclear - Deletes chat records\nhelp - Displays documentation\nchat - Conversation\ntask - Use a function to converse\nask - Disable function-based conversations\ntool - Lists all functions\nlogin - Login\nauth - Authorize a function\nenv - Environment variables of the function\n```\n\n## \ud83d\udcbb How to Develop Plugins?\n\nRefer to the example plugins in the `plugins` directory and\nthe [\ud83e\uddc0 Plugin Development Document](https://llmkira.github.io/Docs/dev/basic) for plugin development documentation.\n\n### Hooks\n\nHooks control the EventMessage in sender and receiver. For example, we have `voice_hook` in built-in hooks.\n\nyou can enable it by setting `VOICE_REPLY_ME=true` in `.env`.\n\n```shell\n/env VOICE_REPLY_ME=yes\n# must\n\n/env REECHO_VOICE_KEY=<key in dev.reecho.ai>\n# not must\n```\n\nuse `/env VOICE_REPLY_ME=NONE` to disable this env.\n\ncheck the source code in `llmkira/extra/voice_hook.py`, learn to write your own hooks.\n\n## \ud83e\uddc0 Sponsor\n\n[![sponsor](./.github/sponsor_ohmygpt.png)](https://www.ohmygpt.com)\n\n## \ud83d\udcdc Notice\n\n> This project, named OpenAiBot, signifying \"Open Artificial Intelligence Robot\", is not officially affiliated with\n> OpenAI.\n\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fsudoskys%2FOpenaibot.svg?type=small)](https://app.fossa.com/projects/git%2Bgithub.com%2Fsudoskys%2FOpenaibot?ref=badge_small)\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A chain message bot based on OpenAI",
"version": "1.0.5",
"project_urls": {
"Homepage": "https://llmkira.github.io/Docs/",
"Repository": "https://github.com/LlmKira/Openaibot"
},
"split_keywords": [
"llmbot",
" llmkira",
" openai",
" chatgpt",
" llm"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d99f8fe4c3d4f8bb4f7f1a6521e68fd47bc9accbf403a3ecd176ebcbee2bde6c",
"md5": "3ab6ad39cc7b7fada19dc5549f897f3f",
"sha256": "66cb5968b3240d2b1f418d3fb7234bfe0a64b944f777854cf95436111de4ae1c"
},
"downloads": -1,
"filename": "llmkira-1.0.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3ab6ad39cc7b7fada19dc5549f897f3f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.12,>=3.9",
"size": 76016,
"upload_time": "2024-04-29T08:53:58",
"upload_time_iso_8601": "2024-04-29T08:53:58.684599Z",
"url": "https://files.pythonhosted.org/packages/d9/9f/8fe4c3d4f8bb4f7f1a6521e68fd47bc9accbf403a3ecd176ebcbee2bde6c/llmkira-1.0.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9d3f3a52a56dba60412852e2373c09f27e51f31b0cf6f21d9a42f4cda61e0bb9",
"md5": "b598e27bd227a630dd5d7cf739b36b97",
"sha256": "a8d7f78184a45b1182ed7c840f093e1341f04c49b10b6a50dd02d2a9fd7c0d89"
},
"downloads": -1,
"filename": "llmkira-1.0.5.tar.gz",
"has_sig": false,
"md5_digest": "b598e27bd227a630dd5d7cf739b36b97",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.12,>=3.9",
"size": 57842,
"upload_time": "2024-04-29T08:54:00",
"upload_time_iso_8601": "2024-04-29T08:54:00.853689Z",
"url": "https://files.pythonhosted.org/packages/9d/3f/3a52a56dba60412852e2373c09f27e51f31b0cf6f21d9a42f4cda61e0bb9/llmkira-1.0.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-29 08:54:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "LlmKira",
"github_project": "Openaibot",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "llmkira"
}