https://github.com/flyingfathead/ircbot-openai-api
IRC (intenet relay chat) chatroom bot for OpenAI API (GPT-3.5 / GPT-4)
https://github.com/flyingfathead/ircbot-openai-api
chatbot-application chatbot-framework gpt-3 gpt-3-5 gpt-3-5-turbo gpt-3-5-turbo-api gpt-4 gpt-4-api gpt4 irc irc-bot irc-bot-framework irc-channel irc-chat openai openai-api python
Last synced: 5 months ago
JSON representation
IRC (intenet relay chat) chatroom bot for OpenAI API (GPT-3.5 / GPT-4)
- Host: GitHub
- URL: https://github.com/flyingfathead/ircbot-openai-api
- Owner: FlyingFathead
- Created: 2023-08-01T01:56:50.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-04T13:22:03.000Z (over 1 year ago)
- Last Synced: 2025-01-06T21:40:11.366Z (5 months ago)
- Topics: chatbot-application, chatbot-framework, gpt-3, gpt-3-5, gpt-3-5-turbo, gpt-3-5-turbo-api, gpt-4, gpt-4-api, gpt4, irc, irc-bot, irc-bot-framework, irc-channel, irc-chat, openai, openai-api, python
- Language: Python
- Homepage:
- Size: 85.9 KB
- Stars: 3
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# IRC Bot for OpenAI-API
A Python-based simple IRC (Intenet Relay Chat) chatroom bot that uses OpenAI API (i.e. GPT-3.5 / GPT-4... ).Runs on `openai` library version `1.6.1` (up to date in January 2024!)
Wanna shove that GPT-3.5 or GPT-4 OpenAI API into good'ole IRC as a chatbot? Now it's possible!
# What's new
- `v0.32.2` (Jan 4, 2024) Lowercase conversion flag & other small fixes.
- `v0.32`: (Jan 4, 2024) OpenAI API calls have been updated to use the `1.6.1` version of `openai` pip library. Multiple smaller bugfixes.
- `v0.31`: (Aug 3, 2023) Bot now takes in admin messages as `/msg bot !command ` if it needs to be adjusted on the fly. Acknowledgements of bot commands come into the private msg's if you're an admin.
- `v0.29`: (Aug 3, 2023) Bot now supports joining password protected channels (i.e. to prevent abuse).
- `v0.28`: (Aug 3, 2023) all config now handled via `config.json`, edit that to configure the bot. Language settings also apply to the bot's output language, so no need to change everything manually anymore. New variable, `ANSWER_PROBABILITY` sets the likelihood for the bot answering when in public mode.
- `v0.25`: (Aug 3, 2023) Added some increased parsing functionalities, such as utf-8/unciode emoji to ASCII conversion tables (where utf8-emojis are not supported or wanted) and a lowercase converter to make the bot "fit" better into an IRC channel's output style.New functions:
```
# Replace unicode emojis with ASCII? True = yes, False = no
USE_EMOJI_DICT = True
```
```
# Convert the first character of each sentence to lowercase? True = yes, False = no`
CONVERT_TO_LOWER = True
```
# Prerequisites
- At least Python 3.8 or later, probably.
- Tested and running OK on Python `3.9.16` and `3.10.12`.
- `openai`, `jaraco.stream` and `irc` PyPi packages, tested to work on these versions:
```
openai==1.6.1
jaraco.stream==3.0.3
irc==20.3.1
```
- You can install all of the above with `pip install -r requirements.txt` after cloning the repo.
- You will also need an OpenAI API key from [openai.com](https://openai.com).# Install
1. Clone the repository: `git clone https://github.com/FlyingFathead/IRCBot-OpenAI-API`
2. Switch to the directory: `cd IRCBot-OpenAI-API`
3. Install the required packages: `pip install -r requirements.txt`
4. Crank your OpenAI access token into either an environment variable or into `api_token.txt` within the same directory.
5. Edit the `config.json` for your bot configuration. Set up things such as admin nicks, your bot's details, other options etc. Change whatever you deem necessary.
6. Launch `python IRCbot-OpenAI-API.py` and off you go!
7. Enjoy!The bot has a chat history memory that you can adjust in `config.json`, the `RESPOND_TO_ALL` switch set to `true` makes the bot answer to everyone on the channel, with it set to `false`, the bot only answers to people "talking to it" (with lines starting with `:`). Rate limit adjustments are extremely handy for that, use either `!ratelimit ` on the channel or as admin, `/msg !rametlimit `.
More options & functionalities, such as token counting and improved rate limiting + fallback methods are WIP.
# Bot commands
`!ratelimit `: This command sets the rate limit for the bot's responses. The parameter specifies the minimum number of seconds that should pass between each response. Example usage: !ratelimit 60 would set the rate limit to one response per minute. This command can only be used by admin users, as specified in the `ADMIN_NICKNAMES` variable.
`!mute `: This command mutes the bot for a specified number of minutes. The parameter specifies how long the bot should remain silent. Example usage: !mute 10 would mute the bot for 10 minutes. This command can only be used by admin users, as specified in the `ADMIN_NICKNAMES` variable.
`!goaway`: This command causes the bot to leave the chatroom. This command can only be used by admin users, as specified in the `ADMIN_NICKNAMES` variable.The bot is programmed to respond to messages that start with its nickname, followed by a colon. For instance, if the bot's nickname is `ChatKeke`, it would respond to a message like `ChatKeke: Hello!`.
Please note that the bot will not respond if it is currently muted or if the rate limit has not yet expired.
By default, the bot uses either OpenAI's GPT-3-5 or GPT-4 model (user defined) to generate responses. It keeps a history of the chatroom's conversation to provide context for its responses. The number of past interactions that the bot remembers can be adjusted by changing the `MAX_PAST_INTERACTIONS` variable.
Enjoy!
---
Brought to you by [FlyingFathead](https://github.com/FlyingFathead) w/ ghostcode by ChaosWhisperer.Contact: flyingfathead <|> protonmail <|> com