Spaces:
Running
Running
Update ai_logic.py
Browse files- ai_logic.py +32 -15
ai_logic.py
CHANGED
@@ -3,7 +3,7 @@ import os
|
|
3 |
import json
|
4 |
import time
|
5 |
import pickle
|
6 |
-
from typing import Dict, List, Optional
|
7 |
from bs4 import BeautifulSoup
|
8 |
from urllib.parse import urljoin, urlparse
|
9 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
@@ -241,22 +241,24 @@ class HuggingFaceAPIClient:
|
|
241 |
"temperature": 0.7
|
242 |
}
|
243 |
try:
|
244 |
-
response = requests.post(url, headers=self.headers, json=payload, timeout=
|
245 |
response.raise_for_status()
|
246 |
return response.json()["choices"][0]["message"]["content"].strip()
|
247 |
-
except
|
248 |
-
return f"Erro
|
|
|
|
|
249 |
|
250 |
-
def test_model_availability(self, model_name: str) -> bool:
|
251 |
"""Testa se um modelo está disponível na API do Hugging Face."""
|
252 |
-
test_messages = [
|
253 |
-
{"role": "user", "content": "Teste de disponibilidade."}
|
254 |
-
]
|
255 |
try:
|
256 |
response = self.query_model(model_name, test_messages, max_tokens=10)
|
257 |
-
|
258 |
-
|
259 |
-
return
|
|
|
|
|
260 |
|
261 |
api_client = HuggingFaceAPIClient(HF_TOKEN)
|
262 |
|
@@ -264,13 +266,28 @@ api_client = HuggingFaceAPIClient(HF_TOKEN)
|
|
264 |
def test_and_update_models():
|
265 |
"""Testa a disponibilidade dos novos modelos e atualiza a lista MODELS."""
|
266 |
print("Testando disponibilidade dos novos modelos...")
|
|
|
|
|
|
|
267 |
for model_label, model_name in NEW_MODELS_TO_TEST:
|
268 |
-
|
|
|
269 |
MODELS[model_label] = model_name
|
270 |
-
|
271 |
else:
|
272 |
-
|
273 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
|
275 |
# --- Chat Principal ---
|
276 |
def responder_como_aldo(session_id: str, pergunta: str, modelo: str = DEFAULT_MODEL) -> str:
|
|
|
3 |
import json
|
4 |
import time
|
5 |
import pickle
|
6 |
+
from typing import Dict, List, Optional, Tuple
|
7 |
from bs4 import BeautifulSoup
|
8 |
from urllib.parse import urljoin, urlparse
|
9 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
|
|
241 |
"temperature": 0.7
|
242 |
}
|
243 |
try:
|
244 |
+
response = requests.post(url, headers=self.headers, json=payload, timeout=30)
|
245 |
response.raise_for_status()
|
246 |
return response.json()["choices"][0]["message"]["content"].strip()
|
247 |
+
except requests.exceptions.HTTPError as http_err:
|
248 |
+
return f"Erro HTTP: {http_err.response.status_code} - {http_err.response.text}"
|
249 |
+
except requests.exceptions.RequestException as e:
|
250 |
+
return f"Erro na requisição: {str(e)}"
|
251 |
|
252 |
+
def test_model_availability(self, model_name: str) -> Tuple[bool, str]:
|
253 |
"""Testa se um modelo está disponível na API do Hugging Face."""
|
254 |
+
test_messages = [{"role": "user", "content": "Teste de disponibilidade."}]
|
|
|
|
|
255 |
try:
|
256 |
response = self.query_model(model_name, test_messages, max_tokens=10)
|
257 |
+
if response.startswith("Erro"):
|
258 |
+
return False, response
|
259 |
+
return True, "Modelo disponível."
|
260 |
+
except Exception as e:
|
261 |
+
return False, f"Erro ao testar modelo: {str(e)}"
|
262 |
|
263 |
api_client = HuggingFaceAPIClient(HF_TOKEN)
|
264 |
|
|
|
266 |
def test_and_update_models():
|
267 |
"""Testa a disponibilidade dos novos modelos e atualiza a lista MODELS."""
|
268 |
print("Testando disponibilidade dos novos modelos...")
|
269 |
+
available_models = []
|
270 |
+
unavailable_models = []
|
271 |
+
|
272 |
for model_label, model_name in NEW_MODELS_TO_TEST:
|
273 |
+
is_available, message = api_client.test_model_availability(model_name)
|
274 |
+
if is_available:
|
275 |
MODELS[model_label] = model_name
|
276 |
+
available_models.append((model_label, model_name, message))
|
277 |
else:
|
278 |
+
unavailable_models.append((model_label, model_name, message))
|
279 |
+
|
280 |
+
# Exibir resultados
|
281 |
+
print("\nResultados da validação:")
|
282 |
+
if available_models:
|
283 |
+
print("\nModelos disponíveis e adicionados:")
|
284 |
+
for label, name, msg in available_models:
|
285 |
+
print(f"- {label} ({name}): {msg}")
|
286 |
+
if unavailable_models:
|
287 |
+
print("\nModelos não disponíveis:")
|
288 |
+
for label, name, msg in unavailable_models:
|
289 |
+
print(f"- {label} ({name}): {msg}")
|
290 |
+
print(f"\nTotal de modelos disponíveis em MODELS: {len(MODELS)}")
|
291 |
|
292 |
# --- Chat Principal ---
|
293 |
def responder_como_aldo(session_id: str, pergunta: str, modelo: str = DEFAULT_MODEL) -> str:
|