File size: 1,967 Bytes
58e1001
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from g4f import Provider,ChatCompletion
import g4f

# if provider needs auth parameter
provider_auth_settings = {
    'Bard':{
        'cookie':""
    }
}


def send_chat(selected_model, selected_provider, context_history):
    if selected_provider is not None:
        prov = getattr(g4f.Provider, selected_provider)
        prov.working = True
        auth = None
        if prov.needs_auth:
            auth=provider_auth_settings['Bard']
    else:
        auth=None
        prov=None

    print(f'Using Model {selected_model} provided by {selected_provider}')

    try:
        result = g4f.ChatCompletion.create(model=selected_model, stream=False, provider=prov,
                                           messages=context_history,auth=auth)
        context_history.append({'role': 'assistant', 'content': str(result)})
    except Exception as e:
        print(e)
        result = ''
        context_history = []
    return result, context_history



def get_all_models():
    allmodels = []
    for m in g4f.models.ModelUtils.convert:
        allmodels.append(m)
    allmodels.sort()
    return allmodels

def get_providers_for_model(m):
    providers = []
    model = g4f.models.ModelUtils.convert[m]
    if model.best_provider is not None:
        if hasattr(model.best_provider, 'providers'):
            for p in model.best_provider.providers:
                providers.append(p.__name__)
        else:
            prov = model.best_provider
            providers.append(prov.__name__)
    # else:
    #     if model.base_provider is not None:
    #         providers.append(model.base_provider)

    providers.sort()
    return providers
        
def get_provider_info(provider):
    if provider is None:
        return ''
    
    prov = getattr(g4f.Provider, provider)
    auth_str = 'πŸ”' if prov.needs_auth else 'πŸ”“'
    working = 'βœ…' if prov.working else '❌'
    info = f'## {prov.url} {working} {auth_str}\n{prov.params}'
    return info