File size: 1,377 Bytes
302ee5a
0aec042
302ee5a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79ced5a
 
302ee5a
 
 
 
 
 
 
 
 
0aec042
 
 
 
 
 
 
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
from pathlib import Path
from typing import Optional
import openai
import os

CONFIG_DIR = Path("./config")

REASONER_PROVIDERS_MAP = {
    "deepseek-r1-distill-llama-70b": "groq",
    "deepseek-ai/deepseek-r1": "nvidia",
    "deepseek/deepseek-r1:free": "openrouter"
}

MODELS_PROVIDERS_MAP = {
    "mistral-small-latest": "mistral",
    "open-mistral-nemo": "mistral",
    "mistral-large-latest": "mistral",
    "gemini-2.0-flash-exp": "gemini",
    "gemma2-9b-it": "groq",
    "llama-3.3-70b-versatile": "groq",
    "llama-3.2-3b-preview": "groq"
}

PROVIDERS_API_KEYS = {
    "gemini": os.environ.get("GEMINI_API_KEY"),
    "groq": os.environ.get("GROQ_API_KEY"),
    "mistral": os.environ.get("MISTRAL_API_KEY"),
    "nvidia": os.environ.get("NVIDIA_API_KEY"),
    "openrouter": os.environ.get("OPENROUTER_API_KEY")
}

def check_openai_api_key(api_key, base_url=None):
    client = openai.OpenAI(api_key=api_key, base_url=base_url)
    try:
        client.models.list()
    except openai.AuthenticationError:
        return False
    else:
        return True

def trim_messages(messages, tokenizer_fn, max_tokens :Optional[int]=None):
    max_tokens = max_tokens or int(os.environ.get("MAX_HISTORY_TOKENS", 1028))
    while messages and sum(len(tokenizer_fn(msg)) for msg in messages) > max_tokens:
        messages.pop(0)  # Remove from the beginning
    return messages