Added chatgpt

This commit is contained in:
Roger Gonzalez 2023-04-09 10:06:28 -03:00
parent b819f15b63
commit 45ac9e38f8
Signed by: rogs
GPG Key ID: C7ECE9C6C36EC2E6
3 changed files with 65 additions and 0 deletions

View File

@ -2,6 +2,7 @@ MATRIX_URL="https://my-matrix-url"
MATRIX_USER="@botusername:my.server"
MATRIX_PASSWORD="mybotpassword"
MATRIX_USERNAME="myownusername"
MATRIX_USERNAMES="myownusername,username2"
BANK_ACCOUNT_NUMBERS="bankaccount1,bankaccount2"
BROU_USERNAME="brou_username"
BROU_PASSWORD="mybroupassword69420"
@ -20,3 +21,5 @@ ORG_LINKS_FILENAME="my/links/filename.org"
PROMETEO_API_KEY="myprometeoapikey"
PROMETEO_URL='https://myprometeourl.com'
OPEN_AI_API_KEY="my-openai-key"

59
bot.py
View File

@ -14,13 +14,26 @@ from settings import (
MATRIX_URL,
MATRIX_USER,
MATRIX_USERNAME,
MATRIX_USERNAMES,
OPEN_AI_API_KEY
)
import openai
openai.api_key = OPEN_AI_API_KEY
creds = botlib.Creds(MATRIX_URL, MATRIX_USER, MATRIX_PASSWORD)
bot = botlib.Bot(creds)
PREFIX = "!"
MATRIX_USERNAMES = MATRIX_USERNAMES.split(",")
starting_prompt = {"role": "system", "content": "You are a very helpful chatbot"}
CONVERSATION = {}
for username in MATRIX_USERNAMES:
CONVERSATION[username] = [starting_prompt]
@bot.listener.on_message_event
async def todo(room, message):
@ -176,4 +189,50 @@ async def save_link(room, message):
await bot.api.send_text_message(room_id, "Link added!")
@bot.listener.on_message_event
async def chatgpt(room, message):
"""
Function that starts a conversation with chatgpt
Usage:
user: !chatgpt Hello!
bot: [prints chatgpt response]
"""
match = botlib.MessageMatch(room, message, bot, PREFIX)
message_content = message.body
if match.is_not_from_this_bot() and not match.prefix() and not validators.url(message_content):
user = message.sender
if user in MATRIX_USERNAMES:
personal_conversation = CONVERSATION[user]
room_id = room.room_id
print(f"Room: {room_id}, User: {user}, Message: chatgpt")
def format_message(message):
return {"role": "user", "content": message}
personal_conversation.append(format_message(message_content))
completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=personal_conversation)
personal_conversation.append(completion.choices[0].message)
await bot.api.send_text_message(room_id, completion.choices[0].message.content)
@bot.listener.on_message_event
async def reset_chatgpt(room, message):
"""
Function that resets a conversation with chatgpt
Usage:
user: !reset
bot: Conversation reset!
"""
match = botlib.MessageMatch(room, message, bot, PREFIX)
if match.is_not_from_this_bot() and match.prefix() and match.command("reset"):
user = message.sender
if user in MATRIX_USERNAMES:
CONVERSATION[user] = [starting_prompt]
room_id = room.room_id
await bot.api.send_text_message(room_id, "Conversation reset!")
bot.run()

View File

@ -8,6 +8,7 @@ MATRIX_URL = os.environ.get("MATRIX_URL")
MATRIX_USER = os.environ.get("MATRIX_USER")
MATRIX_PASSWORD = os.environ.get("MATRIX_PASSWORD")
MATRIX_USERNAME = os.environ.get("MATRIX_USERNAME")
MATRIX_USERNAMES = os.environ.get("MATRIX_USERNAMES")
BANK_ACCOUNT_NUMBERS = os.environ.get("BANK_ACCOUNT_NUMBERS").split(",")
@ -29,3 +30,5 @@ ORG_LINKS_FILENAME = f"{ORG_LOCATION}/{os.environ.get('ORG_LINKS_FILENAME')}"
PROMETEO_API_KEY = os.environ.get("PROMETEO_API_KEY")
PROMETEO_URL = os.environ.get("PROMETEO_URL")
OPEN_AI_API_KEY = os.environ.get("OPEN_AI_API_KEY")