Page 1 of 1

OPEN SOURCE AI (coding language: python)

Posted: Tue Sep 16, 2025 8:53 am
by sk8erboi1oh1 (Radiation-s)
import tkinter as tk

from tkinter import scrolledtext, ttk

import threading

import ollama

import json

import os

import requests



#THIS CODE IS STRICTLY RESTRICTED AND HAVE NO CONNECTIONS TO THE REAL CODE



# ===== System Prompts =====

ASSISTANT_SYSTEM_PROMPT = (

"You are a helpful, conversational AI assistant. "

"Always try to be clear, accurate, and concise. "

"If the user asks for code, output valid code blocks in Markdown. "

"Be friendly and supportive, but not overly casual."

)





MODELS = {

"Assistant": "gemma:2b", # General model

}



CHAT_LOG_FILE = "chatlog.json"



# --- Load / Save Chat ---

def save_chat():

with open(CHAT_LOG_FILE, "w", encoding="utf-8") as f:

json.dump(messages, f, indent=2)



def load_chat():

if os.path.exists(CHAT_LOG_FILE):

with open(CHAT_LOG_FILE, "r", encoding="utf-8") as f:

return json.load(f)

return []



# Initialize mode

current_mode = "Assistant"

messages = [{"role": "system", "content": SYSTEM_PROMPTS[current_mode]}]



# --- UI helpers ---

def chat_insert(text: str, tag: str = ""):

chat_window.config(state="normal")

chat_window.insert(tk.END, text, tag)

chat_window.see(tk.END)

chat_window.config(state="disabled")



def set_input_enabled(enabled: bool):

entry.config(state=("normal" if enabled else "disabled"))

send_btn.config(state=("normal" if enabled else "disabled"))

if enabled:

entry.focus_set()



def typewriter(prefix: str, body: str, tag: str = "bot", done_cb=None):

chat_window.config(state="normal")

chat_window.insert(tk.END, prefix, tag)

chat_window.config(state="disabled")

chat_window.see(tk.END)



idx = {"i": 0}



def step():

if idx["i"] < len(body):

chat_window.config(state="normal")

chat_window.insert(tk.END, body[idx["i"]], tag)

chat_window.config(state="disabled")

chat_window.see(tk.END)

idx["i"] += 1

root.after(18, step)

else:

chat_window.config(state="normal")

chat_window.insert(tk.END, "\n\n", tag)

chat_window.config(state="disabled")

chat_window.see(tk.END)

if done_cb:

done_cb()



step()



# --- Model call ---

def generate_reply():

global current_mode

try:

response = ollama.chat(

model=MODELS[current_mode],

messages=messages

)

bot_msg = response["message"]["content"]

except Exception as e:

bot_msg = f"[Error] {e}"



root.after(0, lambda: on_bot_reply(bot_msg))



def on_bot_reply(bot_msg: str):

def reenable():

messages.append({"role": "assistant", "content": bot_msg})

save_chat()

set_input_enabled(True)



prefix = "AI: " if current_mode != "SCP-079" else "SCP-079: "

typewriter(prefix, bot_msg, "bot", done_cb=reenable)



# --- Send handler ---

def send_message(event=None):

global messages

user_msg = entry.get()

if not user_msg.strip():

return



chat_insert(f"You: {user_msg}\n", "user")

entry.delete(0, tk.END)



if user_msg.upper() == "RESET LOGS":

messages = [{"role": "system", "content": SYSTEM_PROMPTS[current_mode]}]

save_chat()

chat_insert("\n[ All chat logs cleared. ]\n\n", "bot")

return



messages.append({"role": "user", "content": user_msg})

save_chat()



chat_insert("AI: ...\n", "typing")

set_input_enabled(False)

threading.Thread(target=generate_reply, daemon=True).start()



# --- Mode switch handler ---

def switch_mode(event=None):

global current_mode, messages

selected = mode_var.get()

current_mode = selected

messages = [{"role": "system", "content": SYSTEM_PROMPTS[current_mode]}]

save_chat()

chat_insert(f"\n[ Mode switched to {current_mode}. Logs reset. ]\n\n", "bot")



# --- Tkinter setup ---

root = tk.Tk()

root.title("Multi-Mode Chatbot")

root.geometry("720x520")

root.configure(bg="#1E1E1E")



# Chat window

chat_window = scrolledtext.ScrolledText(

root,

wrap=tk.WORD,

state="disabled",

bg="#1E1E1E",

fg="#00E5FF",

insertbackground="white",

font=("Consolas", 13)

)

chat_window.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)

chat_window.bind("<Key>", lambda e: "break")



chat_window.tag_config("user", foreground="#FFFFFF")

chat_window.tag_config("bot", foreground="#00E5FF")

chat_window.tag_config("typing", foreground="#AAAAAA")



# Mode selector

mode_frame = tk.Frame(root, bg="#1E1E1E")

mode_frame.pack(fill=tk.X, padx=10)



tk.Label(mode_frame, text="Mode:", bg="#1E1E1E", fg="white").pack(side=tk.LEFT)

mode_var = tk.StringVar(value=current_mode)

mode_menu = ttk.Combobox(mode_frame, textvariable=mode_var, values=list(SYSTEM_PROMPTS.keys()), state="readonly")

mode_menu.pack(side=tk.LEFT, padx=5)

mode_menu.bind("<<ComboboxSelected>>", switch_mode)



# Input row

input_row = tk.Frame(root, bg="#1E1E1E")

input_row.pack(padx=10, pady=(0, 10), fill=tk.X)



entry = tk.Entry(input_row, bg="#2C2C2C", fg="white", insertbackground="white", font=("Consolas", 12))

entry.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=(0, 8))



send_btn = tk.Button(input_row, text="Submit", command=send_message, bg="#333333", fg="white")

send_btn.pack(side=tk.RIGHT)



entry.bind("<Return>", send_message)

entry.focus_set()



chat_insert("Chatbot ready. Type RESET LOGS to clear memory.\n\n", "bot")



root.mainloop()



Re: OPEN SOURCE AI (coding language: python)

Posted: Tue Sep 16, 2025 12:22 pm
by Daniele63
Please do not post AI media in the future, my forum is not the place for this. I've also put in the rules to not do that.