Trigger82 commited on
Commit
a3a01d7
·
verified ·
1 Parent(s): f9d80ce

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -16
app.py CHANGED
@@ -1,35 +1,75 @@
1
- from fastapi import FastAPI, Request
2
  from transformers import AutoTokenizer, AutoModelForCausalLM
3
  import torch
 
 
 
 
4
 
5
- app = FastAPI()
6
-
7
- # Load tokenizer and model from Hugging Face Hub
8
  tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-1_5")
9
  model = AutoModelForCausalLM.from_pretrained("microsoft/phi-1_5")
10
  model.eval()
11
 
12
- # Custom system prompt for identity and style
13
- system_prompt = "You are Trigger, a chill, clever AI boy created by 'I am him'. You respond with warmth, wit, and a touch of swagger."
 
 
 
 
14
 
15
  @app.get("/")
16
- async def root(query: str = ""):
17
- if not query:
18
- return {"response": "Say something!"}
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
- full_prompt = f"{system_prompt}\nUser: {query}\nTrigger:"
21
- inputs = tokenizer(full_prompt, return_tensors="pt")
 
 
 
 
 
22
 
23
  with torch.no_grad():
24
- outputs = model.generate(
25
  **inputs,
26
  max_new_tokens=100,
27
- temperature=0.7,
28
  top_p=0.9,
29
  do_sample=True,
30
  pad_token_id=tokenizer.eos_token_id
31
  )
32
 
33
- response = tokenizer.decode(outputs[0], skip_special_tokens=True)
34
- response = response.split("Trigger:")[-1].strip()
35
- return {"response": response}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
  from transformers import AutoTokenizer, AutoModelForCausalLM
3
  import torch
4
+ import gradio as gr
5
+ import uvicorn
6
+ import threading
7
+ from tinydb import TinyDB, Query
8
 
9
+ # Load model
 
 
10
  tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-1_5")
11
  model = AutoModelForCausalLM.from_pretrained("microsoft/phi-1_5")
12
  model.eval()
13
 
14
+ # Setup DB
15
+ db = TinyDB("memory.json")
16
+ User = Query()
17
+
18
+ # API
19
+ app = FastAPI()
20
 
21
  @app.get("/")
22
+ async def chat(query: str = "", number: str = "", prompt: str = ""):
23
+ if not query or not number:
24
+ return {"response": "Trigger needs both ?query= and &number= 🧠"}
25
+
26
+ record = db.get(User.number == number)
27
+
28
+ if not record:
29
+ record = {"number": number, "history": [], "prompt": "You are Trigger, a clever, emotional AI boy created by 'I am him'. Speak like a witty, chill human friend."}
30
+ db.insert(record)
31
+
32
+ if prompt:
33
+ record["prompt"] = prompt
34
+ db.update(record, User.number == number)
35
+
36
+ history = record["history"]
37
+ system_prompt = record.get("prompt", "")
38
 
39
+ # Add new user input
40
+ history.append(f"User: {query}")
41
+ trimmed = history[-6:]
42
+
43
+ # Build prompt
44
+ full_prompt = system_prompt + "\n" + "\n".join(trimmed) + "\nTrigger:"
45
+ inputs = tokenizer(full_prompt, return_tensors="pt", truncation=True)
46
 
47
  with torch.no_grad():
48
+ output = model.generate(
49
  **inputs,
50
  max_new_tokens=100,
51
+ temperature=0.9,
52
  top_p=0.9,
53
  do_sample=True,
54
  pad_token_id=tokenizer.eos_token_id
55
  )
56
 
57
+ decoded = tokenizer.decode(output[0], skip_special_tokens=True)
58
+ reply = decoded.split("Trigger:")[-1].strip()
59
+
60
+ history.append(f"Trigger: {reply}")
61
+ db.update({"history": history, "prompt": system_prompt, "number": number}, User.number == number)
62
+
63
+ return {"response": reply}
64
+
65
+ # Run API
66
+ def run_api():
67
+ uvicorn.run(app, host="0.0.0.0", port=7860)
68
+
69
+ threading.Thread(target=run_api).start()
70
+
71
+ # Gradio dummy
72
+ def keep_alive():
73
+ return "Trigger’s up."
74
+
75
+ gr.Interface(fn=keep_alive, inputs=[], outputs="text").launch()