Spaces:
Sleeping
Sleeping
| import google.generativeai as genai | |
| import json | |
| import pandas as pd | |
| # Cấu hình API Key (Lấy tại aistudio.google.com) | |
| genai.configure(api_key="AIzaSyBpGsHI4GR_APcMVSIcNRDt-rupEOOUDJc") | |
| print("Danh sách các model bạn có thể dùng:") | |
| for m in genai.list_models(): | |
| if 'generateContent' in m.supported_generation_methods: | |
| print(f"- {m.name}") | |
| def evaluate_rag_pipeline(question, retrieved_contexts, model_answer, ground_truth): | |
| """ | |
| Hàm này dùng Gemini để chấm điểm 3 khía cạnh của RAG. | |
| """ | |
| # Gom các đoạn văn tìm được thành 1 chuỗi để Gemini đọc | |
| context_text = "\n---\n".join(retrieved_contexts) | |
| prompt = f""" | |
| Bạn là chuyên gia đánh giá hệ thống RAG (Retrieval-Augmented Generation). | |
| Hãy phân tích và chấm điểm các yếu tố sau dựa trên dữ liệu cung cấp: | |
| 1. INPUT DATA: | |
| - Câu hỏi (Query): "{question}" | |
| - Ngữ cảnh tìm được (Retrieved Contexts): | |
| "{context_text}" | |
| - Câu trả lời của Bot (Generated Answer): "{model_answer}" | |
| - Đáp án chuẩn (Ground Truth): "{ground_truth}" | |
| 2. NHIỆM VỤ ĐÁNH GIÁ (Thang điểm 0 hoặc 1): | |
| A. Context_Relevance (0/1): | |
| - 1: Nếu trong 'Ngữ cảnh tìm được' CÓ chứa thông tin cần thiết để trả lời câu hỏi. | |
| - 0: Nếu ngữ cảnh không liên quan hoặc thiếu thông tin quan trọng. | |
| B. Faithfulness (0/1): | |
| - 1: Nếu 'Câu trả lời của Bot' chỉ dựa trên thông tin trong 'Ngữ cảnh tìm được', không bịa đặt. | |
| - 0: Nếu Bot đưa ra thông tin không có trong ngữ cảnh (hallucination) hoặc mâu thuẫn với ngữ cảnh. | |
| C. Answer_Correctness (0/1): | |
| - 1: Nếu 'Câu trả lời của Bot' trùng khớp ý nghĩa với 'Đáp án chuẩn'. | |
| - 0: Nếu sai lệch ý nghĩa. | |
| 3. OUTPUT FORMAT (JSON ONLY): | |
| Trả về đúng định dạng JSON này, không thêm lời dẫn: | |
| {{ | |
| "context_score": int, | |
| "faithfulness_score": int, | |
| "correctness_score": int, | |
| "reason": "Giải thích ngắn gọn tại sao chấm điểm như vậy" | |
| }} | |
| """ | |
| try: | |
| model = genai.GenerativeModel('gemini-2.5-flash', generation_config={"response_mime_type": "application/json"}) | |
| response = model.generate_content(prompt) | |
| return json.loads(response.text) | |
| except Exception as e: | |
| print(f"Lỗi API: {e}") | |
| return {"context_score": 0, "faithfulness_score": 0, "correctness_score": 0, "reason": "Error"} |