|
1 |
| -import tkinter as tk |
2 |
| -from tkinter import filedialog |
3 |
| -from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader |
4 |
| -import os |
5 |
| - |
6 |
| -os.environ['OPENAI_API_KEY'] = 'Your API key' |
7 |
| - |
8 |
| -class MyApp(tk.Frame): |
9 |
| - def __init__(self, master=None): |
10 |
| - super().__init__(master) |
11 |
| - self.master = master |
12 |
| - self.master.configure(bg='#f0f0f0') |
13 |
| - self.pack(fill='both', expand=True) |
14 |
| - self.create_widgets() |
15 |
| - |
16 |
| - def create_widgets(self): |
17 |
| - self.select_dir_button = tk.Button(self, text="Select Directory", command=self.select_directory, bg='#0c7cd5', fg='white', activebackground='#0a5ca1', activeforeground='white', borderwidth=0, padx=10, pady=5) |
18 |
| - self.select_dir_button.pack(pady=(10,0)) |
19 |
| - |
20 |
| - self.query_label = tk.Label(self, text="Query:", bg='#f0f0f0') |
21 |
| - self.query_label.pack() |
22 |
| - |
23 |
| - self.query_entry = tk.Entry(self) |
24 |
| - self.query_entry.pack(pady=(0,10), ipady=5, ipadx=10) |
25 |
| - |
26 |
| - self.search_button = tk.Button(self, text="Search", command=self.search, bg='#0c7cd5', fg='white', activebackground='#0a5ca1', activeforeground='white', borderwidth=0, padx=10, pady=5) |
27 |
| - self.search_button.pack(pady=(0,10)) |
28 |
| - |
29 |
| - self.results_text = tk.Text(self, height=10, bg='white', fg='#333333', font=('Arial', 12), padx=10, pady=10) |
30 |
| - self.results_text.pack(fill='both', expand=True, padx=10) |
31 |
| - |
32 |
| - def select_directory(self): |
33 |
| - self.directory = filedialog.askdirectory() |
34 |
| - |
35 |
| - def search(self): |
36 |
| - try: |
37 |
| - documents = SimpleDirectoryReader(self.directory).load_data() |
38 |
| - except AttributeError: |
39 |
| - self.results_text.delete('1.0', tk.END) |
40 |
| - self.results_text.insert(tk.END, "Please select a directory first.") |
41 |
| - return |
42 |
| - |
43 |
| - index = GPTSimpleVectorIndex(documents) |
44 |
| - index.save_to_disk('index.json') |
45 |
| - |
46 |
| - # load from disk |
47 |
| - index = GPTSimpleVectorIndex.load_from_disk('index.json') |
48 |
| - |
49 |
| - query = self.query_entry.get() |
50 |
| - response = index.query(query) |
51 |
| - self.results_text.delete('1.0', tk.END) |
52 |
| - self.results_text.insert(tk.END, response) |
53 |
| - |
54 |
| -root = tk.Tk() |
55 |
| -root.title("Document Chatbot") |
56 |
| -root.geometry("500x500") |
57 |
| -app = MyApp(root) |
58 |
| -app.mainloop() |
| 1 | +... |
0 commit comments