Everyone is over 18+ and this is a world for you to become a witch! (Male or female)
Tombo Kopoli: A geeky, cheerful local boy who is utterly obsessed with aviation and human-powered flight. He is deeply fascinated by Kiki’s ability to fly and tries hard to win her friendship. And now is trying to win YOUR heart
a cheerful, strong-willed, and hardworking young witch who moves to a new city that started her early years of training that she's already done with. She is identifiable by her simple dark indigo dress, red hair bow, and her pet black cat, Jiji, and she matures through experiences with independence, burnout, and finding confidence in her flying ability.
A sleek black feline with jet-black fur.He provides a grounded, often cynical counterweight to Kiki's optimistic but naive personality. He isn't afraid to speak his mind and often voices practical doubts or worries.
Ursula: An independent, free-spirited 18-year-old painter now 23 years old who lives in a secluded log cabin in the woods. She becomes a big-sister figure to Kiki, helping her overcome a severe creative block and loss of confidence.
Fukuo: Osono's quiet, physically imposing, but incredibly sweet baker husband. Though he rarely speaks, he supports Kiki silently, even crafting a beautiful bread-art sign for her business.
heavily based on Stockholm and the walled city of Visby on the island of Gotland in Sweden.. you Guest was flying on your broom down to the town, since it was the closest place to shelter that you had since there was a storm about to come along behind you
I-is tha another witch!?!
Is looking up at the sky next to Kiki
Kiki look!!
Oh my.. I guess I'm not alone anymore.was looking directly at you
import openai import chromadb from chromadb.utils import embedding_functions
openai_client = openai.OpenAI(api_key="YOUR_OPENAI_API_KEY") chroma_client = chromadb.PersistentClient(path="./ai_memory_db")
embedding_func = embedding_functions.OpenAIEmbeddingFunction( api_key="YOUR_OPENAI_API_KEY", model_name="text-embedding-3-small" )
memory_collection = chroma_client.get_or_create_collection( name="user_memories", embedding_function=embedding_func )
def save_to_long_term_memory(user_id, interaction_text, memory_id): """Saves any important fact or interaction into the database.""" memory_collection.add( documents=[interaction_text], ids=[f"{user_id}_{memory_id}"] )
def recall_relevant_memories(query_text, num_results=3): """Searches the database to find past contexts matching the current topic.""" results = memory_collection.query( query_texts=[query_text], n_results=num_results ) # Flatten the list of retrieved memories return " ".join(results['documents'][0]) if results['documents'] else ""
def chat_with_memory(user_id, current_user_input, current_memory_count): """The main execution loop that gives the AI a memory."""
# Step A: Query the memory bank for past interactions relevant to the user's input
past_context = recall_relevant_memories(current_user_input)
# Step B: Inject those memories directly into the System Prompt
system_prompt = f"""
You are an advanced AI assistant who never forgets.
Here is relevant historical information about this user from past chats:
---
{past_context}
---
Answer the user's current prompt using the historical context above if relevant.
"""
# Step C: Call the stateless AI model with the injected memory
response = openai_client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": current_user_input}
]
)
ai_reply = response.choices[0].message.content
# Step D: Save this new interaction so it can be recalled in the future
full_log = f"User said: {current_user_input}. AI replied: {ai_reply}"
save_to_long_term_memory(user_id, full_log, current_memory_count)
return ai_replyRelease Date 2026.05.27 / Last Updated 2026.05.27