-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdiscord_chat.py
61 lines (48 loc) · 1.66 KB
/
discord_chat.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import asyncio
import json
import os
import pickle
from os import path
import openai
from dotenv import load_dotenv
from gptme.adapters import DiscordAdapter
from gptme.assistant import Assistant
from gptme.conversation import Message
from gptme.text_styler import TextStyler
load_dotenv(dotenv_path=".env")
openai.api_key = os.environ["OPENAI_KEY"]
with open("personality.txt", encoding="utf8") as personality_file:
personality = personality_file.read()
print("Loaded personality.")
with open(os.environ["EMBEDDINGS_FILE"], "rb") as embeddings_file:
embeddings, transcript = pickle.load(embeddings_file)
print("Loaded memories.")
with open(os.environ["STYLER_FILE"], "r", encoding="utf8") as style_file:
style_json = json.load(style_file)
text_styler = TextStyler()
text_styler.style = style_json["style"]
print("Loaded styler.")
if path.exists(".memories/conversation.json"):
with open(".memories/conversation.json", encoding="utf8") as conversation_file:
past_conversation = json.load(conversation_file)
past_conversation = [
Message(content=message["content"], role=message["role"])
for message in past_conversation
]
print("Loaded past conversation.")
else:
past_conversation = []
assistant = Assistant(
embeddings=embeddings,
memories=transcript,
personality=personality,
name=os.environ["ASSISTANT_NAME"],
text_styler=text_styler,
messages=past_conversation,
)
print("Prepared assistant.")
discord = DiscordAdapter(
assistant=assistant, channel_id=int(os.environ["DISCORD_CHANNEL"])
)
print("Prepared adapter.")
discord.run(os.environ["DISCORD_TOKEN"])