Skip to content

Commit

Permalink
Merge pull request #953 from Capsize-Games/devastator
Browse files Browse the repository at this point in the history
Devastator
  • Loading branch information
w4ffl35 authored Oct 24, 2024
2 parents 41a4bbb + 5a6487f commit b95c896
Show file tree
Hide file tree
Showing 21 changed files with 681 additions and 419 deletions.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name="airunner",
version="3.1.1",
version="3.1.2",
author="Capsize LLC",
description="A Stable Diffusion GUI",
long_description=open("README.md", "r", encoding="utf-8").read(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
"""Move bot_mood from Chatbot to Conversation
Revision ID: f403ff7468e8
Revises: 536e18463461
Create Date: 2024-10-24 01:43:30.378281
"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import sqlite

# revision identifiers, used by Alembic.
revision: str = 'f403ff7468e8'
down_revision: Union[str, None] = '536e18463461'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None

def upgrade():
try:
# Add bot_mood column to conversation table
op.add_column('conversations', sa.Column('bot_mood', sa.Text(), nullable=True))
except sqlite.DatabaseError:
pass

try:
# Remove bot_mood column from chatbot table
op.drop_column('chatbots', 'bot_mood')
except sqlite.DatabaseError:
pass

def downgrade():
try:
op.add_column('chatbots', sa.Column('bot_mood', sa.Text(), nullable=True))
except sqlite.DatabaseError:
pass

try:
op.drop_column('conversations', 'bot_mood')
except sqlite.DatabaseError:
pass
6 changes: 3 additions & 3 deletions src/airunner/data/bootstrap/imagefilter_bootstrap_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
},
'smoothing': {
'name': 'smoothing',
'value': '1',
'value': '0',
'value_type': 'int',
'min_value': None,
'max_value': None
'min_value': '0',
'max_value': '100'
},
'base_size': {
'name': 'base_size',
Expand Down
2 changes: 1 addition & 1 deletion src/airunner/data/models/settings_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,6 @@ class Chatbot(Base):
use_datetime = Column(Boolean, default=True)
assign_names = Column(Boolean, default=True)
bot_personality = Column(Text, default="happy. He loves {{ username }}")
bot_mood = Column(Text, default="")
prompt_template = Column(Text, default="Mistral 7B Instruct: Default Chatbot")
use_tool_filter = Column(Boolean, default=False)
use_gpu = Column(Boolean, default=True)
Expand Down Expand Up @@ -546,6 +545,7 @@ class Conversation(Base):
timestamp = Column(DateTime, default=datetime.datetime.now(datetime.timezone.utc))
title = Column(String, nullable=True) # New column added
messages = relationship("Message", back_populates="conversation", cascade="all, delete-orphan")
bot_mood = Column(Text, default="")


class Message(Base):
Expand Down
3 changes: 3 additions & 0 deletions src/airunner/filters/base_filter.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
from PIL import ImageFilter

from airunner.handlers.logger import Logger


class BaseFilter(ImageFilter.Filter):
def __init__(self, **kwargs):
super().__init__()
self.logger = Logger(prefix=self.__class__.__name__)
self.image = None
self.image_id = None

Expand Down
1 change: 0 additions & 1 deletion src/airunner/filters/box_blur.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,4 @@

class BoxBlur(BaseFilter):
def apply_filter(self, image, do_reset=False):
print("APPLY FILTER")
return image.filter(ImageFilterBoxBlur(radius=self.radius))
12 changes: 9 additions & 3 deletions src/airunner/filters/pixel_art.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
from PIL import Image
from PIL import Image, ImageFilter
from airunner.filters.base_filter import BaseFilter


class PixelFilter(BaseFilter):
current_number_of_colors = 0
smoothing = 0 # Default smoothing value

def apply_filter(self, image, do_reset):
# Reduce number of colors
number_of_colors = getattr(self, "number_of_colors", 24)
base_size = getattr(self, "base_size", 256)
smoothing = getattr(self, "smoothing", 0)
# ensure number_of_colors is an integer divisible by 2
number_of_colors = int(number_of_colors) // 2 * 2
if self.current_number_of_colors != number_of_colors or do_reset:
Expand All @@ -17,7 +18,7 @@ def apply_filter(self, image, do_reset):
quantized = image.quantize(number_of_colors)
self.image = quantized.convert("RGBA")
except ValueError:
print("Bad number of colors")
self.logger.debug("Bad number of colors")

image = self.image
# Downsize while maintaining aspect ratio
Expand All @@ -32,4 +33,9 @@ def apply_filter(self, image, do_reset):
target_height = int(new_height / scale)
final_image = downsized.resize((target_width, target_height), Image.Resampling.NEAREST)

# Apply smoothing if enabled
if smoothing > 0:
for _ in range(smoothing // 10): # Apply smoothing filter multiple times
final_image = final_image.filter(ImageFilter.SMOOTH)

return final_image
34 changes: 18 additions & 16 deletions src/airunner/handlers/llm/agent/base_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ def __init__(self, *args, **kwargs):
self.is_mistral = kwargs.pop("is_mistral", True)
self.conversation_id = None
self.conversation_title = None
self.conversation = None
self.history = self.load_history_from_db(self.conversation_id) # Load history by conversation ID
super().__init__(*args, **kwargs)
self.prompt = ""
Expand Down Expand Up @@ -136,14 +137,16 @@ def botname(self) -> str:

@property
def bot_mood(self) -> str:
return self.chatbot.bot_mood
return self.conversation.bot_mood if self.conversation else ""

@bot_mood.setter
def bot_mood(self, value: str):
chatbot = self.chatbot
chatbot.bot_mood = value
self.save_object(chatbot)
self.emit_signal(SignalCode.BOT_MOOD_UPDATED)
conversation = self.conversation
conversation.bot_mood = value
self.save_object(conversation)
self.emit_signal(SignalCode.BOT_MOOD_UPDATED, {
"mood": value
})

@property
def bot_personality(self) -> str:
Expand Down Expand Up @@ -241,17 +244,11 @@ def _update_conversation_title(self, title):

def _create_conversation(self):
# Get the most recent conversation ID
recent_conversation_id = self.get_most_recent_conversation_id()

# Check if there are messages for the most recent conversation ID
if recent_conversation_id is not None:
messages = self.load_history_from_db(recent_conversation_id)
if not messages:
self.conversation_id = recent_conversation_id
return

# If there are messages or no recent conversation ID, create a new conversation
self.conversation_id = self.create_conversation()
self.conversation = self.get_most_recent_conversation()
if not self.conversation:
self.conversation = self.create_conversation()
self.conversation_id = self.conversation.id
self.history = self.load_history_from_db(self.conversation_id)

def interrupt_process(self):
self.do_interrupt = True
Expand Down Expand Up @@ -818,7 +815,12 @@ def add_message_to_history(

def on_load_conversation(self, message):
self.history = []
self.conversation = message["conversation"]
self.conversation_id = message["conversation_id"]

# Merge the conversation object into the current session
self.conversation = self.session.merge(self.conversation)

self.history = self.load_history_from_db(self.conversation_id)
self.set_conversation_title()
self.emit_signal(SignalCode.SET_CONVERSATION, {
Expand Down
7 changes: 5 additions & 2 deletions src/airunner/handlers/stablediffusion/sd_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -698,6 +698,8 @@ def _check_and_mark_nsfw_images(self, images) -> tuple:
if not self._feature_extractor or not self._safety_checker:
return images, [False] * len(images)

self._safety_checker.to(self._device)

safety_checker_input = self._feature_extractor(images, return_tensors="pt").to(self._device)
_, has_nsfw_concepts = self._safety_checker(
images=[np.array(img) for img in images],
Expand Down Expand Up @@ -730,6 +732,8 @@ def _check_and_mark_nsfw_images(self, images) -> tuple:

images[i] = img

self._safety_checker.to("cpu")

return images, has_nsfw_concepts

def _load_safety_checker(self):
Expand All @@ -755,7 +759,7 @@ def _load_safety_checker_model(self):
self._safety_checker = StableDiffusionSafetyChecker.from_pretrained(
safety_checker_path,
torch_dtype=self.data_type,
device_map=self._device,
device_map="cpu",
local_files_only=True,
use_safetensors=False
)
Expand All @@ -781,7 +785,6 @@ def _load_feature_extractor(self):
self._feature_extractor = CLIPFeatureExtractor.from_pretrained(
feature_extractor_path,
torch_dtype=self.data_type,
device_map=self._device,
local_files_only=True,
use_safetensors=True
)
Expand Down
92 changes: 46 additions & 46 deletions src/airunner/resources_rc.py
Original file line number Diff line number Diff line change
Expand Up @@ -8067,97 +8067,97 @@
\x00\x00\x00\x10\x00\x02\x00\x00\x00.\x00\x00\x00\x03\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x02\xc4\x00\x00\x00\x00\x00\x01\x00\x00m\xe5\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcd?\
\x00\x00\x082\x00\x00\x00\x00\x00\x01\x00\x01\xbev\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcd>\
\x00\x00\x06\xae\x00\x00\x00\x00\x00\x01\x00\x01oa\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcd?\
\x00\x00\x08T\x00\x00\x00\x00\x00\x01\x00\x01\xc5Z\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x03\x92\x00\x00\x00\x00\x00\x01\x00\x00\x9b]\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x03n\x00\x00\x00\x00\x00\x01\x00\x00\x94\xf9\
\x00\x00\x01\x92n\xe1\xd8\x16\
\x00\x00\x01\x92\xba\xea\xcd?\
\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x00&\x16\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcd?\
\x00\x00\x05F\x00\x00\x00\x00\x00\x01\x00\x01\x01Z\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcd>\
\x00\x00\x04\xb6\x00\x00\x00\x00\x00\x01\x00\x00\xe0C\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x01*\x00\x00\x00\x00\x00\x01\x00\x007r\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcd?\
\x00\x00\x03\xba\x00\x00\x00\x00\x00\x01\x00\x00\xa4\x12\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x00H\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x19\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x07\xbc\x00\x00\x00\x00\x00\x01\x00\x01\xa7\x89\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x02\xe4\x00\x00\x00\x00\x00\x01\x00\x00{\x97\
\x00\x00\x01\x92n\xe1\xd8\x16\
\x00\x00\x01\x92\xba\xea\xcb\x89\
\x00\x00\x03J\x00\x00\x00\x00\x00\x01\x00\x00\x8cT\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x05\xea\x00\x00\x00\x00\x00\x01\x00\x01\x1e\xa2\
\x00\x00\x01\x92n\xe1\xd8\x16\
\x00\x00\x01\x92\xba\xea\xcb\x89\
\x00\x00\x06X\x00\x00\x00\x00\x00\x01\x00\x013b\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x06~\x00\x00\x00\x00\x00\x01\x00\x01=\x1c\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x1e\xbf\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x03\x18\x00\x00\x00\x00\x00\x01\x00\x00\x82X\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x04\xea\x00\x00\x00\x00\x00\x01\x00\x00\xe82\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x05n\x00\x00\x00\x00\x00\x01\x00\x01\x07\xbe\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x00p\x00\x00\x00\x00\x00\x01\x00\x00\x17\x09\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x08\x0a\x00\x00\x00\x00\x00\x01\x00\x01\xb7\x00\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcd>\
\x00\x00\x07X\x00\x00\x00\x00\x00\x01\x00\x01\x90\x8c\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcd>\
\x00\x00\x05\xb8\x00\x00\x00\x00\x00\x01\x00\x01\x0e\xc9\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x04t\x00\x00\x00\x00\x00\x01\x00\x00\xd8\xaf\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcd>\
\x00\x00\x06\x1a\x00\x00\x00\x00\x00\x01\x00\x01+\xd1\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x04 \x00\x00\x00\x00\x00\x01\x00\x00\xb3\xae\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x07\x84\x00\x00\x00\x00\x00\x01\x00\x01\x97\xd9\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcd?\
\x00\x00\x07\xe8\x00\x00\x00\x00\x00\x01\x00\x01\xae\xab\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x02\x8c\x00\x00\x00\x00\x00\x01\x00\x00gF\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcd>\
\x00\x00\x04D\x00\x00\x00\x00\x00\x01\x00\x00\xbaK\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x01\x00\x000\x84\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x01\xb0\x00\x00\x00\x00\x00\x01\x00\x00F\x5c\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x03\xee\x00\x04\x00\x00\x00\x01\x00\x00\xab`\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xf7g\x80\
\x00\x00\x01Z\x00\x04\x00\x00\x00\x01\x00\x00@\xe4\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x06\xd0\x00\x00\x00\x00\x00\x01\x00\x01v\xda\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x01\xe2\x00\x00\x00\x00\x00\x01\x00\x00Mi\
\x00\x00\x01\x92n\xe1\xd8\x13\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x05\x1a\x00\x00\x00\x00\x00\x01\x00\x00\xf76\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcb\x87\
\x00\x00\x02\x1c\x00\x00\x00\x00\x00\x01\x00\x00S\xd6\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcb\x88\
\x00\x00\x07\x12\x00\x00\x00\x00\x00\x01\x00\x01}\x88\
\x00\x00\x01\x92n\xe1\xd8\x16\
\x00\x00\x01\x92\xba\xea\xcb\x89\
\x00\x00\x02d\x00\x00\x00\x00\x00\x01\x00\x00Z\x8c\
\x00\x00\x01\x92n\xe1\xd8\x12\
\x00\x00\x01\x92\xba\xea\xcb\x86\
\x00\x00\x08\x80\x00\x00\x00\x00\x00\x01\x00\x01\xd6\xbe\
\x00\x00\x01\x92n\xe1\xd8\x14\
\x00\x00\x01\x92\xba\xea\xcd?\
\x00\x00\x072\x00\x00\x00\x00\x00\x01\x00\x01\x87\xd0\
\x00\x00\x01\x92n\xe1\xd8\x15\
\x00\x00\x01\x92\xba\xea\xcb\x88\
"

def qInitResources():
Expand Down
Loading

0 comments on commit b95c896

Please sign in to comment.