File size: 3,159 Bytes
b6a467a
 
54072ad
4e2c9cd
 
cd618c5
 
29d1f72
241003b
cd618c5
241003b
b6a467a
5606667
 
 
29d1f72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54072ad
29d1f72
 
 
 
54072ad
29d1f72
 
 
cd618c5
 
 
 
e63c0a3
cd618c5
b6a467a
cd618c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54072ad
b6a467a
cd618c5
b6a467a
 
 
 
 
 
 
 
 
 
 
54072ad
cd618c5
b6a467a
54072ad
b6a467a
 
 
cd618c5
b6a467a
 
 
 
 
 
cd618c5
b6a467a
 
 
cd618c5
b6a467a
 
cd618c5
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import gradio as gr
from huggingface_hub import InferenceClient
from datasets import load_dataset
import faiss
import numpy as np
import os
import time
import json 

# βœ… Ensure FAISS is installed
os.system("pip install faiss-cpu")

def log(message):
    print(f"βœ… {message}")


DATA_DIR = "data"

def load_local_dataset(dataset_name):
    """Load a dataset from a JSON file."""
    file_path = os.path.join(DATA_DIR, f"{dataset_name}.json")
    
    if os.path.exists(file_path):
        with open(file_path, "r") as f:
            data = json.load(f)
        print(f"βœ… Loaded {dataset_name} from {file_path}")
        return data
    else:
        print(f"❌ ERROR: {dataset_name} file not found!")
        return None

# βœ… Load all datasets from local storage
datasets = {
    "sales": load_local_dataset("sales"),
    "blended": load_local_dataset("blended"),
    "dialog": load_local_dataset("dialog"),
    "multiwoz": load_local_dataset("multiwoz"),
}

print("βœ… Datasets loaded from local storage!")


# βœ… Step 1: Run Embedding Script (Import and Run)
log("πŸš€ Running embeddings script...")
import embeddings  # This will automatically run embeddings.py

time.sleep(5)  # Wait for embeddings to be created

# βœ… Step 2: Check FAISS index
def check_faiss():
    index_path = "my_embeddings"  # Adjust if needed

    try:
        index = faiss.read_index(index_path)
        num_vectors = index.ntotal
        dim = index.d

        if num_vectors > 0:
            return f"πŸ“Š FAISS index contains {num_vectors} vectors.\nβœ… Embedding dimension: {dim}"
        else:
            return "⚠️ No embeddings found in FAISS index!"

    except Exception as e:
        return f"❌ ERROR: Failed to load FAISS index - {e}"

log("πŸ” Checking FAISS embeddings...")
faiss_status = check_faiss()
log(faiss_status)

# βœ… Step 3: Initialize chatbot
client = InferenceClient("mistralai/Mistral-7B-Instruct-v0.3")

def respond(message, history, system_message, max_tokens, temperature, top_p):
    messages = [{"role": "system", "content": system_message}]

    for val in history:
        if val[0]:
            messages.append({"role": "user", "content": val[0]})
        if val[1]:
            messages.append({"role": "assistant", "content": val[1]})

    messages.append({"role": "user", "content": message})
    response = ""

    for message in client.chat_completions(
        messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p
    ):
        token = message["choices"][0]["delta"]["content"]
        response += token
        yield response

# βœ… Step 4: Start Chatbot Interface
demo = gr.ChatInterface(
    respond,
    additional_inputs=[
        gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
        gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
        gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
        gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
    ],
)

log("βœ… All systems go! Launching chatbot...")
if __name__ == "__main__":
    demo.launch()