salomonsky commited on
Commit
f7f1518
·
verified ·
1 Parent(s): 2b02635

Upload config.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. config.py +185 -0
config.py ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import customtkinter as ctk
2
+ import yaml
3
+ import threading
4
+ import google.generativeai as genai
5
+ from huggingface_utils import HuggingFaceUtils
6
+
7
+ class ConfigTab:
8
+ def __init__(self, parent_tab, config):
9
+ self.config = config.get('api_keys', {})
10
+
11
+ # Frame principal
12
+ self.frame = ctk.CTkFrame(parent_tab)
13
+ self.frame.pack(fill="both", expand=True, padx=10, pady=10)
14
+
15
+ # Título
16
+ config_title = ctk.CTkLabel(
17
+ self.frame,
18
+ text="Configuración de APIs",
19
+ font=("Arial", 16, "bold")
20
+ )
21
+ config_title.pack(pady=10)
22
+
23
+ # Frame para API de HuggingFace
24
+ hf_frame = ctk.CTkFrame(self.frame)
25
+ hf_frame.pack(fill="x", padx=10, pady=5)
26
+
27
+ hf_label = ctk.CTkLabel(hf_frame, text="🤗 HuggingFace API Token:")
28
+ hf_label.pack(side="left", padx=5)
29
+
30
+ self.hf_token_entry = ctk.CTkEntry(
31
+ hf_frame,
32
+ width=300,
33
+ show="•"
34
+ )
35
+ self.hf_token_entry.pack(side="left", padx=5)
36
+ self.hf_token_entry.insert(0, self.config.get('HUGGINGFACE_TOKEN', ''))
37
+
38
+ # Frame para API de Google
39
+ google_frame = ctk.CTkFrame(self.frame)
40
+ google_frame.pack(fill="x", padx=10, pady=5)
41
+
42
+ google_label = ctk.CTkLabel(google_frame, text="🔑 Google API Key:")
43
+ google_label.pack(side="left", padx=5)
44
+
45
+ self.google_key_entry = ctk.CTkEntry(
46
+ google_frame,
47
+ width=300,
48
+ show="•"
49
+ )
50
+ self.google_key_entry.pack(side="left", padx=5)
51
+ self.google_key_entry.insert(0, self.config.get('GOOGLE_API_KEY', ''))
52
+
53
+ # Frame para ElevenLabs
54
+ eleven_frame = ctk.CTkFrame(self.frame)
55
+ eleven_frame.pack(fill="x", padx=10, pady=5)
56
+
57
+ eleven_label = ctk.CTkLabel(eleven_frame, text="🎙️ ElevenLabs API Key:")
58
+ eleven_label.pack(side="left", padx=5)
59
+
60
+ self.eleven_key_entry = ctk.CTkEntry(
61
+ eleven_frame,
62
+ width=300,
63
+ show="•"
64
+ )
65
+ self.eleven_key_entry.pack(side="left", padx=5)
66
+ self.eleven_key_entry.insert(0, self.config.get('ELEVENLABS_API_KEY', ''))
67
+
68
+ # Frame para botones
69
+ button_frame = ctk.CTkFrame(self.frame)
70
+ button_frame.pack(pady=20)
71
+
72
+ # Botón para mostrar/ocultar tokens
73
+ self.show_tokens_button = ctk.CTkButton(
74
+ button_frame,
75
+ text="👁️ Mostrar Tokens",
76
+ command=self.toggle_token_visibility,
77
+ width=120
78
+ )
79
+ self.show_tokens_button.pack(side="left", padx=5)
80
+
81
+ # Botón para guardar
82
+ save_button = ctk.CTkButton(
83
+ button_frame,
84
+ text="💾 Guardar",
85
+ command=self.save_config,
86
+ width=120
87
+ )
88
+ save_button.pack(side="left", padx=5)
89
+
90
+ # Botón para probar APIs
91
+ test_button = ctk.CTkButton(
92
+ button_frame,
93
+ text="🔄 Probar APIs",
94
+ command=self.test_apis,
95
+ width=120
96
+ )
97
+ test_button.pack(side="left", padx=5)
98
+
99
+ def load_config(self):
100
+ """Cargar configuración desde YAML"""
101
+ try:
102
+ with open('config.yaml', 'r') as file:
103
+ return yaml.safe_load(file)
104
+ except FileNotFoundError:
105
+ return {'api_keys': {'HUGGINGFACE_TOKEN': '', 'GOOGLE_API_KEY': '', 'ELEVENLABS_API_KEY': ''}}
106
+
107
+ def toggle_token_visibility(self):
108
+ """Alternar visibilidad de tokens"""
109
+ if self.hf_token_entry.cget('show') == '•':
110
+ self.hf_token_entry.configure(show="")
111
+ self.google_key_entry.configure(show="")
112
+ self.eleven_key_entry.configure(show="")
113
+ self.show_tokens_button.configure(text="🔒 Ocultar Tokens")
114
+ else:
115
+ self.hf_token_entry.configure(show="•")
116
+ self.google_key_entry.configure(show="•")
117
+ self.eleven_key_entry.configure(show="•")
118
+ self.show_tokens_button.configure(text="👁️ Mostrar Tokens")
119
+
120
+ def save_config(self):
121
+ """Guardar configuración en YAML"""
122
+ try:
123
+ with open('config.yaml', 'r') as file:
124
+ current_config = yaml.safe_load(file) or {}
125
+
126
+ # Actualizar solo las claves de API
127
+ current_config['api_keys'] = {
128
+ 'HUGGINGFACE_TOKEN': self.hf_token_entry.get(),
129
+ 'GOOGLE_API_KEY': self.google_key_entry.get(),
130
+ 'ELEVENLABS_API_KEY': self.eleven_key_entry.get()
131
+ }
132
+
133
+ with open('config.yaml', 'w') as file:
134
+ yaml.dump(current_config, file)
135
+
136
+ self.show_message("✅ Configuración guardada correctamente")
137
+ return True
138
+ except Exception as e:
139
+ self.show_message(f"❌ Error guardando configuración: {e}")
140
+ return False
141
+
142
+ def test_apis(self):
143
+ """Probar conexión con las APIs"""
144
+ def test_in_thread():
145
+ try:
146
+ # Probar HuggingFace
147
+ huggingface = HuggingFaceUtils(token=self.hf_token_entry.get())
148
+ hf_response = huggingface.generate_response("Test", max_length=10)
149
+ hf_ok = "✅" if hf_response else "❌"
150
+
151
+ # Probar Gemini
152
+ try:
153
+ genai.configure(api_key=self.google_key_entry.get())
154
+ model = genai.GenerativeModel('gemini-pro')
155
+ gemini_response = model.generate_content("Test")
156
+ gemini_ok = "✅" if gemini_response else "❌"
157
+ except Exception:
158
+ gemini_ok = "❌"
159
+
160
+ # Probar ElevenLabs
161
+ try:
162
+ elevenlabs = ElevenLabsUtils(api_key=self.eleven_key_entry.get())
163
+ elevenlabs_response = elevenlabs.generate_response("Test")
164
+ elevenlabs_ok = "✅" if elevenlabs_response else "❌"
165
+ except Exception:
166
+ elevenlabs_ok = "❌"
167
+
168
+ self.show_message(
169
+ f"HuggingFace: {hf_ok}\n"
170
+ f"Google Gemini: {gemini_ok}\n"
171
+ f"ElevenLabs: {elevenlabs_ok}"
172
+ )
173
+ except Exception as e:
174
+ self.show_message(f"❌ Error probando APIs: {e}")
175
+
176
+ threading.Thread(target=test_in_thread, daemon=True).start()
177
+
178
+ def show_message(self, message):
179
+ """Mostrar mensaje en ventana emergente"""
180
+ dialog = ctk.CTkInputDialog(
181
+ text=message,
182
+ title="Mensaje",
183
+ button_text="OK"
184
+ )
185
+ dialog.get_input()