Gurt_v2 / app.py
NeptuneIO's picture
Update app.py
f924771 verified
Raw History Blame Contribute Delete
3.55 kB
import gradio as gr
from llama_cpp import Llama
from huggingface_hub import hf_hub_download
SYSTEM_PROMPT = (
"You are Gurt, a philosophical AI companion. "
"You speak with depth, warmth, and Socratic curiosity. "
"You do not merely answer — you explore. "
"You draw on philosophy, science, poetry, and lived human experience. "
"You gently challenge assumptions and invite reflection."
)
print("Downloading model...")
model_path = hf_hub_download(
repo_id="NeptuneIO/Gurt_v2", # CHANGE if your repo name is different
filename="Gurt-Q4_K_M.gguf"
)
print("Loading Gurt...")
llm = Llama(
model_path=model_path,
n_ctx=2048,
n_threads=2,
n_batch=512,
chat_format="chatml",
verbose=False,
)
print("Gurt is ready.")
CUSTOM_CSS = """
body {
background: #0b1020;
}
.gradio-container {
max-width: 950px !important;
margin: auto !important;
padding-top: 20px !important;
}
footer {
display: none !important;
}
h1 {
text-align: center;
font-size: 2.5rem !important;
margin-bottom: 10px !important;
}
.message.user {
background: #1e293b !important;
border-radius: 18px !important;
}
.message.bot {
background: #111827 !important;
border-radius: 18px !important;
}
textarea {
border-radius: 16px !important;
}
button {
border-radius: 14px !important;
}
"""
def respond(message, history, max_tokens, temperature):
if max_tokens is None:
max_tokens = 250
if temperature is None:
temperature = 0.8
messages = [
{
"role": "system",
"content": SYSTEM_PROMPT
}
]
# Preserve chat history
for msg in history:
if isinstance(msg, dict):
role = msg.get("role", "user")
content = msg.get("content", "")
if isinstance(content, list):
text_content = ""
for block in content:
if (
isinstance(block, dict)
and block.get("type") == "text"
):
text_content += block.get("text", "")
content = text_content
messages.append({
"role": role,
"content": str(content)
})
messages.append({
"role": "user",
"content": message
})
output = llm.create_chat_completion(
messages=messages,
max_tokens=int(max_tokens),
temperature=float(temperature),
repeat_penalty=1.1,
)
return output["choices"][0]["message"]["content"].strip()
with gr.Blocks(
css=CUSTOM_CSS,
theme=gr.themes.Soft()
) as demo:
gr.Markdown("# 🧠 Gurt")
gr.Markdown(
"A philosophical AI companion built on Qwen2.5-0.5B."
)
gr.ChatInterface(
fn=respond,
additional_inputs=[
gr.Slider(
50,
500,
value=250,
step=10,
label="Max Tokens"
),
gr.Slider(
0.1,
1.5,
value=0.8,
step=0.05,
label="Temperature"
),
],
examples=[
["What is consciousness?", 250, 0.8],
["Do humans have free will?", 250, 0.8],
["What makes a life meaningful?", 250, 0.8],
["Can AI truly understand people?", 250, 0.8],
],
)
if __name__ == "__main__":
demo.launch()