This repository was archived by the owner on Oct 11, 2024. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 58
Expand file tree
/
Copy pathHttpGPTSettings.cpp
More file actions
129 lines (104 loc) · 3.88 KB
/
HttpGPTSettings.cpp
File metadata and controls
129 lines (104 loc) · 3.88 KB
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// Author: Lucas Vilas-Boas
// Year: 2023
// Repo: https://github.com/lucoiso/UEHttpGPT
#include "Management/HttpGPTSettings.h"
#include "LogHttpGPT.h"
#include <Runtime/Launch/Resources/Version.h>
#ifdef UE_INLINE_GENERATED_CPP_BY_NAME
#include UE_INLINE_GENERATED_CPP_BY_NAME(HttpGPTSettings)
#endif
UHttpGPTSettings::UHttpGPTSettings(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer), bUseCustomSystemContext(false), CustomSystemContext(FString()), GeneratedImagesDir("HttpGPT_Generated"), bEnableInternalLogs(false)
{
CategoryName = TEXT("Plugins");
SetToDefaults();
}
const UHttpGPTSettings* UHttpGPTSettings::Get()
{
const UHttpGPTSettings* const Instance = GetDefault<UHttpGPTSettings>();
return Instance;
}
FHttpGPTCommonOptions UHttpGPTSettings::GetCommonOptions()
{
return GetDefault<UHttpGPTSettings>()->CommonOptions;
}
void UHttpGPTSettings::SetCommonOptions(const FHttpGPTCommonOptions& Value)
{
UHttpGPTSettings* const Settings = GetMutableDefault<UHttpGPTSettings>();
Settings->CommonOptions = Value;
Settings->SaveAndReload(GET_MEMBER_NAME_CHECKED(UHttpGPTSettings, CommonOptions));
}
FHttpGPTChatOptions UHttpGPTSettings::GetChatOptions()
{
return GetDefault<UHttpGPTSettings>()->ChatOptions;
}
void UHttpGPTSettings::SetChatOptions(const FHttpGPTChatOptions& Value)
{
UHttpGPTSettings* const Settings = GetMutableDefault<UHttpGPTSettings>();
Settings->ChatOptions = Value;
Settings->SaveAndReload(GET_MEMBER_NAME_CHECKED(UHttpGPTSettings, ChatOptions));
}
FHttpGPTImageOptions UHttpGPTSettings::GetImageOptions()
{
return GetDefault<UHttpGPTSettings>()->ImageOptions;
}
void UHttpGPTSettings::SetImageOptions(const FHttpGPTImageOptions& Value)
{
UHttpGPTSettings* const Settings = GetMutableDefault<UHttpGPTSettings>();
Settings->ImageOptions = Value;
Settings->SaveAndReload(GET_MEMBER_NAME_CHECKED(UHttpGPTSettings, ImageOptions));
}
#if WITH_EDITOR
void UHttpGPTSettings::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
if (PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(UHttpGPTSettings, bEnableInternalLogs))
{
ToggleInternalLogs();
}
}
#endif
void UHttpGPTSettings::PostInitProperties()
{
Super::PostInitProperties();
ToggleInternalLogs();
}
void UHttpGPTSettings::SetToDefaults()
{
CommonOptions.APIKey = NAME_None;
CommonOptions.User = NAME_None;
CommonOptions.bIsAzureOpenAI = false;
CommonOptions.Endpoint = TEXT("https://api.openai.com/");
CommonOptions.AzureOpenAIAPIVersion = TEXT("2023-05-15");
CommonOptions.bIsLocDeploy = false;
CommonOptions.LocalAddress = TEXT("http://localhost:8000/");
ChatOptions.Model = EHttpGPTChatModel::gpt35turbo;
ChatOptions.MaxTokens = 2048;
ChatOptions.Temperature = 1.f;
ChatOptions.TopP = 1.f;
ChatOptions.Choices = 1;
ChatOptions.bStream = true;
ChatOptions.Stop = TArray<FName>();
ChatOptions.PresencePenalty = 0.f;
ChatOptions.FrequencyPenalty = 0.f;
ChatOptions.LogitBias = TMap<int32, float>();
ImageOptions.ImagesNum = 1;
ImageOptions.Size = EHttpGPTImageSize::x256;
ImageOptions.Format = EHttpGPTResponseFormat::url;
}
void UHttpGPTSettings::SaveAndReload(const FName& PropertyName)
{
SaveConfig();
uint32 PropagationFlags = 0u;
#if ENGINE_MAJOR_VERSION >= 5
PropagationFlags = UE::ELoadConfigPropagationFlags::LCPF_PropagateToChildDefaultObjects;
#else
PropagationFlags = UE4::ELoadConfigPropagationFlags::LCPF_PropagateToChildDefaultObjects;
#endif
ReloadConfig(GetClass(), *GetDefaultConfigFilename(), PropagationFlags, GetClass()->FindPropertyByName(PropertyName));
}
void UHttpGPTSettings::ToggleInternalLogs()
{
#if !UE_BUILD_SHIPPING
LogHttpGPT_Internal.SetVerbosity(bEnableInternalLogs ? ELogVerbosity::Display : ELogVerbosity::NoLogging);
#endif
}