Files
2025-04-07 18:31:41 -07:00

62 lines
1.6 KiB
C++

// OpenAI, Copyright LifeEXE. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Info.h"
#include "Provider/CommonTypes.h"
#include "FuncLib/ModelTypes.h"
#include "ChatGPTWorld.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnGPTRequestUpdated, const FMessage&, Message);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnGPTRequestCompleted, const FMessage&, Message);
class UChatGPT;
UCLASS()
class OPENAI_API AChatGPTWorld : public AInfo
{
GENERATED_BODY()
protected:
virtual void BeginPlay() override;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "OpenAI")
EMainModelEnum Model{EMainModelEnum::GPT_4_Vision_Preview};
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "OpenAI")
int32 MaxTokens{2000};
UFUNCTION(BlueprintCallable, Category = "OpenAI")
void SetAuth(const FOpenAIAuth& OpenAIAuth);
UFUNCTION(BlueprintCallable, Category = "OpenAI")
bool IsInProgress() const { return bIsInProgress; }
UFUNCTION(BlueprintCallable, Category = "OpenAI")
void MakeRequest(const FMessage& Message);
UFUNCTION(BlueprintCallable, Category = "OpenAI")
FMessage GetLastMessage() const { return LastMessage; }
protected:
UPROPERTY(BlueprintAssignable)
FOnGPTRequestUpdated OnGPTRequestUpdated;
UPROPERTY(BlueprintAssignable)
FOnGPTRequestCompleted OnGPTRequestCompleted;
private:
FOpenAIAuth OpenAIAuth;
UPROPERTY()
TObjectPtr<UChatGPT> ChatGPT;
bool bIsInProgress{false};
FMessage LastMessage;
private:
void OnRequestCompleted();
void OnRequestUpdated(const FMessage& Message, bool WasError);
};