gpt4all

Форк
0
73 строки · 2.7 Кб
1
#include <QDirIterator>
2
#include <QGuiApplication>
3
#include <QQmlApplicationEngine>
4
#include <QQmlContext>
5

6
#include "llm.h"
7
#include "modellist.h"
8
#include "chatlistmodel.h"
9
#include "localdocs.h"
10
#include "download.h"
11
#include "network.h"
12
#include "mysettings.h"
13
#include "config.h"
14
#include "logger.h"
15
#include "../gpt4all-backend/llmodel.h"
16

17
int main(int argc, char *argv[])
18
{
19
    QCoreApplication::setOrganizationName("nomic.ai");
20
    QCoreApplication::setOrganizationDomain("gpt4all.io");
21
    QCoreApplication::setApplicationName("GPT4All");
22
    QCoreApplication::setApplicationVersion(APP_VERSION);
23

24
    Logger::globalInstance();
25

26
    QGuiApplication app(argc, argv);
27
    QQmlApplicationEngine engine;
28

29
    QString llmodelSearchPaths = QCoreApplication::applicationDirPath();
30
    const QString libDir = QCoreApplication::applicationDirPath() + "/../lib/";
31
    if (LLM::directoryExists(libDir))
32
        llmodelSearchPaths += ";" + libDir;
33
#if defined(Q_OS_MAC)
34
    const QString binDir = QCoreApplication::applicationDirPath() + "/../../../";
35
    if (LLM::directoryExists(binDir))
36
        llmodelSearchPaths += ";" + binDir;
37
    const QString frameworksDir = QCoreApplication::applicationDirPath() + "/../Frameworks/";
38
    if (LLM::directoryExists(frameworksDir))
39
        llmodelSearchPaths += ";" + frameworksDir;
40
#endif
41
    LLModel::Implementation::setImplementationsSearchPath(llmodelSearchPaths.toStdString());
42

43
    qmlRegisterSingletonInstance("mysettings", 1, 0, "MySettings", MySettings::globalInstance());
44
    qmlRegisterSingletonInstance("modellist", 1, 0, "ModelList", ModelList::globalInstance());
45
    qmlRegisterSingletonInstance("chatlistmodel", 1, 0, "ChatListModel", ChatListModel::globalInstance());
46
    qmlRegisterSingletonInstance("llm", 1, 0, "LLM", LLM::globalInstance());
47
    qmlRegisterSingletonInstance("download", 1, 0, "Download", Download::globalInstance());
48
    qmlRegisterSingletonInstance("network", 1, 0, "Network", Network::globalInstance());
49
    qmlRegisterSingletonInstance("localdocs", 1, 0, "LocalDocs", LocalDocs::globalInstance());
50
    const QUrl url(u"qrc:/gpt4all/main.qml"_qs);
51

52
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
53
        &app, [url](QObject *obj, const QUrl &objUrl) {
54
            if (!obj && url == objUrl)
55
                QCoreApplication::exit(-1);
56
        }, Qt::QueuedConnection);
57
    engine.load(url);
58

59
#if 0
60
    QDirIterator it("qrc:", QDirIterator::Subdirectories);
61
    while (it.hasNext()) {
62
        qDebug() << it.next();
63
    }
64
#endif
65

66
    int res = app.exec();
67

68
    // Make sure ChatLLM threads are joined before global destructors run.
69
    // Otherwise, we can get a heap-use-after-free inside of llama.cpp.
70
    ChatListModel::globalInstance()->clearChats();
71

72
    return res;
73
}
74

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.