починил нейроконструктор, исправил распознавание сообщений из чата
This commit is contained in:
+29
-10
@@ -124,6 +124,18 @@ void NeuralNetworkManager::setupDefaultConfigs()
|
||||
networkConfigs[Ollama] = ollamaConfig;
|
||||
}
|
||||
|
||||
void NeuralNetworkManager::setCurrentNetworkType(NetworkType type)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
m_currentNetworkType = type;
|
||||
}
|
||||
|
||||
void NeuralNetworkManager::sendMessage(const QString &message)
|
||||
{
|
||||
// Используем текущий тип сети
|
||||
sendMessage(message, m_currentNetworkType);
|
||||
}
|
||||
|
||||
void NeuralNetworkManager::sendMessage(const QString &message, NetworkType networkType)
|
||||
{
|
||||
QMutexLocker locker(&mutex);
|
||||
@@ -138,8 +150,6 @@ void NeuralNetworkManager::sendMessage(const QString &message, NetworkType netwo
|
||||
qint64 currentTime = QDateTime::currentSecsSinceEpoch();
|
||||
|
||||
if (!isGigaChatTokenValid()) {
|
||||
|
||||
|
||||
// Добавляем сообщение в очередь
|
||||
PendingMessage pendingMsg;
|
||||
pendingMsg.message = message;
|
||||
@@ -154,7 +164,6 @@ void NeuralNetworkManager::sendMessage(const QString &message, NetworkType netwo
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Если токен валиден, отправляем сообщение сразу
|
||||
sendMessageInternal(message, networkType);
|
||||
}
|
||||
@@ -424,17 +433,15 @@ void NeuralNetworkManager::handleGigaChatTokenReply(QNetworkReply *reply)
|
||||
if (reply->error() != QNetworkReply::NoError) {
|
||||
QString errorMsg = QString("Ошибка получения токена GigaChat: %1").arg(reply->errorString());
|
||||
|
||||
// Очищаем очередь сообщений если не удалось получить токен
|
||||
pendingMessages.clear();
|
||||
gigaChatAuth.tokenExpiry = 0;
|
||||
emit errorOccurred(errorMsg);
|
||||
|
||||
reply->deleteLater();
|
||||
return;
|
||||
}
|
||||
|
||||
QJsonDocument doc = QJsonDocument::fromJson(data);
|
||||
if (doc.isNull()) {
|
||||
pendingMessages.clear();
|
||||
|
||||
emit errorOccurred("Неверный формат ответа от GigaChat");
|
||||
|
||||
reply->deleteLater();
|
||||
@@ -444,6 +451,7 @@ void NeuralNetworkManager::handleGigaChatTokenReply(QNetworkReply *reply)
|
||||
QJsonObject json = doc.object();
|
||||
|
||||
if (json.contains("access_token")) {
|
||||
m_tokenRetryCount = 0;
|
||||
gigaChatAuth.accessToken = json["access_token"].toString();
|
||||
|
||||
int expiresIn = json.contains("expires_in")
|
||||
@@ -463,10 +471,10 @@ void NeuralNetworkManager::handleGigaChatTokenReply(QNetworkReply *reply)
|
||||
QString errorMsg = json["error"].toString();
|
||||
|
||||
// Очищаем очередь сообщений
|
||||
pendingMessages.clear();
|
||||
|
||||
emit errorOccurred("Ошибка GigaChat: " + errorMsg);
|
||||
} else {
|
||||
pendingMessages.clear();
|
||||
|
||||
emit errorOccurred("Неизвестный формат ответа от GigaChat");
|
||||
}
|
||||
|
||||
@@ -513,9 +521,20 @@ void NeuralNetworkManager::requestGigaChatToken()
|
||||
return;
|
||||
}
|
||||
|
||||
// Проверяем количество попыток
|
||||
if (m_tokenRetryCount >= MAX_TOKEN_RETRIES) {
|
||||
qDebug() << "Превышено максимальное количество попыток получения токена";
|
||||
m_tokenRetryCount = 0;
|
||||
pendingMessages.clear(); // Только после превышения лимита очищаем очередь
|
||||
emit errorOccurred("Не удалось получить токен GigaChat после нескольких попыток");
|
||||
return;
|
||||
}
|
||||
|
||||
m_tokenRetryCount++;
|
||||
isProcessingGigaChatToken = true;
|
||||
|
||||
if (gigaChatAuth.clientId.isEmpty() || gigaChatAuth.authorizationCode.isEmpty()) {
|
||||
emit errorOccurred("Не установлены учетные данные GigaChat");
|
||||
|
||||
// Очищаем очередь сообщений
|
||||
pendingMessages.clear();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user