|
|
|
@ -184,46 +184,44 @@ void Chat::responseStopped()
|
|
|
|
|
m_tokenSpeed = QString();
|
|
|
|
|
emit tokenSpeedChanged();
|
|
|
|
|
|
|
|
|
|
if (MySettings::globalInstance()->localDocsShowReferences()) {
|
|
|
|
|
const QString chatResponse = response();
|
|
|
|
|
QList<QString> references;
|
|
|
|
|
QList<QString> referencesContext;
|
|
|
|
|
int validReferenceNumber = 1;
|
|
|
|
|
for (const ResultInfo &info : databaseResults()) {
|
|
|
|
|
if (info.file.isEmpty())
|
|
|
|
|
continue;
|
|
|
|
|
if (validReferenceNumber == 1)
|
|
|
|
|
references.append((!chatResponse.endsWith("\n") ? "\n" : QString()) + QStringLiteral("\n---"));
|
|
|
|
|
QString reference;
|
|
|
|
|
{
|
|
|
|
|
QTextStream stream(&reference);
|
|
|
|
|
stream << (validReferenceNumber++) << ". ";
|
|
|
|
|
if (!info.title.isEmpty())
|
|
|
|
|
stream << "\"" << info.title << "\". ";
|
|
|
|
|
if (!info.author.isEmpty())
|
|
|
|
|
stream << "By " << info.author << ". ";
|
|
|
|
|
if (!info.date.isEmpty())
|
|
|
|
|
stream << "Date: " << info.date << ". ";
|
|
|
|
|
stream << "In " << info.file << ". ";
|
|
|
|
|
if (info.page != -1)
|
|
|
|
|
stream << "Page " << info.page << ". ";
|
|
|
|
|
if (info.from != -1) {
|
|
|
|
|
stream << "Lines " << info.from;
|
|
|
|
|
if (info.to != -1)
|
|
|
|
|
stream << "-" << info.to;
|
|
|
|
|
stream << ". ";
|
|
|
|
|
}
|
|
|
|
|
stream << "[Context](context://" << validReferenceNumber - 1 << ")";
|
|
|
|
|
const QString chatResponse = response();
|
|
|
|
|
QList<QString> references;
|
|
|
|
|
QList<QString> referencesContext;
|
|
|
|
|
int validReferenceNumber = 1;
|
|
|
|
|
for (const ResultInfo &info : databaseResults()) {
|
|
|
|
|
if (info.file.isEmpty())
|
|
|
|
|
continue;
|
|
|
|
|
if (validReferenceNumber == 1)
|
|
|
|
|
references.append((!chatResponse.endsWith("\n") ? "\n" : QString()) + QStringLiteral("\n---"));
|
|
|
|
|
QString reference;
|
|
|
|
|
{
|
|
|
|
|
QTextStream stream(&reference);
|
|
|
|
|
stream << (validReferenceNumber++) << ". ";
|
|
|
|
|
if (!info.title.isEmpty())
|
|
|
|
|
stream << "\"" << info.title << "\". ";
|
|
|
|
|
if (!info.author.isEmpty())
|
|
|
|
|
stream << "By " << info.author << ". ";
|
|
|
|
|
if (!info.date.isEmpty())
|
|
|
|
|
stream << "Date: " << info.date << ". ";
|
|
|
|
|
stream << "In " << info.file << ". ";
|
|
|
|
|
if (info.page != -1)
|
|
|
|
|
stream << "Page " << info.page << ". ";
|
|
|
|
|
if (info.from != -1) {
|
|
|
|
|
stream << "Lines " << info.from;
|
|
|
|
|
if (info.to != -1)
|
|
|
|
|
stream << "-" << info.to;
|
|
|
|
|
stream << ". ";
|
|
|
|
|
}
|
|
|
|
|
references.append(reference);
|
|
|
|
|
referencesContext.append(info.text);
|
|
|
|
|
stream << "[Context](context://" << validReferenceNumber - 1 << ")";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const int index = m_chatModel->count() - 1;
|
|
|
|
|
m_chatModel->updateReferences(index, references.join("\n"), referencesContext);
|
|
|
|
|
emit responseChanged();
|
|
|
|
|
references.append(reference);
|
|
|
|
|
referencesContext.append(info.text);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const int index = m_chatModel->count() - 1;
|
|
|
|
|
m_chatModel->updateReferences(index, references.join("\n"), referencesContext);
|
|
|
|
|
emit responseChanged();
|
|
|
|
|
|
|
|
|
|
m_responseInProgress = false;
|
|
|
|
|
m_responseState = Chat::ResponseStopped;
|
|
|
|
|
emit responseInProgressChanged();
|
|
|
|
|