VietCat commited on
Commit
c6d8421
·
1 Parent(s): f7b16f9

fix prompt

Browse files
Files changed (3) hide show
  1. app.py +5 -1
  2. rag_core/business.py +16 -7
  3. ui.py +1 -1
app.py CHANGED
@@ -4,19 +4,23 @@ from ui import app_ui
4
  import gradio as gr
5
  import logging
6
 
 
 
7
  app = FastAPI()
8
 
9
  @app.post("/ask")
10
  async def ask_api(req: Request):
11
  data = await req.json()
12
  query = data.get("query", "")
 
13
  return answer_query(query)
14
 
15
  @app.post("/rescan")
16
  async def rescan_api():
 
17
  return rescan_index()
18
 
19
  # Mount Gradio UI vào FastAPI tại root
20
  app = gr.mount_gradio_app(app, app_ui, path="")
21
 
22
- logging.info("✅ Gradio UI đã mount vào root /")
 
4
  import gradio as gr
5
  import logging
6
 
7
+ logging.info("🚀 Khởi động ứng dụng FastAPI...")
8
+
9
  app = FastAPI()
10
 
11
  @app.post("/ask")
12
  async def ask_api(req: Request):
13
  data = await req.json()
14
  query = data.get("query", "")
15
+ logging.info(f"📥 API /ask nhận query: {query}")
16
  return answer_query(query)
17
 
18
  @app.post("/rescan")
19
  async def rescan_api():
20
+ logging.info("♻️ API /rescan được gọi")
21
  return rescan_index()
22
 
23
  # Mount Gradio UI vào FastAPI tại root
24
  app = gr.mount_gradio_app(app, app_ui, path="")
25
 
26
+ logging.info("✅ Gradio UI đã mount vào root /")
rag_core/business.py CHANGED
@@ -8,6 +8,8 @@ from rag_core.utils import log_timed
8
  retriever = Retriever()
9
  ready = retriever.index is not None
10
 
 
 
11
  def is_ready():
12
  return ready
13
 
@@ -18,7 +20,9 @@ def build_index():
18
  try:
19
  with open("data/raw_law.txt", "r", encoding="utf-8") as f:
20
  text = f.read()
 
21
  chunks = chunk_legal_text(text)
 
22
  retriever.build(chunks, get_embedding)
23
  ready = True
24
  logging.info("✅ Xây FAISS index thành công.")
@@ -38,7 +42,9 @@ def rescan_index():
38
  try:
39
  with open("data/raw_law.txt", "r", encoding="utf-8") as f:
40
  text = f.read()
 
41
  chunks = chunk_legal_text(text)
 
42
  retriever.rescan_and_append(chunks, get_embedding)
43
  logging.info("✅ Đã cập nhật index với các chunk mới.")
44
  return {"status": "✅ Rescan & update thành công."}
@@ -58,16 +64,19 @@ def answer_query(query: str) -> str:
58
  for i, doc in enumerate(docs):
59
  logging.info(f"🔍 Đoạn {i+1}: {doc[:300]}{'...' if len(doc) > 300 else ''}")
60
 
61
- formatted_context = "\n\n".join([f"[Văn bản {i+1}]\n{doc}" for i, doc in enumerate(docs)])
62
  prompt = (
63
- "Bạn là một trợ lý pháp lý. Dưới đây các trích đoạn liên quan từ văn bản luật:\n\n"
64
- f"{formatted_context}\n\n"
65
- "Hãy trả lời câu hỏi sau dựa trên các trích đoạn trên. "
66
- "Nếu không đủ thông tin, hãy nói rõ là không tìm thấy.\n\n"
67
- f"Câu hỏi: {query}\nTrả lời:"
68
  )
 
 
 
 
 
 
69
  answer = generate_answer(prompt)
 
70
  return {"answer": answer}
71
  except Exception as e:
72
  logging.error(f"❌ Lỗi khi trả lời câu hỏi: {e}")
73
- return {"error": str(e)}
 
8
  retriever = Retriever()
9
  ready = retriever.index is not None
10
 
11
+ logging.info("📦 Khởi tạo retriever")
12
+
13
  def is_ready():
14
  return ready
15
 
 
20
  try:
21
  with open("data/raw_law.txt", "r", encoding="utf-8") as f:
22
  text = f.read()
23
+ logging.info(f"📄 Đọc dữ liệu xong, độ dài: {len(text)} ký tự")
24
  chunks = chunk_legal_text(text)
25
+ logging.info(f"✂️ Chunking xong, tổng số chunk: {len(chunks)}")
26
  retriever.build(chunks, get_embedding)
27
  ready = True
28
  logging.info("✅ Xây FAISS index thành công.")
 
42
  try:
43
  with open("data/raw_law.txt", "r", encoding="utf-8") as f:
44
  text = f.read()
45
+ logging.info(f"📄 Đọc dữ liệu xong, độ dài: {len(text)} ký tự")
46
  chunks = chunk_legal_text(text)
47
+ logging.info(f"🔁 Rescan: tổng số chunk mới: {len(chunks)}")
48
  retriever.rescan_and_append(chunks, get_embedding)
49
  logging.info("✅ Đã cập nhật index với các chunk mới.")
50
  return {"status": "✅ Rescan & update thành công."}
 
64
  for i, doc in enumerate(docs):
65
  logging.info(f"🔍 Đoạn {i+1}: {doc[:300]}{'...' if len(doc) > 300 else ''}")
66
 
 
67
  prompt = (
68
+ "Bạn là một trợ lý AI có kiến thức pháp luật, hãy trả lời câu hỏi dựa trên các đoạn luật sau. "
69
+ "Chỉ sử dụng thông tin có trong các đoạn, không tự đoán.\n"
 
 
 
70
  )
71
+ prompt += "\n\n".join(docs)
72
+ prompt += f"\n\nCâu hỏi: {query}\nTrả lời:"
73
+
74
+ logging.info("🧠 Prompt gửi đến LLM:")
75
+ logging.info(prompt[:1000] + ("..." if len(prompt) > 1000 else ""))
76
+
77
  answer = generate_answer(prompt)
78
+ logging.info(f"💬 Câu trả lời từ LLM: {answer}")
79
  return {"answer": answer}
80
  except Exception as e:
81
  logging.error(f"❌ Lỗi khi trả lời câu hỏi: {e}")
82
+ return {"error": str(e)}
ui.py CHANGED
@@ -4,7 +4,6 @@ from rag_core.business import build_index, rescan_index, answer_query, retriever
4
  import os
5
  os.environ["SPACE_HOST"] = "https://vietcat-ragsample.hf.space"
6
 
7
-
8
  logging.info("🎨 Khởi tạo Gradio UI...")
9
 
10
  def handle_rebuild():
@@ -18,6 +17,7 @@ def handle_rebuild():
18
  return result["status"]
19
 
20
  def handle_query(query):
 
21
  result = answer_query(query)
22
  return result.get("answer", result.get("error", "❌ Lỗi không xác định."))
23
 
 
4
  import os
5
  os.environ["SPACE_HOST"] = "https://vietcat-ragsample.hf.space"
6
 
 
7
  logging.info("🎨 Khởi tạo Gradio UI...")
8
 
9
  def handle_rebuild():
 
17
  return result["status"]
18
 
19
  def handle_query(query):
20
+ logging.info(f"📨 Người dùng gửi truy vấn: {query}")
21
  result = answer_query(query)
22
  return result.get("answer", result.get("error", "❌ Lỗi không xác định."))
23