AniseF commited on
Commit
44298e7
·
verified ·
1 Parent(s): 3e2a932

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +18 -17
utils.py CHANGED
@@ -1,38 +1,39 @@
1
- import requests
2
  import os
3
  import openai
4
- from config import MODEL_PRIORITY_A, MODEL_PRIORITY_B
5
 
6
- def get_doc_content(url):
7
- try:
8
- response = requests.get(url)
9
- return response.text if response.status_code == 200 else "Erro ao ler documento."
10
- except:
11
- return "Falha na conexão com o Google Docs."
12
 
13
  def call_openrouter(prompt, mode):
14
  api_key = os.getenv("OPENROUTER_API_KEY")
 
 
15
  client = openai.OpenAI(
16
  base_url="https://openrouter.ai/api/v1",
17
  api_key=api_key
18
  )
19
 
 
20
  chain = MODEL_PRIORITY_A if mode == "Alta Precisão (Filológico)" else MODEL_PRIORITY_B
21
 
22
- for model_name in chain: # Mudei para model_name para ser bem claro
23
  try:
24
- # Note que agora passamos max_tokens e temperature direto na função do cliente
25
  completion = client.chat.completions.create(
26
  model=model_name,
27
  messages=[{"role": "user", "content": prompt}],
28
- max_tokens=4000, # Aqui o limite aumentado!
29
- temperature=0.3, # Precisão filológica
30
- timeout=60 # Aumentei para 60s porque análises longas demoram
31
  )
32
- return completion.choices[0].message.content, model_name
33
 
 
 
 
 
34
  except Exception as e:
35
- print(f"Falha no modelo {model_name}: {e}")
36
- continue
37
 
38
- return "Todos os modelos falharam. Verifique seu saldo ou conexão no OpenRouter.", "Nenhum"
 
 
1
  import os
2
  import openai
 
3
 
4
+ # Definição das listas de prioridade
5
+ MODEL_PRIORITY_A = ["anthropic/claude-3.5-sonnet", "openai/gpt-4o", "google/gemini-pro-1.5"]
6
+ MODEL_PRIORITY_B = ["google/gemini-flash-1.5", "mistralai/mistral-7b-instruct", "cohere/command-r"]
 
 
 
7
 
8
  def call_openrouter(prompt, mode):
9
  api_key = os.getenv("OPENROUTER_API_KEY")
10
+
11
+ # Inicializa o cliente OpenRouter (padrão OpenAI)
12
  client = openai.OpenAI(
13
  base_url="https://openrouter.ai/api/v1",
14
  api_key=api_key
15
  )
16
 
17
+ # Seleciona a estratégia
18
  chain = MODEL_PRIORITY_A if mode == "Alta Precisão (Filológico)" else MODEL_PRIORITY_B
19
 
20
+ for model_name in chain:
21
  try:
22
+ # A chamada para a IA com os parâmetros de fôlego e precisão
23
  completion = client.chat.completions.create(
24
  model=model_name,
25
  messages=[{"role": "user", "content": prompt}],
26
+ max_tokens=6000, # Fôlego suficiente para não cortar
27
+ temperature=0.1, # Baixa temperatura = mais foco e menos erro de idioma
28
+ timeout=300 # 2 minutos de espera para análises profundas
29
  )
 
30
 
31
+ # Se deu certo, retorna o texto e o nome do modelo usado
32
+ if completion.choices[0].message.content:
33
+ return completion.choices[0].message.content, model_name
34
+
35
  except Exception as e:
36
+ print(f"Erro no modelo {model_name}: {str(e)}")
37
+ continue # Se um falhar, tenta o próximo da lista
38
 
39
+ return "Lamento, todos os modelos falharam na análise. Verifique sua conexão ou saldo.", "Nenhum"