fix system prompt

This commit is contained in:
Cyberes 2023-03-18 13:54:13 -06:00
parent db011cc992
commit a5cabe767d
3 changed files with 15 additions and 18 deletions

21
main.py
View File

@ -67,7 +67,7 @@ def retry(msg=None):
async def main(): async def main():
# Logging in with a new device each time seems to fix encryption errors # Logging in with a new device each time seems to fix encryption errors
device_id = str(uuid4()) device_id = config_data['bot_auth'].get('device_id', str(uuid4()))
matrix_helper = MatrixNioGPTHelper( matrix_helper = MatrixNioGPTHelper(
auth_file=Path(config_data['bot_auth']['store_path'], 'bot_auth.json'), auth_file=Path(config_data['bot_auth']['store_path'], 'bot_auth.json'),
@ -75,7 +75,7 @@ async def main():
passwd=config_data['bot_auth']['password'], passwd=config_data['bot_auth']['password'],
homeserver=config_data['bot_auth']['homeserver'], homeserver=config_data['bot_auth']['homeserver'],
store_path=config_data['bot_auth']['store_path'], store_path=config_data['bot_auth']['store_path'],
device_id=device_id # config_data['bot_auth'].get('device_id') device_id=device_id,
) )
client = matrix_helper.client client = matrix_helper.client
@ -115,7 +115,7 @@ async def main():
return False return False
# Login succeeded! # Login succeeded!
logger.info(f"Logged in as {client.user_id}") logger.info(f"Logged in as {client.user_id} using device {device_id}.")
if config_data.get('autojoin_rooms'): if config_data.get('autojoin_rooms'):
for room in config_data.get('autojoin_rooms'): for room in config_data.get('autojoin_rooms'):
r = await client.join(room) r = await client.join(room)
@ -124,14 +124,15 @@ async def main():
time.sleep(1.5) time.sleep(1.5)
# Log out old devices to keep the session clean # Log out old devices to keep the session clean
devices = (await client.devices()).devices devices = list((await client.devices()).devices)
device_list = [x.id for x in devices] device_list = [x.id for x in devices]
device_list.remove(device_id) if device_id in device_list:
x = await client.delete_devices(device_list, { device_list.remove(device_id)
"type": "m.login.password", x = await client.delete_devices(device_list, {
"user": config_data['bot_auth']['username'], "type": "m.login.password",
"password": config_data['bot_auth']['password'] "user": config_data['bot_auth']['username'],
}) "password": config_data['bot_auth']['password']
})
await client.sync_forever(timeout=10000, full_state=True) await client.sync_forever(timeout=10000, full_state=True)
except (ClientConnectionError, ServerDisconnectedError): except (ClientConnectionError, ServerDisconnectedError):

View File

@ -84,10 +84,9 @@ class Callbacks:
await process_chat(self.client, room, event, api_data, self.store, self.openai, thread_root_id=thread_content[0].event_id, system_prompt=self.system_prompt) await process_chat(self.client, room, event, api_data, self.store, self.openai, thread_root_id=thread_content[0].event_id, system_prompt=self.system_prompt)
return return
elif msg.startswith(f'{self.command_prefix} ') or room.member_count == 2: elif msg.startswith(f'{self.command_prefix} ') or room.member_count == 2:
# Otherwise if this is in a 1-1 with the bot or features a command prefix, # Otherwise if this is in a 1-1 with the bot or features a command prefix, treat it as a command.
# treat it as a command
msg = event.body if not event.body.startswith(self.command_prefix) else event.body[len(self.command_prefix):].strip() # Remove the command prefix msg = event.body if not event.body.startswith(self.command_prefix) else event.body[len(self.command_prefix):].strip() # Remove the command prefix
command = Command(self.client, self.store, msg, room, event, self.openai, self.reply_in_thread) command = Command(self.client, self.store, msg, room, event, self.openai, self.reply_in_thread, system_prompt=self.system_prompt)
await command.process() await command.process()
async def invite(self, room: MatrixRoom, event: InviteMemberEvent) -> None: async def invite(self, room: MatrixRoom, event: InviteMemberEvent) -> None:
@ -190,10 +189,8 @@ class Callbacks:
# f"it (your reminders will NOT be deleted, but the bot may respond to existing " # f"it (your reminders will NOT be deleted, but the bot may respond to existing "
# f"commands a second time).") # f"commands a second time).")
red_x_and_lock_emoji = "❌ 🔐" if event.server_timestamp > self.startup_ts:
await react_to_event(self.client, room.room_id, event.event_id, "❌ 🔐")
# React to the undecryptable event with some emoji
await react_to_event(self.client, room.room_id, event.event_id, red_x_and_lock_emoji, )
async def unknown(self, room: MatrixRoom, event: UnknownEvent) -> None: async def unknown(self, room: MatrixRoom, event: UnknownEvent) -> None:
"""Callback for when an event with a type that is unknown to matrix-nio is received. """Callback for when an event with a type that is unknown to matrix-nio is received.

View File

@ -205,7 +205,6 @@ async def process_chat(client, room, event, command, store, openai, thread_root_
messages=messages, messages=messages,
temperature=0, temperature=0,
) )
logger.debug(response)
text_response = response["choices"][0]["message"]["content"].strip().strip('\n') text_response = response["choices"][0]["message"]["content"].strip().strip('\n')
logger.info(f'Reply to {event.event_id} --> "{command}" and bot responded with "{text_response}"') logger.info(f'Reply to {event.event_id} --> "{command}" and bot responded with "{text_response}"')
resp = await send_text_to_room(client, room.room_id, text_response, reply_to_event_id=event.event_id, thread=True, thread_root_id=thread_root_id if thread_root_id else event.event_id) resp = await send_text_to_room(client, room.room_id, text_response, reply_to_event_id=event.event_id, thread=True, thread_root_id=thread_root_id if thread_root_id else event.event_id)