File size: 1,826 Bytes
7d95632
 
 
5fc8a20
dee6c4d
 
 
7d95632
5fc8a20
 
 
7d95632
 
5fc8a20
 
7d95632
 
 
 
 
 
 
 
 
 
 
 
 
 
5fc8a20
 
7d95632
 
 
5fc8a20
7d95632
 
 
5fc8a20
 
7d95632
ac9ee5b
 
 
 
5fc8a20
 
 
7d95632
 
 
f6a32f7
ac9ee5b
 
 
 
 
7d95632
 
 
5fc8a20
f6a32f7
649399f
 
5fc8a20
649399f
 
 
ac9ee5b
649399f
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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
72
import sqlite3
import json
from datetime import datetime
import os

DB_PATH = "data/evaluations.db"

def init_db():
    # Create data folder first, then connect
    os.makedirs(os.path.dirname(DB_PATH), exist_ok=True)
    
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()

    cursor.execute("""
        CREATE TABLE IF NOT EXISTS evaluations (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            context TEXT,
            question TEXT,
            llm_response TEXT,
            final_verdict TEXT,
            cosine_score REAL,
            bert_score REAL,
            nli_label TEXT,
            nli_score REAL,
            fluency_verdict TEXT,
            full_result TEXT,
            created_at TEXT
        )
    """)

    conn.commit()
    conn.close()


def save_evaluation(context, question, llm_response, result):
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()

    cursor.execute("""
        INSERT INTO evaluations (
            context, question, llm_response,
            final_verdict, cosine_score, bert_score,
            nli_label, nli_score, fluency_verdict,
            full_result, created_at
        )
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    """, (
        context,
        question,
        llm_response,
        result["final_verdict"],
        result["cosine"]["score"],
        result["bert_score"]["score"],
        result["nli"]["label"],
        result["nli"]["score"],
        result["fluency"]["verdict"],
        json.dumps(result),
        datetime.now().isoformat()
    ))

    conn.commit()
    conn.close()


def get_all_evaluations():
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM evaluations ORDER BY created_at DESC")
    rows = cursor.fetchall()
    conn.close()
    return rows