Spaces:
Runtime error
Runtime error
upload app core
Browse files- app.py +12 -59
- data_source.txt +90 -0
- ragChain.py +70 -0
- requirements.txt +1 -1
app.py
CHANGED
@@ -1,63 +1,16 @@
|
|
|
|
1 |
import gradio as gr
|
2 |
-
from
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
"""
|
7 |
-
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
8 |
|
9 |
|
10 |
-
def
|
11 |
-
message
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
)
|
18 |
-
messages = [{"role": "system", "content": system_message}]
|
19 |
-
|
20 |
-
for val in history:
|
21 |
-
if val[0]:
|
22 |
-
messages.append({"role": "user", "content": val[0]})
|
23 |
-
if val[1]:
|
24 |
-
messages.append({"role": "assistant", "content": val[1]})
|
25 |
-
|
26 |
-
messages.append({"role": "user", "content": message})
|
27 |
-
|
28 |
-
response = ""
|
29 |
-
|
30 |
-
for message in client.chat_completion(
|
31 |
-
messages,
|
32 |
-
max_tokens=max_tokens,
|
33 |
-
stream=True,
|
34 |
-
temperature=temperature,
|
35 |
-
top_p=top_p,
|
36 |
-
):
|
37 |
-
token = message.choices[0].delta.content
|
38 |
-
|
39 |
-
response += token
|
40 |
-
yield response
|
41 |
-
|
42 |
-
"""
|
43 |
-
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
|
44 |
-
"""
|
45 |
-
demo = gr.ChatInterface(
|
46 |
-
respond,
|
47 |
-
additional_inputs=[
|
48 |
-
gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
|
49 |
-
gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
|
50 |
-
gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
|
51 |
-
gr.Slider(
|
52 |
-
minimum=0.1,
|
53 |
-
maximum=1.0,
|
54 |
-
value=0.95,
|
55 |
-
step=0.05,
|
56 |
-
label="Top-p (nucleus sampling)",
|
57 |
-
),
|
58 |
-
],
|
59 |
-
)
|
60 |
-
|
61 |
-
|
62 |
-
if __name__ == "__main__":
|
63 |
-
demo.launch()
|
|
|
1 |
+
import time
|
2 |
import gradio as gr
|
3 |
+
from ragChain import submitUserMessage
|
4 |
|
5 |
+
def chat(message:str, history):
|
6 |
+
return submitUserMessage(message)
|
|
|
|
|
7 |
|
8 |
|
9 |
+
def slow_echo_chat(message, history):
|
10 |
+
for i in range(len(submitUserMessage(message))):
|
11 |
+
time.sleep(0.2)
|
12 |
+
yield message[: i+1]
|
13 |
+
|
14 |
+
|
15 |
+
# gr.ChatInterface(chat).launch()
|
16 |
+
gr.ChatInterface(slow_echo_chat).launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data_source.txt
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
ข้อมูลโรงเรียนสมมติ
|
2 |
+
|
3 |
+
ชื่อโรงเรียน: โรงเรียนประชาบำรุงศึกษา
|
4 |
+
|
5 |
+
ที่ตั้ง:
|
6 |
+
123/45 ถนนการศึกษา แขวงการเรียนรู้ เขตการศึกษา กรุงเทพฯ 10110
|
7 |
+
|
8 |
+
โทรศัพท์: 02-123-4567
|
9 |
+
|
10 |
+
เว็บไซต์: www.prachabamrung.ac.th
|
11 |
+
|
12 |
+
การรับสมัครนักเรียน
|
13 |
+
|
14 |
+
• วันเปิดรับสมัคร: 1 กุมภาพันธ์ 2567
|
15 |
+
• วันปิดรับสมัคร: 15 มีนาคม 2567
|
16 |
+
• วิธีการสมัคร: สมัครผ่านเว็บไซต์ของโรงเรียน หรือสมัครด้วยตนเองที่โรงเรียน
|
17 |
+
• เอกสารที่ต้องใช้:
|
18 |
+
• สำเนาทะเบียนบ้าน
|
19 |
+
• สำเนาบัตรประชาชนผู้ปกครอง
|
20 |
+
• สำเนาใบเกิดของนักเรียน
|
21 |
+
• รูปถ่ายขนาด 1 นิ้ว จำนวน 2 รูป
|
22 |
+
• ค่าเล่าเรียนสำหรับปีการศึกษา 2567:
|
23 |
+
• อนุบาล 1-3: 30,000 บาท/ปี
|
24 |
+
• ประถมศึกษาปีที่ 1-6: 40,000 บาท/ปี
|
25 |
+
• มัธยมศึกษาปีที่ 1-6: 50,000 บาท/ปี
|
26 |
+
• ทุนการศึกษา: โรงเรียนมีทุนการศึกษาสำหรับนักเรียนที่มีผลการเรียนดีและมีความสามารถพิเศษ
|
27 |
+
|
28 |
+
หลักสูตรและโปรแกรมการเรียนการสอน
|
29 |
+
|
30 |
+
• ระดับอนุบาล:
|
31 |
+
• อนุบาล 1: เรียนรู้พื้นฐานการอ่านและเขียน, การสร้างความคิดสร้างสรรค์ผ่านกิจกรรมศิลปะ
|
32 |
+
• อนุบาล 2-3: พัฒนาทักษะการสื่อสาร, การใช้ตัวเลขเบื้องต้น, การเล่นแบบมีกติกา
|
33 |
+
• ระดับประถมศึกษา:
|
34 |
+
• ประถมศึกษาปีที่ 1-3: เน้นการอ่านและเขียนภาษาไทย, คณิตศาสตร์เบื้องต้น, การเรียนรู้ธรรมชาติและสังคม
|
35 |
+
• ประถมศึกษาปีที่ 4-6: การคิดวิเคราะห์, การทดลองวิทยาศาสตร์, การเรียนรู้ภาษาอังกฤษเบื้องต้น
|
36 |
+
• ระดับมัธยมศึกษา:
|
37 |
+
• มัธยมศึกษาตอนต้น (ม.1-3): วิทยาศาสตร์, คณิตศาสตร์, ภาษาอังกฤษ, สังคมศึกษา, สุขศึกษา, ศิลปะ, การงานอาชีพ และเทคโนโลยี
|
38 |
+
• มัธยมศึกษาตอนปลาย (ม.4-6): แผนการเรียนวิทย์-คณิต, ศิลป์-ภาษา, ศิลป์-คำนวณ, ศิลป์-การกีฬา
|
39 |
+
|
40 |
+
กิจกรรมนอกหลักสูตร
|
41 |
+
|
42 |
+
• ชมรม:
|
43 |
+
• ชมรมคอมพิวเตอร์: เรียนรู้การเขียนโปรแกรมเบื้องต้น
|
44 |
+
• ชมรมดนตรีไทย: ฝึกฝนการเล่นเครื่องดนตรีไทย เช่น ระนาด, ขิม, ซอ
|
45 |
+
• ชมรมภาษาอังกฤษ: เพิ่มพูนทักษะการพูดและฟังภาษาอังกฤษ
|
46 |
+
• ชมรมว่ายน้ำ: การฝึกว่ายน้ำและเข้าร่วมการแข่งขันว่ายน้ำระดับเขต
|
47 |
+
• ชมรมหุ่นยนต์: การสร้างและโปรแกรมหุ่นยนต์เพื่อการแข่งขัน
|
48 |
+
• กิจกรรมกีฬา:
|
49 |
+
• ฟุตบอล: ฝึกซ้อมและแข่งขันระดับโรงเรียนและจังหวัด
|
50 |
+
• แบดมินตัน: การฝึกฝนและการแข่งขัน
|
51 |
+
• บาสเก็ตบอล: ทีมบาสเก็ตบอลที่ได้รับรางวัลระดับจังหวัด
|
52 |
+
|
53 |
+
สิ่งอำนวยความสะดวก
|
54 |
+
|
55 |
+
• ห้องเรียน:
|
56 |
+
• ห้องเรียนทันสมัย��ิดตั้งสื่อการเรียนการสอนครบครัน เช่น โปรเจคเตอร์, กระดานไวท์บอร์ดอิเล็กทรอนิกส์
|
57 |
+
• ห้องเรียนเฉพาะสำหรับวิชาวิทยาศาสตร์, คณิตศาสตร์, คอมพิวเตอร์
|
58 |
+
• ห้องสมุด:
|
59 |
+
• ห้องสมุดขนาดใหญ่พร้อมหนังสือเรียน, วรรณกรรม, นิตยสาร และสื่อมัลติมีเดีย
|
60 |
+
• ห้องอ่านหนังสือส่วนตัวสำหรับนักเรียนที่ต้องการความเงียบสงบ
|
61 |
+
• ศูนย์กีฬาทางน้ำ:
|
62 |
+
• สระว่ายน้ำมาตรฐานโอลิมปิก พร้อมทีมผู้ฝึกสอนมืออาชีพ
|
63 |
+
• การสอนว่ายน้ำสำหรับนักเรียนทุกระดับ
|
64 |
+
• โรงอาหาร:
|
65 |
+
• โรงอาหารสะอาดและกว้างขวาง มีเมนูอาหารที่หลากหลาย ทั้งอาหารไทยและนานาชาติ
|
66 |
+
• มีเมนูสุขภาพสำหรับนักเรียนที่ต้องการอาหารพิเศษ
|
67 |
+
|
68 |
+
คณะครูและบุคลากร
|
69 |
+
|
70 |
+
• ผู้อำนวยการโรงเรียน: ดร. สมชาย อินทร์รักษ์
|
71 |
+
• ประวัติ: จบการศึกษาระดับปริญญาเอกด้านการบริหารการศึกษา มีประสบการณ์ในการบริหารโรงเรียนมาเกือบ 20 ปี
|
72 |
+
• ครูใหญ่: นางสาว สุนิสา วงศ์จันทร์
|
73 |
+
• ประวัติ: เชี่ยวชาญด้านการพัฒนาหลักสูตรและการสอนระดับมัธยมศึกษา
|
74 |
+
• ครูประจำวิชาวิทยาศาสตร์: นาย ธนภัทร ชลธาร
|
75 |
+
• ประวัติ: มีประสบการณ์สอนวิชาวิทยาศาสตร์กว่า 15 ปี เคยได้รับรางวัลครูดีเด่นแห่งชาติ
|
76 |
+
• ครูประจำวิชาภาษาอังกฤษ: นางสาว อรพรรณ พานิช
|
77 |
+
• ประวัติ: จบการศึกษาระดับปริญญาโทจากประเทศอังกฤษ มีประสบการณ์การสอนและการฝึกภาษาอังกฤษ
|
78 |
+
|
79 |
+
เหตุการณ์สำคัญ
|
80 |
+
|
81 |
+
• พิธีเปิดภาคเรียน: 16 พฤษภาคม 2567 โดยมีพิธีบวงสรวงและการแสดงของนักเรียน
|
82 |
+
• งานวันครู: 16 มกราคม 2568 การจัดพิธีบูชาครูและการมอบรางวัลครูดีเด่น
|
83 |
+
• งานเปิดบ้านวิชาการ: 5-7 กุมภาพันธ์ 2568 แสดงผลงานทางวิชาการของนักเรียนทุกระดับชั้น
|
84 |
+
• พิธีมอบประกาศนียบัตร: 31 มีนาคม 2568 สำหรับนักเรียนชั้นมัธยมศึกษาปีที่ 6 ที่สำเร็จการศึกษา
|
85 |
+
|
86 |
+
ช่องทางการติดต่อเพิ่มเติม
|
87 |
+
|
88 |
+
• Facebook: โรงเรียนประชาบำรุงศึกษา
|
89 |
+
• Line Official: @prachabamrung
|
90 |
+
• Email: [email protected]
|
ragChain.py
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from dotenv import load_dotenv
|
2 |
+
import os
|
3 |
+
from langchain_community.document_loaders import TextLoader, WebBaseLoader
|
4 |
+
from langchain_openai import ChatOpenAI
|
5 |
+
from langchain_chroma import Chroma
|
6 |
+
from langchain_core.output_parsers import StrOutputParser
|
7 |
+
from langchain_core.runnables import RunnablePassthrough
|
8 |
+
from langchain_openai import OpenAIEmbeddings
|
9 |
+
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
10 |
+
from langchain_core.prompts import ChatPromptTemplate
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
# Load environment variables from the .env file
|
15 |
+
load_dotenv("./API_keys.env")
|
16 |
+
os.getenv('OPENAI_API_KEY')
|
17 |
+
|
18 |
+
os.environ["LANGCHAIN_TRACING_V2"] = "true"
|
19 |
+
# os.environ["LANGCHAIN_PROJECT"] = "Multi-agent Collaboration"
|
20 |
+
|
21 |
+
def get_document():
|
22 |
+
# Getting data for QA.
|
23 |
+
loader = TextLoader("./data_source.txt")
|
24 |
+
docs = loader.load()
|
25 |
+
return docs
|
26 |
+
|
27 |
+
|
28 |
+
def format_docs(docs):
|
29 |
+
return "\n\n".join(doc.page_content for doc in docs)
|
30 |
+
|
31 |
+
|
32 |
+
# Getting document for QA.
|
33 |
+
docs = get_document()
|
34 |
+
|
35 |
+
# Split documents into chunks separated.
|
36 |
+
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
|
37 |
+
splits = text_splitter.split_documents(docs)
|
38 |
+
|
39 |
+
# Text Vectorization.
|
40 |
+
vectorstore = Chroma.from_documents(documents=splits, embedding=OpenAIEmbeddings())
|
41 |
+
|
42 |
+
# Import chat gpt model.
|
43 |
+
llm = ChatOpenAI(model="gpt-4o-mini")
|
44 |
+
|
45 |
+
# Retrieve and generate using the relevant snippets of the blog.
|
46 |
+
retriever = vectorstore.as_retriever()
|
47 |
+
prompt = ChatPromptTemplate.from_messages(
|
48 |
+
[
|
49 |
+
(
|
50 |
+
"assistant",
|
51 |
+
"""You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise. Answer in the language that users use. Your are a male.
|
52 |
+
Question: {question}
|
53 |
+
Context: {context}
|
54 |
+
Answer:"""
|
55 |
+
|
56 |
+
),
|
57 |
+
]
|
58 |
+
)
|
59 |
+
|
60 |
+
rag_chain = (
|
61 |
+
{"context": retriever | format_docs, "question": RunnablePassthrough()}
|
62 |
+
| prompt
|
63 |
+
| llm
|
64 |
+
| StrOutputParser()
|
65 |
+
)
|
66 |
+
|
67 |
+
|
68 |
+
def submitUserMessage(message:str):
|
69 |
+
ans = rag_chain.invoke(message)
|
70 |
+
return ans
|
requirements.txt
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
|
|
1 |
+
gradio
|