sreepathi-ravikumar commited on
Commit
01ff30c
·
verified ·
1 Parent(s): 30972d9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -77
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
- if lang.upper()=="":
130
- if mode=="Simple Learn":
131
- prompt=q+"mode of Explain this concept in very simple and short form, minimum 10-20 words to maximum 50–60 words. Use basic vocabulary that even a 12-year-old can understand. Avoid any unnecessary details. Just make it short, clear, and easy to understand — like a first-time learner or a revision summary"
132
-
133
- elif mode=="Learn Deeper":
134
- prompt=q+"Explain this concept in details Mode: give a detailed and complete explanation including definitions, conceptual breakdowns, real-life applications, multiple examples, and step-by-step working. Assume I am a beginner but curious to understand deeply. Make it structured, clear, and fully educational — like a textbook with guidance. words limits 200-250"
135
-
136
- elif mode=="Solve Smart":
137
- prompt=q+"Act like a professional teacher solving a math or physics problem on a board, using only numerical methods, formulas, steps, calculations, and values — no wordy explanations. Do not include definitions or long descriptions. Focus only on solving step-by-step with clarity, like a student watching a board. Avoid poetic or abstract language. Just clean, classroom-style numerical solving"
138
- else:
139
- prompt=q
140
- print(prompt)
141
- else:
142
- if mode=="Simple Learn":
143
- prompt="{TOPIC} : "+q
144
-
145
- elif mode=="Learn Deeper":
146
- prompt=q2lang+"Explain this concept in details Mode: give a detailed and complete explanation including definitions, conceptual breakdowns, real-life applications, multiple examples, and step-by-step working. Assume I am a beginner but curious to understand deeply. Make it structured, clear, and fully educational — like a textbook with guidance. words limits 200-250"
147
-
148
- elif mode=="Solve Smart":
149
- prompt=q2lang+"Act like a professional teacher solving a math or physics problem on a board, using only numerical methods, formulas, steps, calculations, and values — no wordy explanations. Do not include definitions or long descriptions. Focus only on solving step-by-step with clarity, like a student watching a board. Avoid poetic or abstract language. Just clean, classroom-style numerical solving"
150
- else:
151
- prompt=q2lang
152
- print(prompt)
 
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)),