From 3430f315cf1825b0008f7bddd0211e8fd01ee9c1 Mon Sep 17 00:00:00 2001 From: Ryan Voots Date: Sun, 31 Dec 2023 19:00:18 -0500 Subject: [PATCH] More moderation stuff for server, also fix model list function --- .vstags | 37 +----------------- lib/OpenAIAsync/Server/API/v1/ModelList.pm | 2 +- lib/OpenAIAsync/Server/API/v1/Moderations.pm | 40 ++++++++++++++++++++ 3 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 lib/OpenAIAsync/Server/API/v1/Moderations.pm diff --git a/.vstags b/.vstags index 33819ce..a842961 100644 --- a/.vstags +++ b/.vstags @@ -9851,8 +9851,6 @@ OpenAIAsync .build/S3aTKnbkmA/blib/lib/OpenAIAsync.pm 1;" p OpenAIAsync .build/S3aTKnbkmA/lib/OpenAIAsync.pm 1;" p OpenAIAsync .build/kBWSNkpY90/blib/lib/OpenAIAsync.pm 1;" p OpenAIAsync .build/kBWSNkpY90/lib/OpenAIAsync.pm 1;" p -OpenAIAsync .build/latest/blib/lib/OpenAIAsync.pm 1;" p -OpenAIAsync .build/latest/lib/OpenAIAsync.pm 1;" p OpenAIAsync .build/previous/blib/lib/OpenAIAsync.pm 1;" p OpenAIAsync .build/previous/lib/OpenAIAsync.pm 1;" p OpenAIAsync lib/OpenAIAsync.pm 1;" p @@ -9860,8 +9858,6 @@ OpenAIAsync::Client .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Client.pm 1;" p OpenAIAsync::Client .build/S3aTKnbkmA/lib/OpenAIAsync/Client.pm 1;" p OpenAIAsync::Client .build/kBWSNkpY90/blib/lib/OpenAIAsync/Client.pm 1;" p OpenAIAsync::Client .build/kBWSNkpY90/lib/OpenAIAsync/Client.pm 1;" p -OpenAIAsync::Client .build/latest/blib/lib/OpenAIAsync/Client.pm 1;" p -OpenAIAsync::Client .build/latest/lib/OpenAIAsync/Client.pm 1;" p OpenAIAsync::Client .build/previous/blib/lib/OpenAIAsync/Client.pm 1;" p OpenAIAsync::Client .build/previous/lib/OpenAIAsync/Client.pm 1;" p OpenAIAsync::Client lib/OpenAIAsync/Client.pm 1;" p @@ -9869,8 +9865,6 @@ OpenAIAsync::Server .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Server.pm 1;" p OpenAIAsync::Server .build/S3aTKnbkmA/lib/OpenAIAsync/Server.pm 1;" p OpenAIAsync::Server .build/kBWSNkpY90/blib/lib/OpenAIAsync/Server.pm 1;" p OpenAIAsync::Server .build/kBWSNkpY90/lib/OpenAIAsync/Server.pm 1;" p -OpenAIAsync::Server .build/latest/blib/lib/OpenAIAsync/Server.pm 1;" p -OpenAIAsync::Server .build/latest/lib/OpenAIAsync/Server.pm 1;" p OpenAIAsync::Server .build/previous/blib/lib/OpenAIAsync/Server.pm 1;" p OpenAIAsync::Server .build/previous/lib/OpenAIAsync/Server.pm 1;" p OpenAIAsync::Server lib/OpenAIAsync/Server.pm 1;" p @@ -9878,8 +9872,6 @@ OpenAIAsync::Server::API::v1::ChatCompletion .build/S3aTKnbkmA/blib/lib/OpenAIAs OpenAIAsync::Server::API::v1::ChatCompletion .build/S3aTKnbkmA/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p OpenAIAsync::Server::API::v1::ChatCompletion .build/kBWSNkpY90/blib/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p OpenAIAsync::Server::API::v1::ChatCompletion .build/kBWSNkpY90/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p -OpenAIAsync::Server::API::v1::ChatCompletion .build/latest/blib/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p -OpenAIAsync::Server::API::v1::ChatCompletion .build/latest/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p OpenAIAsync::Server::API::v1::ChatCompletion .build/previous/blib/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p OpenAIAsync::Server::API::v1::ChatCompletion .build/previous/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p OpenAIAsync::Server::API::v1::ChatCompletion lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p @@ -9887,8 +9879,6 @@ OpenAIAsync::Server::API::v1::Completions .build/S3aTKnbkmA/blib/lib/OpenAIAsync OpenAIAsync::Server::API::v1::Completions .build/S3aTKnbkmA/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p OpenAIAsync::Server::API::v1::Completions .build/kBWSNkpY90/blib/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p OpenAIAsync::Server::API::v1::Completions .build/kBWSNkpY90/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p -OpenAIAsync::Server::API::v1::Completions .build/latest/blib/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p -OpenAIAsync::Server::API::v1::Completions .build/latest/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p OpenAIAsync::Server::API::v1::Completions .build/previous/blib/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p OpenAIAsync::Server::API::v1::Completions .build/previous/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p OpenAIAsync::Server::API::v1::Completions lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p @@ -9896,8 +9886,6 @@ OpenAIAsync::Server::API::v1::Embeddings .build/S3aTKnbkmA/blib/lib/OpenAIAsync/ OpenAIAsync::Server::API::v1::Embeddings .build/S3aTKnbkmA/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p OpenAIAsync::Server::API::v1::Embeddings .build/kBWSNkpY90/blib/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p OpenAIAsync::Server::API::v1::Embeddings .build/kBWSNkpY90/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p -OpenAIAsync::Server::API::v1::Embeddings .build/latest/blib/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p -OpenAIAsync::Server::API::v1::Embeddings .build/latest/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p OpenAIAsync::Server::API::v1::Embeddings .build/previous/blib/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p OpenAIAsync::Server::API::v1::Embeddings .build/previous/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p OpenAIAsync::Server::API::v1::Embeddings lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p @@ -9905,8 +9893,6 @@ OpenAIAsync::Server::API::v1::File .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Server OpenAIAsync::Server::API::v1::File .build/S3aTKnbkmA/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p OpenAIAsync::Server::API::v1::File .build/kBWSNkpY90/blib/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p OpenAIAsync::Server::API::v1::File .build/kBWSNkpY90/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p -OpenAIAsync::Server::API::v1::File .build/latest/blib/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p -OpenAIAsync::Server::API::v1::File .build/latest/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p OpenAIAsync::Server::API::v1::File .build/previous/blib/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p OpenAIAsync::Server::API::v1::File .build/previous/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p OpenAIAsync::Server::API::v1::File lib/OpenAIAsync/Server/API/v1/File.pm 1;" p @@ -9914,17 +9900,14 @@ OpenAIAsync::Server::API::v1::ModelList .build/S3aTKnbkmA/blib/lib/OpenAIAsync/S OpenAIAsync::Server::API::v1::ModelList .build/S3aTKnbkmA/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p OpenAIAsync::Server::API::v1::ModelList .build/kBWSNkpY90/blib/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p OpenAIAsync::Server::API::v1::ModelList .build/kBWSNkpY90/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p -OpenAIAsync::Server::API::v1::ModelList .build/latest/blib/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p -OpenAIAsync::Server::API::v1::ModelList .build/latest/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p OpenAIAsync::Server::API::v1::ModelList .build/previous/blib/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p OpenAIAsync::Server::API::v1::ModelList .build/previous/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p OpenAIAsync::Server::API::v1::ModelList lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p +OpenAIAsync::Server::API::v1::Moderations lib/OpenAIAsync/Server/API/v1/Moderations.pm 1;" p OpenAIAsync::Types .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types.pm 1;" p OpenAIAsync::Types .build/S3aTKnbkmA/lib/OpenAIAsync/Types.pm 1;" p OpenAIAsync::Types .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types.pm 1;" p OpenAIAsync::Types .build/kBWSNkpY90/lib/OpenAIAsync/Types.pm 1;" p -OpenAIAsync::Types .build/latest/blib/lib/OpenAIAsync/Types.pm 1;" p -OpenAIAsync::Types .build/latest/lib/OpenAIAsync/Types.pm 1;" p OpenAIAsync::Types .build/previous/blib/lib/OpenAIAsync/Types.pm 1;" p OpenAIAsync::Types .build/previous/lib/OpenAIAsync/Types.pm 1;" p OpenAIAsync::Types lib/OpenAIAsync/Types.pm 1;" p @@ -9932,8 +9915,6 @@ OpenAIAsync::Types::Requests .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Reques OpenAIAsync::Types::Requests .build/S3aTKnbkmA/lib/OpenAIAsync/Types/Requests.pm 1;" p OpenAIAsync::Types::Requests .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p OpenAIAsync::Types::Requests .build/kBWSNkpY90/lib/OpenAIAsync/Types/Requests.pm 1;" p -OpenAIAsync::Types::Requests .build/latest/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p -OpenAIAsync::Types::Requests .build/latest/lib/OpenAIAsync/Types/Requests.pm 1;" p OpenAIAsync::Types::Requests .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p OpenAIAsync::Types::Requests .build/previous/lib/OpenAIAsync/Types/Requests.pm 1;" p OpenAIAsync::Types::Requests lib/OpenAIAsync/Types/Requests.pm 1;" p @@ -9941,8 +9922,6 @@ OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/S3aTKnbkmA/ OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/S3aTKnbkmA/lib/OpenAIAsync/Types/Requests.pm 192;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Requests.pm 192;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/kBWSNkpY90/lib/OpenAIAsync/Types/Requests.pm 192;" p -OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/latest/blib/lib/OpenAIAsync/Types/Requests.pm 192;" p -OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/latest/lib/OpenAIAsync/Types/Requests.pm 192;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 192;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/previous/lib/OpenAIAsync/Types/Requests.pm 192;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union lib/OpenAIAsync/Types/Requests.pm 192;" p @@ -9950,8 +9929,6 @@ OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .buil OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/S3aTKnbkmA/lib/OpenAIAsync/Types/Requests.pm 115;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Requests.pm 115;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/kBWSNkpY90/lib/OpenAIAsync/Types/Requests.pm 115;" p -OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/latest/blib/lib/OpenAIAsync/Types/Requests.pm 115;" p -OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/latest/lib/OpenAIAsync/Types/Requests.pm 115;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 115;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/previous/lib/OpenAIAsync/Types/Requests.pm 115;" p OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion lib/OpenAIAsync/Types/Requests.pm 115;" p @@ -9959,8 +9936,6 @@ OpenAIAsync::Types::Results .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Results OpenAIAsync::Types::Results .build/S3aTKnbkmA/lib/OpenAIAsync/Types/Results.pm 1;" p OpenAIAsync::Types::Results .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Results.pm 1;" p OpenAIAsync::Types::Results .build/kBWSNkpY90/lib/OpenAIAsync/Types/Results.pm 1;" p -OpenAIAsync::Types::Results .build/latest/blib/lib/OpenAIAsync/Types/Results.pm 1;" p -OpenAIAsync::Types::Results .build/latest/lib/OpenAIAsync/Types/Results.pm 1;" p OpenAIAsync::Types::Results .build/previous/blib/lib/OpenAIAsync/Types/Results.pm 1;" p OpenAIAsync::Types::Results .build/previous/lib/OpenAIAsync/Types/Results.pm 1;" p OpenAIAsync::Types::Results lib/OpenAIAsync/Types/Results.pm 1;" p @@ -9968,8 +9943,6 @@ OpenAIAsync::Types::Shared .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Shared.p OpenAIAsync::Types::Shared .build/S3aTKnbkmA/lib/OpenAIAsync/Types/Shared.pm 1;" p OpenAIAsync::Types::Shared .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Shared.pm 1;" p OpenAIAsync::Types::Shared .build/kBWSNkpY90/lib/OpenAIAsync/Types/Shared.pm 1;" p -OpenAIAsync::Types::Shared .build/latest/blib/lib/OpenAIAsync/Types/Shared.pm 1;" p -OpenAIAsync::Types::Shared .build/latest/lib/OpenAIAsync/Types/Shared.pm 1;" p OpenAIAsync::Types::Shared .build/previous/blib/lib/OpenAIAsync/Types/Shared.pm 1;" p OpenAIAsync::Types::Shared .build/previous/lib/OpenAIAsync/Types/Shared.pm 1;" p OpenAIAsync::Types::Shared lib/OpenAIAsync/Types/Shared.pm 1;" p @@ -28021,10 +27994,6 @@ new .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Requests.pm 118;" s new .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Requests.pm 195;" s new .build/kBWSNkpY90/lib/OpenAIAsync/Types/Requests.pm 118;" s new .build/kBWSNkpY90/lib/OpenAIAsync/Types/Requests.pm 195;" s -new .build/latest/blib/lib/OpenAIAsync/Types/Requests.pm 118;" s -new .build/latest/blib/lib/OpenAIAsync/Types/Requests.pm 195;" s -new .build/latest/lib/OpenAIAsync/Types/Requests.pm 118;" s -new .build/latest/lib/OpenAIAsync/Types/Requests.pm 195;" s new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 118;" s new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 195;" s new .build/previous/lib/OpenAIAsync/Types/Requests.pm 118;" s @@ -28823,8 +28792,6 @@ ontent::new .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Requests.pm 195;" s ontent::new .build/S3aTKnbkmA/lib/OpenAIAsync/Types/Requests.pm 195;" s ontent::new .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Requests.pm 195;" s ontent::new .build/kBWSNkpY90/lib/OpenAIAsync/Types/Requests.pm 195;" s -ontent::new .build/latest/blib/lib/OpenAIAsync/Types/Requests.pm 195;" s -ontent::new .build/latest/lib/OpenAIAsync/Types/Requests.pm 195;" s ontent::new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 195;" s ontent::new .build/previous/lib/OpenAIAsync/Types/Requests.pm 195;" s ontent::new lib/OpenAIAsync/Types/Requests.pm 195;" s @@ -31469,8 +31436,6 @@ y::new .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Requests.pm 118;" s y::new .build/S3aTKnbkmA/lib/OpenAIAsync/Types/Requests.pm 118;" s y::new .build/kBWSNkpY90/blib/lib/OpenAIAsync/Types/Requests.pm 118;" s y::new .build/kBWSNkpY90/lib/OpenAIAsync/Types/Requests.pm 118;" s -y::new .build/latest/blib/lib/OpenAIAsync/Types/Requests.pm 118;" s -y::new .build/latest/lib/OpenAIAsync/Types/Requests.pm 118;" s y::new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 118;" s y::new .build/previous/lib/OpenAIAsync/Types/Requests.pm 118;" s y::new lib/OpenAIAsync/Types/Requests.pm 118;" s diff --git a/lib/OpenAIAsync/Server/API/v1/ModelList.pm b/lib/OpenAIAsync/Server/API/v1/ModelList.pm index 614b274..224620b 100644 --- a/lib/OpenAIAsync/Server/API/v1/ModelList.pm +++ b/lib/OpenAIAsync/Server/API/v1/ModelList.pm @@ -30,7 +30,7 @@ role OpenAIAsync::Server::API::v1::ModelList :strict(params) { $self->register_url( method => 'POST', url => qr{^/v1/models$}, - handle => async sub($req, $ctx, $obj, $params) {await $self->embeddings($obj, $req, $ctx)}, + handle => async sub($req, $ctx, $obj, $params) {await $self->model_list($obj, $req, $ctx)}, request_class => "", result_class => "OpenAIAsync::Type::Result::ModelList", ); diff --git a/lib/OpenAIAsync/Server/API/v1/Moderations.pm b/lib/OpenAIAsync/Server/API/v1/Moderations.pm new file mode 100644 index 0000000..6af1e37 --- /dev/null +++ b/lib/OpenAIAsync/Server/API/v1/Moderations.pm @@ -0,0 +1,40 @@ +package OpenAIAsync::Server::API::v1::Moderations; + +use v5.36.0; +use Object::Pad; +use IO::Async::SSL; # We're not directly using it but I want to enforce that we pull it in when detecting dependencies, since openai itself is always https +use Future::AsyncAwait; +use IO::Async; + +use OpenAIAsync::Types::Results; +use OpenAIAsync::Types::Requests; + +our $VERSION = '0.02'; + +# ABSTRACT: Async server for OpenAI style REST API for various AI systems (LLMs, Images, Video, etc.) + +=pod + +=head1 NAME + +OpenAIAsync::Server::API::Moderations - Basic moderation api role, consumed to implement the OpenAI moderation api. Does not provide an implementation, you are expected to override them in your class + +=head1 SYNOPSIS + +... + +=cut + +role OpenAIAsync::Server::API::v1::Moderations :strict(params) { + ADJUST { + $self->register_url( + method => 'POST', + url => qr{^/v1/moderations$}, + handle => async sub($req, $ctx, $obj, $params) {await $self->moderations($obj, $req, $ctx)}, + request_class => "OpenAIAsync::Type::Requests::CreateModeration", + result_class => "OpenAIAsync::Type::Results::Moderations", + ); + } + + async method moderations($obj, $http_req, $ctx) {...} +} \ No newline at end of file