hoangkha1810 commited on
Commit
fd6b30d
·
verified ·
1 Parent(s): 25ae812

Update generator.py

Browse files
Files changed (1) hide show
  1. generator.py +20 -6
generator.py CHANGED
@@ -29,7 +29,12 @@ def format_sources(docs):
29
  sources.add(filename)
30
  return "\n".join(f"- {src}" for src in sorted(sources))
31
 
32
- def answer_query(query, model="Gemini Pro", temperature=0.2):
 
 
 
 
 
33
  all_docs = retrieve_docs(query)
34
  if not all_docs:
35
  return "Không tìm thấy tài liệu liên quan để trả lời.", []
@@ -37,23 +42,31 @@ def answer_query(query, model="Gemini Pro", temperature=0.2):
37
  docs = filter_relevant_docs(all_docs, query)
38
  context = "\n\n".join([doc.page_content for doc in docs])
39
 
 
 
 
 
 
 
 
 
40
  prompt = f"""
41
- Dựa trên tài liệu sau, hãy trả lời câu hỏi theo phong cách trang trọng, lịch sự và chuyên nghiệp:
42
  {context}
43
  Câu hỏi: {query}
44
-
45
  Yêu cầu:
46
  - Luôn sử dụng từ ngữ lịch sự ("Bạn cần...", "Vui lòng...", "Sau khi...").
47
  - Tránh dùng từ nói miệng như "nhé", "nha", "ok".
48
  - Câu trả lời cần đầy đủ, rõ ràng, không mơ hồ.
 
49
  - Chỉ sử dụng thông tin có trong tài liệu. Nếu không có thông tin liên quan, trả lời: "Thông tin không có trong tài liệu được cung cấp."
50
  - Không được nhắc đến việc đã tham khảo hay nguồn tài liệu.
51
  - Nếu người dùng yêu cầu, vui lòng cung cấp câu trả lời bằng ngôn ngữ khác hoặc viết code chính xác, đầy đủ theo yêu cầu.
52
  - Trả lời như một chatbot thông thường, không cần giải thích về quy trình hay tài liệu.
53
-
54
  Trả lời:
55
  """
56
 
 
57
  url = f"https://generativelanguage.googleapis.com/v1/models/gemini-2.0-flash:generateContent?key={API_KEY}"
58
  headers = {"Content-Type": "application/json"}
59
  payload = {
@@ -64,10 +77,11 @@ Trả lời:
64
  response = requests.post(url, headers=headers, json=payload)
65
  data = response.json()
66
 
 
67
  try:
68
  answer = data['candidates'][0]['content']['parts'][0]['text']
69
  except Exception as e:
70
- print("🔴 Response từ Gemini:", data)
71
  answer = "Lỗi khi gọi Gemini API: " + str(e)
72
 
73
- return answer, docs
 
29
  sources.add(filename)
30
  return "\n".join(f"- {src}" for src in sorted(sources))
31
 
32
+ def answer_query(query, model="Gemini Pro", temperature=0.2, history=None):
33
+ # Khởi tạo lịch sử nếu None
34
+ if history is None:
35
+ history = []
36
+
37
+ # Lấy và lọc tài liệu
38
  all_docs = retrieve_docs(query)
39
  if not all_docs:
40
  return "Không tìm thấy tài liệu liên quan để trả lời.", []
 
42
  docs = filter_relevant_docs(all_docs, query)
43
  context = "\n\n".join([doc.page_content for doc in docs])
44
 
45
+ # Định dạng lịch sử hội thoại
46
+ history_text = ""
47
+ if history:
48
+ history_text = "Lịch sử hội thoại:\n"
49
+ for exchange in history:
50
+ history_text += f"Người dùng: {exchange['user']}\nTrợ lý: {exchange['assistant']}\n\n"
51
+
52
+ # Tạo prompt với lịch sử hội thoại
53
  prompt = f"""
54
+ {history_text}Dựa trên tài liệu sau, hãy trả lời câu hỏi theo phong cách trang trọng, lịch sự và chuyên nghiệp:
55
  {context}
56
  Câu hỏi: {query}
 
57
  Yêu cầu:
58
  - Luôn sử dụng từ ngữ lịch sự ("Bạn cần...", "Vui lòng...", "Sau khi...").
59
  - Tránh dùng từ nói miệng như "nhé", "nha", "ok".
60
  - Câu trả lời cần đầy đủ, rõ ràng, không mơ hồ.
61
+ - Đọc kĩ các tài liệu để đưa ra câu trả lời liên quan và chính xác nhất
62
  - Chỉ sử dụng thông tin có trong tài liệu. Nếu không có thông tin liên quan, trả lời: "Thông tin không có trong tài liệu được cung cấp."
63
  - Không được nhắc đến việc đã tham khảo hay nguồn tài liệu.
64
  - Nếu người dùng yêu cầu, vui lòng cung cấp câu trả lời bằng ngôn ngữ khác hoặc viết code chính xác, đầy đủ theo yêu cầu.
65
  - Trả lời như một chatbot thông thường, không cần giải thích về quy trình hay tài liệu.
 
66
  Trả lời:
67
  """
68
 
69
+ # Gọi API Gemini
70
  url = f"https://generativelanguage.googleapis.com/v1/models/gemini-2.0-flash:generateContent?key={API_KEY}"
71
  headers = {"Content-Type": "application/json"}
72
  payload = {
 
77
  response = requests.post(url, headers=headers, json=payload)
78
  data = response.json()
79
 
80
+ # Xử lý phản hồi từ API
81
  try:
82
  answer = data['candidates'][0]['content']['parts'][0]['text']
83
  except Exception as e:
84
+ print("🔴 Phản hồi từ Gemini:", data)
85
  answer = "Lỗi khi gọi Gemini API: " + str(e)
86
 
87
+ return answer, docs