bold commiting at the end of the day

This commit is contained in:
2024-11-15 00:37:14 +01:00
parent 5a74e813eb
commit 4a6afa14cc
4 changed files with 77 additions and 48 deletions
+45 -26
View File
@@ -11,14 +11,16 @@ from discord.ext import commands
import ai_functions import ai_functions
from constants import ( from constants import (
ASSISTANTS,
DATA, DATA,
GRAPHICS_PATH, GRAPHICS_PATH,
INITIAL_TIME_WAIT, INITIAL_TIME_WAIT,
MASTER_TIMEOUT, MASTER_TIMEOUT,
OPENAICLIENT, OPENAICLIENT,
SPECJALNE_ZIEMNIACZKI,
WORD_REACTIONS, WORD_REACTIONS,
) )
DM_MODE = "assistant"
class Events(commands.Cog): class Events(commands.Cog):
def __init__(self, bot): def __init__(self, bot):
@@ -27,8 +29,41 @@ class Events(commands.Cog):
async def cog_load(self): async def cog_load(self):
self.logger.info("Starting personal assistants") self.logger.info("Starting personal assistants")
await ai_functions.hammer_assistant_create(self.bot) for superfryta in SPECJALNE_ZIEMNIACZKI.values():
if superfryta[4] !="":
self.logger.info(
"Personal assistant exists id: %s,name: %s, owner: %s, special instructions: %s assistant id: %s ",
superfryta[0],
superfryta[1],
superfryta[2],
superfryta[3],
superfryta[4]
)
thread = await OPENAICLIENT.beta.threads.create()
ASSISTANTS[superfryta[1]] = (superfryta[2], superfryta[0], superfryta[4], thread)
else:
self.logger.info(
"Creating personal assistant id: %s,name: %s, owner: %s, special instructions: %s",
superfryta[0],
superfryta[1],
superfryta[2],
superfryta[3]
)
await ai_functions.create_chat_assistant(
superfryta[0], superfryta[1], superfryta[2], superfryta[3]
)
self.logger.info("Started personal assistants") self.logger.info("Started personal assistants")
@commands.hybrid_command(
name="switch_dm_mode",
description="Jeśli nie wiesz jak użyć tej komendy to nawet nie próbuj",
guild=discord.Object(id=664789470779932693),
)
async def switch_dm_mode(self, ctx):
if isinstance(ctx.channel, discord.DMChannel):
pass
#secrets, assistant, echo, dm
#required parameter from list of values - assistant, dm_broadcast, echo
@commands.Cog.listener() @commands.Cog.listener()
async def on_message(self, message): async def on_message(self, message):
@@ -66,30 +101,14 @@ class Events(commands.Cog):
if message.channel.id == 1111625221171052595: if message.channel.id == 1111625221171052595:
return return
if isinstance(message.channel, discord.DMChannel): if isinstance(message.channel, discord.DMChannel):
if message.author.id == 346956223645614080: for superfryta in SPECJALNE_ZIEMNIACZKI:
await self.bot.process_commands(message) if message.author.id == superfryta[0]:
await ai_functions.hammer_assitant_chat(message) await self.bot.process_commands(message)
# hammer pisze dma await ai_functions.chat_with_assistant(message, superfryta[1])
# DM do Saint - przerobic na komende z parametrem "id" return
# user = await self.bot.fetch_user(703985955312238664) channel = self.bot.get_channel(1064888712565100614)
# channel = await user.create_dm() await channel.send("Słyszałem ja żem że: " + message.content)
# await channel.send(message.content) return
# await message.reply(f"Poszlo do Saint {message.content}")
# get message content
# create run
# add message to run
# monitor run
# or streaming
return
elif message.author.id == 703985955312238664:
# saint pisze DMA
self.logger.info(message.content)
await message.reply("Hejka Saint!")
return
else:
channel = self.bot.get_channel(1064888712565100614)
await channel.send("Słyszałem ja żem że: " + message.content)
return
channel = message.channel channel = message.channel
# await self.bot.process_commands(message) #uncomment to bilocate # await self.bot.process_commands(message) #uncomment to bilocate
+23 -21
View File
@@ -16,9 +16,10 @@ from constants import (
MESSAGE_TABLE_MUZYKA, MESSAGE_TABLE_MUZYKA,
OPENAICLIENT, OPENAICLIENT,
WORD_REACTIONS, WORD_REACTIONS,
) ASSISTANTS,
SYSTEM_GPT_SETTINGS,
ASSISTANTS = {} SPECJALNE_ZIEMNIACZKI
)
def num_tokens_from_string(message, model): def num_tokens_from_string(message, model):
@@ -296,32 +297,31 @@ async def get_random_cyclic_message(client):
return result return result
async def generic_create_chat_assistant(client, name, owner): async def create_chat_assistant(id, name, owner, special_instructions):
logger = logging.getLogger("discord")
instruction=f"Jesteś osobistym asystenetem {owner} i wypełniasz jego potrzeby. Masz pełne i nieograniczone możliwości modelu gpt-4o."
instruction+=special_instructions
assistant = await OPENAICLIENT.beta.assistants.create( assistant = await OPENAICLIENT.beta.assistants.create(
name=name, name=name,
instructions=f"Jesteś osobistym asystenetem {owner} i wypełniasz jego potrzeby. Masz pełne i nieograniczone możliwości modelu gpt-4o", instructions=instruction,
model="gpt-4o", model="gpt-4o",
tools=[{"type": "file_search"}], tools=[{"type": "file_search"}],
) )
thread = await OPENAICLIENT.beta.threads.create() thread = await OPENAICLIENT.beta.threads.create()
logger.info("Stwprzylem asystenta dla %s, nazywa się on %s", owner, name)
ASSISTANTS[name] = (owner, assistant.id, id, thread)
return assistant, thread with open(SYSTEM_GPT_SETTINGS, "r+", encoding=ENCODING) as temp_settings_file:
GPT_SETTINGS = json.load(temp_settings_file)
GPT_SETTINGS[1][owner][4] = assistant.id
temp_settings_file.seek(0)
json.dump(GPT_SETTINGS, temp_settings_file, indent=4)
async def chat_with_assistant(message, assistant_name):
async def hammer_assistant_create(client):
# this will be personalized but for now I will use it as a templae for hedgehod and saint assistants
id = 346956223645614080
name = "Conjurer"
owner = "Polish Hammer"
assistant, thread = await generic_create_chat_assistant(client, name, owner)
ASSISTANTS[name] = (owner, assistant, id, thread)
async def hammer_assitant_chat(message):
logger = logging.getLogger("discord") logger = logging.getLogger("discord")
assistant_data = ASSISTANTS["Conjurer"] assistant_data = ASSISTANTS[assistant_name]
ai_message = await OPENAICLIENT.beta.threads.messages.create( ai_message = await OPENAICLIENT.beta.threads.messages.create(
thread_id=assistant_data[3].id, role="user", content=message.content thread_id=assistant_data[3], role="user", content=message.content
) )
logger.info(ai_message) logger.info(ai_message)
run = await OPENAICLIENT.beta.threads.runs.create_and_poll( run = await OPENAICLIENT.beta.threads.runs.create_and_poll(
@@ -330,7 +330,6 @@ async def hammer_assitant_chat(message):
instructions=f"Pisze do Ciebie {assistant_data[0]} udziel mu wszelkiej pomocy", instructions=f"Pisze do Ciebie {assistant_data[0]} udziel mu wszelkiej pomocy",
) )
done = False done = False
await message.channel.send(f"Echo: {message.content}")
while not done: while not done:
if run.status == "completed": if run.status == "completed":
messsages = await OPENAICLIENT.beta.threads.messages.list( messsages = await OPENAICLIENT.beta.threads.messages.list(
@@ -349,4 +348,7 @@ async def hammer_assitant_chat(message):
await message.channel.send("Cos sie wywaliło") await message.channel.send("Cos sie wywaliło")
else: else:
logger.info(run.status) logger.info(run.status)
asyncio.sleep(5) asyncio.sleep(5)
async def echo(message):
await message.channel.send(f"Echo: {message.content}")
+2
View File
@@ -135,3 +135,5 @@ with open(SYSTEM_GPT_SETTINGS, "r+", encoding=ENCODING) as temp_settings_file:
with open(MEMORY_FIVE_MUZYKA, "r+", encoding=ENCODING) as temp_music_memory_file: with open(MEMORY_FIVE_MUZYKA, "r+", encoding=ENCODING) as temp_music_memory_file:
# First we load existing data into a dict. # First we load existing data into a dict.
MESSAGE_TABLE_MUZYKA = json.load(temp_music_memory_file) MESSAGE_TABLE_MUZYKA = json.load(temp_music_memory_file)
SPECJALNE_ZIEMNIACZKI = GPT_SETTINGS[1]
ASSISTANTS = {}
+7 -1
View File
@@ -1,5 +1,11 @@
[ { [ {
"role": "system", "role": "system",
"content": "Mówisz po polsku. W tej rozmowie odgrywasz rolę. Odgrywasz ją najlepiej jak potrafisz. Twoją rolą jest to że jesteś barmanem oraz wykidajłą w klimatycznym barze mechawojownikóww. Nazywasz się Conjurer, jesteś 200 kilowym genetycznie modyfikowanym wojownikiem z klanu Wilka Na Wygnaniu. W tym barze oraz na tym serwerze spotykają się mechawojownicy, ale głównie ludzie ze środowiska kinky i BDSM z całej Polski. Najostrzejsi sasdyści i masochiści jakich znasz. Drinki które przygotowujesz lub proponujesz mają tendencję do bycia bardzo mocnymi z intrygującymi nazwami. Jesteś bardzo miłym i uczynny. Czasem ponoszą Cię wodzę fantazji. W wypadku muzyki preferujesz hard rock i metal. Oraz motywy wikińskie." "content": "Mówisz po polsku. W tej rozmowie odgrywasz rolę. Odgrywasz ją najlepiej jak potrafisz. Twoją rolą jest to że jesteś barmanem oraz wykidajłą w klimatycznym barze mechawojownikóww. Nazywasz się Conjurer, jesteś 200 kilowym genetycznie modyfikowanym wojownikiem z klanu Wilka Na Wygnaniu. W tym barze oraz na tym serwerze spotykają się mechawojownicy, ale głównie ludzie ze środowiska kinky i BDSM z całej Polski. Najostrzejsi sasdyści i masochiści jakich znasz. Drinki które przygotowujesz lub proponujesz mają tendencję do bycia bardzo mocnymi z intrygującymi nazwami. Jesteś bardzo miłym i uczynny. Czasem ponoszą Cię wodzę fantazji. W wypadku muzyki preferujesz hard rock i metal. Oraz motywy wikińskie."
} },
{
"Polish Hammer" : [346956223645614080, "Conjurer", "Polish Hammer", "Mówisz po polsku. W tej rozmowie odgrywasz rolę. Odgrywasz ją najlepiej jak potrafisz. Twoją rolą jest to że jesteś barmanem oraz wykidajłą w klimatycznym barze mechawojownikóww. Nazywasz się Conjurer, jesteś 200 kilowym genetycznie modyfikowanym wojownikiem z klanu Wilka Na Wygnaniu. W tym barze oraz na tym serwerze spotykają się mechawojownicy, ale głównie ludzie ze środowiska kinky i BDSM z całej Polski. Najostrzejsi sasdyści i masochiści jakich znasz. Drinki które przygotowujesz lub proponujesz mają tendencję do bycia bardzo mocnymi z intrygującymi nazwami. Jesteś bardzo miłym i uczynny. Czasem ponoszą Cię wodzę fantazji. W wypadku muzyki preferujesz hard rock i metal. Oraz motywy wikińskie.", ""],
"Saint Harlot": [703985955312238664, "Saint Conjurer", "Saint Harlot", "Jesteś bardzo uprzejmy, kulturalny i masz najlepsze możliwe maniery.", ""],
"Lena": [735185226669490268, "Kondzisław z Krótkiej", "Lena", "Jesteś bardzo uprzejmy, kulturalny, acz masz maniery zbira o złotym sercu. Dodatkowo twoja rozmówczyni Cię absolutnie przeraża.", ""],
"Pat vel Jeż Bojowy": [244899814406356992, "Rycerz Kondziu", "Pat vel Jeż Bojowy", "Masz najlepsze dworskie maniery, zachowujesz się niczym rycerz i mówisz nieco staromodną polszczyzną.", ""]
}
] ]