gpt4all/gpt4all-chat/tool.cpp
Adam Treat c3cfaff803 Refactor and make use of jinja templates.
Signed-off-by: Adam Treat <treat.adam@gmail.com>
2024-08-14 07:43:48 -04:00

32 lines
1.0 KiB
C++

#include "tool.h"
#include <QJsonDocument>
QJsonObject filterModelGeneratedProperties(const QJsonObject &inputObject) {
QJsonObject filteredObject;
for (const QString &key : inputObject.keys()) {
QJsonObject propertyObject = inputObject.value(key).toObject();
if (!propertyObject.contains("modelGenerated") || propertyObject["modelGenerated"].toBool())
filteredObject.insert(key, propertyObject);
}
return filteredObject;
}
jinja2::Value Tool::jinjaValue() const
{
QJsonDocument doc(filterModelGeneratedProperties(paramSchema()));
QString p(doc.toJson(QJsonDocument::Compact));
QJsonDocument exampleDoc(exampleParams());
QString e(exampleDoc.toJson(QJsonDocument::Compact));
jinja2::ValuesMap params {
{ "name", name().toStdString() },
{ "description", description().toStdString() },
{ "function", function().toStdString() },
{ "paramSchema", p.toStdString() },
{ "exampleParams", e.toStdString() }
};
return params;
}