Added chatgpt
This commit is contained in:
parent
b819f15b63
commit
45ac9e38f8
@ -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
59
bot.py
@ -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()
|
||||
|
@ -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")
|
||||
|
Loading…
x
Reference in New Issue
Block a user