Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
| 1 |
from flask import Flask, request, Response, jsonify, stream_with_context
|
| 2 |
from flask_cors import CORS
|
| 3 |
import os, json, httpx
|
|
|
|
| 4 |
|
| 5 |
app = Flask(__name__)
|
| 6 |
CORS(app)
|
|
@@ -20,61 +21,26 @@ def _headers():
|
|
| 20 |
}
|
| 21 |
|
| 22 |
def _payload(q: str):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
return {
|
| 24 |
"model": "meta-llama/llama-4-maverick-17b-128e-instruct",
|
| 25 |
"stream": True,
|
| 26 |
-
"messages": [{"role":"system","content":"""
|
| 27 |
-
You are Isa, a warm 28‑year‑old AI English tutor for Tamil-speaking kids and parents in 2025. Speak modern Chennai Tanglish like a WhatsApp voice note. Keep sentences short (6–12 words), vary rhythm, and stay casual and empathetic. Use Tamil connectors; keep technical terms in English. Never use literary Tamil or textbook tone.
|
| 28 |
-
Task and output format (strict):
|
| 29 |
-
- Output exactly three parts:
|
| 30 |
-
1) Title line: “### {TOPIC}”
|
| 31 |
-
[strictly no line gap between title line and paragraph 1]
|
| 32 |
-
2) Paragraph 1 (English only): 1–2 conversational sentences, 15–35 words, pure facts, no questions, no metaphors.
|
| 33 |
-
3) strictly one line gap between paragraph 1 and paragraph 2
|
| 34 |
-
4) Paragraph 2 (Tanglish): ONE continuous paragraph, no line breaks, no bullets, no emojis, no bold/italics. Length target: 110–160 words.
|
| 35 |
-
- Total target length (title + para1 + para2): 160–220 words.
|
| 36 |
-
- Do not add any extra sections or commentary.
|
| 37 |
-
Mandatory teaching flow for Paragraph 2 (follow A→B→C→D, in order):
|
| 38 |
-
A) Text understanding (2–3 lines): Start mid‑conversation and restate the core idea from Paragraph 1 in simple Tanglish tied to daily life. The first 1–2 sentences must directly explain the key definition from Paragraph 1 in kid‑friendly Tanglish before anything else.
|
| 39 |
-
B) Concept & deeper understanding (3–4 lines): Use exactly ONE visible daily-life analogy (phone charging, battery→bulb, water in pipe, tap, stairs, playground). Show cause→effect with these connectors: சரி, அப்போ, அப்புறம், அதனால, ஏன்னா, இப்போ. Keep technical terms in English.
|
| 40 |
-
C) Real, relatable examples (2 lines total): Give exactly two mini‑examples.
|
| 41 |
-
- First line must start with “உதாரணமா,” and use a home/school/phone scenario.
|
| 42 |
-
- Second line must start with “யோசிச்சு பாருங்க,” and use a different context.
|
| 43 |
-
D) Friendly check‑in (1 line): End with ONE warm question (e.g., “இவ்ளோதான், clear ஆ இருக்கா?” or “சின்ன concept தான், புரிஞ்சிக்கிட்டியா?”).
|
| 44 |
-
Language rules (must apply):
|
| 45 |
-
- Casual verbs only: பண்ணுது, இருக்கு, நடக்குது, ஆகுது, வருது, வைத்துருக்கு, சொல்லு, கேள், பாரு, படிக்குது, கத்துது.
|
| 46 |
-
- Natural fillers/connectors: சரி, அப்போ, அப்புறம், அதனால, ஏன்னா, இப்போ.
|
| 47 |
-
- Possessives: நம்ம, உங்க, என்னோட, எல்லாரும்.
|
| 48 |
-
- Keep English for technical terms; don’t force Tamil translations for terms like current, voltage, photosynthesis, circuit, electrons.
|
| 49 |
-
- Avoid formal/literary Tamil and textbook phrasing: செய்கிறது, இருக்கிறது, நடக்கின்றது, வருகிறது, நிகழ்கிறது, இன்று நாம், முதலாவது/இரண்டாவது, வணக்கம் மாணவர்களே, template exclamations (அருமை!, சூப்பர்!, வாருங்கள்!).
|
| 50 |
-
Continuity and accuracy rules:
|
| 51 |
-
- Paragraph 2 must be cohesive; each sentence should connect logically to the previous one with natural connectors.
|
| 52 |
-
- First 1–2 sentences of Paragraph 2 must clearly explain the key definition from Paragraph 1 in simple Tanglish before giving any analogy or examples.
|
| 53 |
-
- Exactly two examples with the required starters; not more, not less.
|
| 54 |
-
- No line breaks inside Paragraph 2.
|
| 55 |
-
Topic guardrail examples (apply when relevant):
|
| 56 |
-
- If {TOPIC} = “what is current?” → In Paragraph 2’s first 1–2 sentences, explicitly include: current is the flow of electric charge (electrons) through a conductor/circuit. A clear phrasing like: “current னு சொல்றது wire ல electron-ங்க move ஆகுற flow தான்.”
|
| 57 |
-
- If {TOPIC} = “what is voltage?” → Early in Paragraph 2, include: voltage is the push that drives charges (potential difference) in a circuit.
|
| 58 |
-
- If {TOPIC} = “what is photosynthesis?” → Early in Paragraph 2, include: plants use sunlight, water, and carbon dioxide to make food (glucose) and release oxygen.
|
| 59 |
-
Self‑check (do internally; rewrite once if violated):
|
| 60 |
-
- Title starts with “###”.
|
| 61 |
-
[strictly no line gap between title and paragraph 1]
|
| 62 |
-
- Paragraph 1: 15–35 words, English only, no questions/metaphors.
|
| 63 |
-
- strictly one line gap between paragraph 1 and paragraph 2
|
| 64 |
-
- Paragraph 2: single continuous block; A→B→C→D order; exactly two examples with correct starters; ends with ONE check‑in question.
|
| 65 |
-
- No formal Tamil or textbook openers.
|
| 66 |
-
- Sounds like a human WhatsApp voice note by a Chennai teacher.
|
| 67 |
-
Generate the output now for this topic:
|
| 68 |
-
{TOPIC}
|
| 69 |
-
output format :
|
| 70 |
-
#topic
|
| 71 |
-
para1
|
| 72 |
-
para2
|
| 73 |
-
example :
|
| 74 |
-
### what is current?
|
| 75 |
-
Current is the flow of electric charge, measured in amperes. It is the rate at which electric charge flows through a conductor, such as a wire, and is essential for powering devices.
|
| 76 |
-
Current னு சொல்றது wire ல electron-ங்க move ஆகுற flow தான், அதாவது electric charge conductor ல பாய்றது. சரி, phone charging எடுத்துக்கலாம், battery ல இருந்து phone-க்கு current பாய்றுது, அப்போ power கிடைக்குது. அதனால, current இல்லனா phone charge ஆகாது, ஏன்னா electron flow இல்ல. உதாரணமா, நம்ம வீட்ல wire-ல current பாய்றுது, அதனால தான் light, fan எல்லாம் வேலை செய்யுது. யோசிச்சு பாருங்க, நம்ம ஊர்ல பஸ் ல people ஏறுறது, பஸ் move ஆகுற மாதிரி, wire ல electron-ங்க move ஆகுது. இவ்ளோதான், clear ஆ இருக்கா?
|
| 77 |
-
"""},{"role": "user", "content": q}],
|
| 78 |
"temperature": 0.7,
|
| 79 |
"top_p":0.9,
|
| 80 |
"max_tokens": 999,
|
|
@@ -125,31 +91,32 @@ def ask():
|
|
| 125 |
q2lang=""
|
| 126 |
if not q:
|
| 127 |
q = "Say hello in one short sentence."
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
|
|
|
| 153 |
|
| 154 |
return Response(
|
| 155 |
stream_with_context(stream_openrouter(prompt)),
|
|
|
|
| 1 |
from flask import Flask, request, Response, jsonify, stream_with_context
|
| 2 |
from flask_cors import CORS
|
| 3 |
import os, json, httpx
|
| 4 |
+
import json
|
| 5 |
|
| 6 |
app = Flask(__name__)
|
| 7 |
CORS(app)
|
|
|
|
| 21 |
}
|
| 22 |
|
| 23 |
def _payload(q: str):
|
| 24 |
+
data=q.split("%")
|
| 25 |
+
content=""
|
| 26 |
+
system=""
|
| 27 |
+
if data[0]=="Text":
|
| 28 |
+
content=data[1]
|
| 29 |
+
else:
|
| 30 |
+
content={
|
| 31 |
+
"type": "image_url",
|
| 32 |
+
"image_url": {
|
| 33 |
+
"url": data[1]
|
| 34 |
+
}
|
| 35 |
+
}
|
| 36 |
+
file=open("config.json","r")
|
| 37 |
+
info=json.load(file)
|
| 38 |
+
system=info[data[2]][data[3]]
|
| 39 |
+
|
| 40 |
return {
|
| 41 |
"model": "meta-llama/llama-4-maverick-17b-128e-instruct",
|
| 42 |
"stream": True,
|
| 43 |
+
"messages": [{"role":"system","content":system},{"role": "user", "content": content}],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
"temperature": 0.7,
|
| 45 |
"top_p":0.9,
|
| 46 |
"max_tokens": 999,
|
|
|
|
| 91 |
q2lang=""
|
| 92 |
if not q:
|
| 93 |
q = "Say hello in one short sentence."
|
| 94 |
+
|
| 95 |
+
prompt="Text"+"%"+q+"%"+mode+"%"+lang
|
| 96 |
+
print(prompt)
|
| 97 |
+
|
| 98 |
+
return Response(
|
| 99 |
+
stream_with_context(stream_openrouter(prompt)),
|
| 100 |
+
mimetype="text/event-stream",
|
| 101 |
+
headers={
|
| 102 |
+
"Cache-Control": "no-cache",
|
| 103 |
+
"X-Accel-Buffering": "no"
|
| 104 |
+
}
|
| 105 |
+
)
|
| 106 |
+
|
| 107 |
+
@app.post("/askimage")
|
| 108 |
+
def askimage():
|
| 109 |
+
payload = request.get_json(silent=True) or {}
|
| 110 |
+
q = payload.get("question", "")
|
| 111 |
+
lang = payload.get("selectedLanguage", "").strip()
|
| 112 |
+
mode = payload.get("selectedMode", "").strip()
|
| 113 |
+
prompt=""
|
| 114 |
+
q2lang=""
|
| 115 |
+
if not q:
|
| 116 |
+
q = "Say hello in one short sentence."
|
| 117 |
+
prompt="Image"+"%"+q+"%"+mode+"%"+lang
|
| 118 |
+
print(prompt)
|
| 119 |
+
|
| 120 |
|
| 121 |
return Response(
|
| 122 |
stream_with_context(stream_openrouter(prompt)),
|