Files
UE5-cyberHuman/Plugins/OpenAi/Source/OpenAI/Private/ChatGPT/ChatGPTWorld.cpp

55 lines
1.3 KiB
C++
Raw Normal View History

2025-04-07 18:31:41 -07:00
// OpenAI, Copyright LifeEXE. All Rights Reserved.
#include "ChatGPT/ChatGPTWorld.h"
#include "FuncLib/OpenAIFuncLib.h"
#include "ChatGPT/ChatGPT.h"
void AChatGPTWorld::BeginPlay()
{
Super::BeginPlay();
ChatGPT = NewObject<UChatGPT>();
check(ChatGPT);
ChatGPT->SetLogEnabled(true);
ChatGPT->SetMaxTokens(MaxTokens);
ChatGPT->SetModel(UOpenAIFuncLib::OpenAIMainModelToString(Model));
ChatGPT->OnRequestCompleted().AddUObject(this, &ThisClass::OnRequestCompleted);
ChatGPT->OnRequestUpdated().AddUObject(this, &ThisClass::OnRequestUpdated);
}
void AChatGPTWorld::SetAuth(const FOpenAIAuth& Auth)
{
if (ChatGPT)
{
ChatGPT->SetAuth(Auth);
}
}
void AChatGPTWorld::MakeRequest(const FMessage& Message)
{
if (bIsInProgress) return;
bIsInProgress = true;
ChatGPT->AddMessage(Message);
const auto AssistantMessage = FMessage{UOpenAIFuncLib::OpenAIRoleToString(ERole::Assistant), {}};
ChatGPT->SetAssistantMessage(AssistantMessage);
ChatGPT->MakeRequest();
}
void AChatGPTWorld::OnRequestUpdated(const FMessage& Message, bool WasError)
{
LastMessage = Message;
OnGPTRequestUpdated.Broadcast(Message);
}
void AChatGPTWorld::OnRequestCompleted()
{
bIsInProgress = false;
OnGPTRequestCompleted.Broadcast(LastMessage);
}