From 832b4f318fffde6519ec197d969b47879f2a2bcb Mon Sep 17 00:00:00 2001 From: Yimi81 Date: Thu, 21 Dec 2023 15:11:43 +0800 Subject: [PATCH] supporting local deployment of OpenAI-Compatible Server --- .../Private/Tasks/HttpGPTChatRequest.cpp | 9 ++++++++- .../Private/Management/HttpGPTSettings.cpp | 2 ++ .../Private/Structures/HttpGPTCommonTypes.cpp | 2 ++ .../Private/Tasks/HttpGPTBaseTask.cpp | 9 ++++++++- .../Public/Structures/HttpGPTCommonTypes.h | 6 ++++++ 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Source/HttpGPTChatModule/Private/Tasks/HttpGPTChatRequest.cpp b/Source/HttpGPTChatModule/Private/Tasks/HttpGPTChatRequest.cpp index 79b6eb1..3694054 100644 --- a/Source/HttpGPTChatModule/Private/Tasks/HttpGPTChatRequest.cpp +++ b/Source/HttpGPTChatModule/Private/Tasks/HttpGPTChatRequest.cpp @@ -87,7 +87,14 @@ bool UHttpGPTChatRequest::CanBindProgress() const FString UHttpGPTChatRequest::GetEndpointURL() const { - return FString::Format(TEXT("{0}/{1}"), { GetCommonOptions().Endpoint, UHttpGPTHelper::GetEndpointForModel(GetChatOptions().Model, GetCommonOptions().bIsAzureOpenAI, GetCommonOptions().AzureOpenAIAPIVersion) }); + if(GetCommonOptions().bIsLocDeploy) + { + return FString::Format(TEXT("{0}/v1/chat/completions"), {GetCommonOptions().LocalAddress}); + } + else + { + return FString::Format(TEXT("{0}/{1}"), { GetCommonOptions().Endpoint, UHttpGPTHelper::GetEndpointForModel(GetChatOptions().Model, GetCommonOptions().bIsAzureOpenAI, GetCommonOptions().AzureOpenAIAPIVersion) }); + } } const FHttpGPTChatOptions UHttpGPTChatRequest::GetChatOptions() const diff --git a/Source/HttpGPTCommonModule/Private/Management/HttpGPTSettings.cpp b/Source/HttpGPTCommonModule/Private/Management/HttpGPTSettings.cpp index b2006be..b2bdf1a 100644 --- a/Source/HttpGPTCommonModule/Private/Management/HttpGPTSettings.cpp +++ b/Source/HttpGPTCommonModule/Private/Management/HttpGPTSettings.cpp @@ -87,6 +87,8 @@ void UHttpGPTSettings::SetToDefaults() 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; diff --git a/Source/HttpGPTCommonModule/Private/Structures/HttpGPTCommonTypes.cpp b/Source/HttpGPTCommonModule/Private/Structures/HttpGPTCommonTypes.cpp index ad8e59a..f95cafe 100644 --- a/Source/HttpGPTCommonModule/Private/Structures/HttpGPTCommonTypes.cpp +++ b/Source/HttpGPTCommonModule/Private/Structures/HttpGPTCommonTypes.cpp @@ -21,7 +21,9 @@ void FHttpGPTCommonOptions::SetDefaults() APIKey = Settings->CommonOptions.APIKey; User = Settings->CommonOptions.User; bIsAzureOpenAI = Settings->CommonOptions.bIsAzureOpenAI; + bIsLocDeploy = Settings->CommonOptions.bIsLocDeploy; Endpoint = Settings->CommonOptions.Endpoint; + LocalAddress = Settings->CommonOptions.LocalAddress; AzureOpenAIAPIVersion = Settings->CommonOptions.AzureOpenAIAPIVersion; } } \ No newline at end of file diff --git a/Source/HttpGPTCommonModule/Private/Tasks/HttpGPTBaseTask.cpp b/Source/HttpGPTCommonModule/Private/Tasks/HttpGPTBaseTask.cpp index b863331..45474b3 100644 --- a/Source/HttpGPTCommonModule/Private/Tasks/HttpGPTBaseTask.cpp +++ b/Source/HttpGPTCommonModule/Private/Tasks/HttpGPTBaseTask.cpp @@ -216,7 +216,14 @@ void UHttpGPTBaseTask::BindRequestCallbacks() return; } - OnProgressCompleted(RequestResponse->GetContentAsString(), bWasSuccessful); + if(RequestResponse.IsValid()) + { + OnProgressCompleted(RequestResponse->GetContentAsString(), bWasSuccessful); + } + else + { + UE_LOG(LogHttpGPT, Error, TEXT("%s (%d): Failed to send request: RequestResponse is invalid"), *FString(__func__), GetUniqueID()); + } SetReadyToDestroy(); } ); diff --git a/Source/HttpGPTCommonModule/Public/Structures/HttpGPTCommonTypes.h b/Source/HttpGPTCommonModule/Public/Structures/HttpGPTCommonTypes.h index 128148d..6cb89ad 100644 --- a/Source/HttpGPTCommonModule/Public/Structures/HttpGPTCommonTypes.h +++ b/Source/HttpGPTCommonModule/Public/Structures/HttpGPTCommonTypes.h @@ -43,6 +43,12 @@ struct HTTPGPTCOMMONMODULE_API FHttpGPTCommonOptions UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "HttpGPT | Common", Meta = (DisplayName = "Endpoint", EditCondition = "bIsAzureOpenAI")) FString Endpoint; + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "HttpGPT | Common", Meta = (DisplayName = "Is Local Deployment")) + bool bIsLocDeploy; + + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "HttpGPT | Common", Meta = (DisplayName = "LocalAddress", EditCondition = "bIsLocDeploy")) + FString LocalAddress; + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "HttpGPT | Common", Meta = (DisplayName = "Azure OpenAI API Version", EditCondition = "bIsAzureOpenAI")) FString AzureOpenAIAPIVersion;