You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.2 KiB
39 lines
1.2 KiB
import redis
|
|
import json
|
|
import time
|
|
|
|
# Set up Redis connection
|
|
r = redis.Redis(host='localhost', port=6379, db=0)
|
|
|
|
def main(interpreter):
|
|
|
|
while True:
|
|
|
|
# Check 10x a second for new messages
|
|
message = None
|
|
while message is None:
|
|
message = r.lpop('to_core')
|
|
time.sleep(0.1)
|
|
|
|
# Custom stop message will halt us
|
|
if message.get("content") and message.get("content").lower().strip(".,!") == "stop":
|
|
continue
|
|
|
|
# Load, append, and save conversation history
|
|
with open("conversations/user.json", "r") as file:
|
|
messages = json.load(file)
|
|
messages.append(message)
|
|
with open("conversations/user.json", "w") as file:
|
|
json.dump(messages, file)
|
|
|
|
for chunk in interpreter.chat(messages):
|
|
|
|
# Send it to the interface
|
|
r.rpush('to_interface', chunk)
|
|
|
|
# If we have a new message, save our progress and go back to the top
|
|
if r.llen('to_main') > 0:
|
|
with open("conversations/user.json", "w") as file:
|
|
json.dump(interpreter.messages, file)
|
|
break
|