This commit is contained in:
parent
3430f315cf
commit
1e9a5b1fe2
3 changed files with 79 additions and 37 deletions
37
.vstags
37
.vstags
|
@ -9851,100 +9851,73 @@ 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/previous/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/previous/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync lib/OpenAIAsync.pm 1;" p
|
||||
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/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
|
||||
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/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
|
||||
OpenAIAsync::Server::API::v1::Audio lib/OpenAIAsync/Server/API/v1/Audio.pm 1;" p
|
||||
OpenAIAsync::Server::API::v1::ChatCompletion .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Server/API/v1/ChatCompletion.pm 1;" p
|
||||
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/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
|
||||
OpenAIAsync::Server::API::v1::Completions .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Server/API/v1/Completions.pm 1;" p
|
||||
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/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
|
||||
OpenAIAsync::Server::API::v1::Embeddings .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Server/API/v1/Embeddings.pm 1;" p
|
||||
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/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
|
||||
OpenAIAsync::Server::API::v1::File .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Server/API/v1/File.pm 1;" p
|
||||
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/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
|
||||
OpenAIAsync::Server::API::v1::ModelList .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Server/API/v1/ModelList.pm 1;" p
|
||||
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/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/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
|
||||
OpenAIAsync::Types::Requests .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
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/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
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Requests.pm 192;" p
|
||||
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/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
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Requests.pm 115;" p
|
||||
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/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
|
||||
OpenAIAsync::Types::Results .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
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/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
|
||||
OpenAIAsync::Types::Shared .build/S3aTKnbkmA/blib/lib/OpenAIAsync/Types/Shared.pm 1;" 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/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
|
||||
PAREN local/lib/perl5/Perl/Tidy/Tokenizer.pm 1699;" c
|
||||
PART_PRES local/lib/perl5/Lingua/EN/Inflect.pm 1452;" s
|
||||
|
@ -27994,10 +27967,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/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
|
||||
new .build/previous/lib/OpenAIAsync/Types/Requests.pm 195;" s
|
||||
new lib/OpenAIAsync/Types/Requests.pm 118;" s
|
||||
new lib/OpenAIAsync/Types/Requests.pm 195;" s
|
||||
new local/bin/lwp-request 231;" s
|
||||
|
@ -28792,8 +28761,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/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
|
||||
oo local/lib/perl5/oo.pm 1;" p
|
||||
oo::import local/lib/perl5/oo.pm 22;" s
|
||||
|
@ -31436,8 +31403,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/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
|
||||
y_n local/lib/perl5/Module/Build/Base.pm 602;" s
|
||||
year local/lib/perl5/Software/License.pm 57;" s
|
||||
|
|
76
lib/OpenAIAsync/Server/API/v1/Audio.pm
Normal file
76
lib/OpenAIAsync/Server/API/v1/Audio.pm
Normal file
|
@ -0,0 +1,76 @@
|
|||
package OpenAIAsync::Server::API::v1::Audio;
|
||||
|
||||
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::Audio - Basic audio api role, consumed to implement the OpenAI audio api. Does not provide an implementation, you are expected to override them in your class
|
||||
|
||||
TODO document the subroles here, split up because TTS is much simpler to implement than the others and will be more valuable to support alone if someone chooses
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
...
|
||||
|
||||
=cut
|
||||
|
||||
role OpenAIAsync::Server::API::v1::Audio :strict(params) {
|
||||
apply OpenAIAsync::Server::API::v1::AudioTTS;
|
||||
apply OpenAIAsync::Server::API::v1::AudioSTT;
|
||||
apply OpenAIAsync::Server::API::v1::AudioTranslate;
|
||||
}
|
||||
|
||||
role OpenAIAsync::Server::API::v1::AudioTTS :strict(params) {
|
||||
ADJUST {
|
||||
$self->register_url(
|
||||
method => 'POST',
|
||||
url => qr{^/v1/audio/speech$},
|
||||
handle => async sub($req, $ctx, $obj, $params) {await $self->audio_create_speech($obj, $req, $ctx)},
|
||||
request_class => "OpenAIAsync::Type::Requests::CreateSpeech",
|
||||
result_class => "", # This gives back a file of audio data
|
||||
);
|
||||
}
|
||||
|
||||
async method audio_create_speech($obj, $http_req, $ctx) {...}
|
||||
}
|
||||
|
||||
role OpenAIAsync::Server::API::v1::AudioSTT :strict(params) {
|
||||
ADJUST {
|
||||
$self->register_url(
|
||||
method => 'POST',
|
||||
url => qr{^/v1/audio/transcription$},
|
||||
handle => async sub($req, $ctx, $obj, $params) {await $self->audio_create_transcript($obj, $req, $ctx)},
|
||||
request_class => "OpenAIAsync::Type::Requests::CreateTranscription",
|
||||
result_class => "", # This gives back a file, in the requested format
|
||||
);
|
||||
}
|
||||
|
||||
async method audio_create_transcript($obj, $http_req, $ctx) {...}
|
||||
}
|
||||
|
||||
role OpenAIAsync::Server::API::v1::AudioTranslate :strict(params) {
|
||||
ADJUST {
|
||||
$self->register_url(
|
||||
method => 'POST',
|
||||
url => qr{^/v1/$},
|
||||
handle => async sub($req, $ctx, $obj, $params) {await $self->audio_create_translation($obj, $req, $ctx)},
|
||||
request_class => "OpenAIAsync::Type::Requests::CreateTranslation",
|
||||
result_class => "", # This gives back a file, in the requested format
|
||||
);
|
||||
}
|
||||
|
||||
async method audio_create_translation($obj, $http_req, $ctx) {...}
|
||||
}
|
|
@ -6,6 +6,7 @@ use Test2::V0;
|
|||
use OpenAIAsync::Client;
|
||||
|
||||
BEGIN {
|
||||
no warnings 'uninitialized';
|
||||
$ENV{OPENAI_API_KEY}="12345" unless $ENV{OPENAI_API_KEY}eq"12345";
|
||||
}
|
||||
|
||||
|
@ -37,4 +38,4 @@ ok lives {
|
|||
|
||||
|
||||
|
||||
done_testing();
|
||||
done_testing();
|
||||
|
|
Loading…
Add table
Reference in a new issue