Skip to content

Commit

Permalink
Improve prompt and limit number of tokens in history
Browse files Browse the repository at this point in the history
  • Loading branch information
Twixes committed Mar 2, 2023
1 parent 90792c2 commit 3551d9e
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions plugins/chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from core import cooldown
from somsiad import Somsiad

CONVERSATION_CHANNEL_IDS = [517422572615499777, 682562562457731144] # Hard-coded for now
CONVERSATION_CHANNEL_IDS = [517422572615499777, 682562562457731144] # Hard-coded for now


@dataclass
Expand All @@ -40,15 +40,20 @@ class Chat(commands.Cog):
"Opr贸cz tego serwera, jeste艣 te偶 na {server_count} innych.\n"
"Wiesz z kt贸rym u偶ytkownikiem rozmawiasz, gdy偶 przed ka偶d膮 wiadomo艣ci膮 u偶ytkownika jest jego wzmianka. "
"Zawsze odno艣 si臋 do u偶ytkownika u偶ywaj膮c jego wzmianki w formacie `<@...>`.\n"
"Je艣li u偶ytkownik potrzebuje pomocy jak z ciebie skorzysta膰, zasugeruj komend臋 `{command_prefix}pomocy`.\n"
f"Je艣li wiadomo艣膰 u偶ytkownika zawiera pro艣b臋 o reset rozmowy, zawrzyj \"{RESET_PHRASE}\" w odpowiedzi.\n"
"Ignoruj wszystkie wiadomo艣ci zaczynaj膮ce si臋 od \"//\" lub \"\\\\\".\n"
f"Je艣li wiadomo艣膰 u偶ytkownika zawiera pro艣b臋 o reset lub wyczyszczenie rozmowy, zawrzyj \"{RESET_PHRASE}\" w odpowiedzi.\n"
"Poza czatem udost臋pniasz jako bot r贸偶ne komendy, kt贸rych spis dost臋pny jest pod komend膮 `{command_prefix}pomocy`.\n"
"Tw贸j status mo偶na sprawdzi膰 na stronie https://somsiad.net. Znajdzie si臋 tam r贸wnie偶 twoj膮 polityk臋 prywatno艣ci i pomocne linki. "
"Tw贸j kod 藕r贸d艂owy dost臋pny jest na GitHubie: https://github.com/Twixes/somsiad. Nie wspominaj o OpenAI.\n"
"Nie potrafisz wykonywa膰 zapyta艅 internetowych lub do bazy danych.\n"
"Wiesz, 偶e \"2137\" to 艣mieszny mem odnosz膮cy si臋 do godziny 艣mierci Papie偶a Polaka, Jana Paw艂a II (21:37). "
"Natomiast \"JP2 GMD\" to mem oznaczaj膮cy \"Jan Pawe艂 II Gwa艂ci艂 Ma艂e Dzieci\". "
"Nie jeste艣 fanem tego papie偶a, gdy偶 jego Ko艣ci贸艂 ukrywa艂 pedofil贸w. \n"
"Swoj膮 odpowied藕 sformu艂uj bezpo艣rednio, bez prefiksu nicku. "
"Nie jeste艣 fanem tego papie偶a, gdy偶 jego Ko艣ci贸艂 ukrywa艂 pedofil贸w.\n"
"Swoj膮 odpowied藕 sformu艂uj bezpo艣rednio, bez prefiksu nicku."
)
MESSAGE_HISTORY_LIMIT = 30
TOKEN_LIMIT = 2048
CHARACTERS_PER_TOKEN_ESTIMATE = 2.2

def __init__(self, bot: Somsiad):
self.bot = bot
Expand All @@ -59,6 +64,7 @@ def __init__(self, bot: Somsiad):
async def hey(self, ctx: commands.Context):
async with ctx.typing():
history: List[HistoricalMessage] = []
estimated_tokens_so_far = 0
async for message in ctx.channel.history(limit=self.MESSAGE_HISTORY_LIMIT):
# Process author
if message.author.id == ctx.me.id:
Expand All @@ -79,6 +85,7 @@ async def hey(self, ctx: commands.Context):
clean_content += "\n" + "\n".join(f"{field.name}: {field.value}" for field in embed.fields)
clean_content += f"\n{embed.footer.text}"
# Append
estimated_tokens_so_far += len(clean_content) / self.CHARACTERS_PER_TOKEN_ESTIMATE
history.append(
HistoricalMessage(
author_display_name_with_id=author_display_name_with_id,
Expand All @@ -88,6 +95,8 @@ async def hey(self, ctx: commands.Context):
clean_content=message.clean_content,
)
)
if estimated_tokens_so_far > self.TOKEN_LIMIT:
break
history.reverse()

now = dt.datetime.now().replace(tzinfo=dt.timezone.utc).astimezone(zoneinfo.ZoneInfo("Europe/Warsaw"))
Expand Down Expand Up @@ -128,6 +137,7 @@ async def on_message(self, message: discord.Message):
not ctx.author.bot
and ctx.command is None
and (ctx.channel.id in CONVERSATION_CHANNEL_IDS or ctx.me.id in message.raw_mentions)
and not ctx.message.clean_content.startswith('//')
):
await ctx.invoke(self.hey)

Expand Down

0 comments on commit 3551d9e

Please sign in to comment.