More types

This commit is contained in:
Ryan Voots 2023-11-14 13:28:47 -05:00
parent f6dc47b81e
commit 8aabd46c9c
2 changed files with 36 additions and 30 deletions

12
.vstags
View file

@ -7832,10 +7832,8 @@ OpenAI::API::Response::Moderation local/lib/perl5/OpenAI/API/Response/Moderation
OpenAI::API::config local/lib/perl5/OpenAI/API.pm 52;" s
OpenAI::API::new local/lib/perl5/OpenAI/API.pm 40;" s
OpenAIAsync::Types::Requests:: lib/OpenAIAsync/Types/Requests.pm 1;" p
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union lib/OpenAIAsync/Types/Requests.pm 107;" p
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union::new lib/OpenAIAsync/Types/Requests.pm 110;" s
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion lib/OpenAIAsync/Types/Requests.pm 31;" p
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion::new lib/OpenAIAsync/Types/Requests.pm 34;" s
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union lib/OpenAIAsync/Types/Requests.pm 113;" p
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion lib/OpenAIAsync/Types/Requests.pm 37;" p
OpenAIAsync::Types::Results lib/OpenAIAsync/Types/Results.pm 1;" p
OpenAIClient lib/OpenAIClient.pm 1;" p
OpenAIClient::send_completion lib/OpenAIClient.pm 46;" s
@ -19063,6 +19061,7 @@ lstat local/lib/perl5/Path/Tiny.pm 2189;" s
lwp_ext_ent_cleanup local/lib/perl5/x86_64-linux/XML/Parser/LWPExternEnt.pl 65;" s
lwp_ext_ent_handler local/lib/perl5/x86_64-linux/XML/Parser/LWPExternEnt.pl 21;" s
mac_path local/lib/perl5/URI/URL.pm 172;" s
mage_url::new lib/OpenAIAsync/Types/Requests.pm 40;" s
magic_number_matches local/lib/perl5/Module/Build/Base.pm 1848;" s
main local/lib/perl5/Alien/Build/MM.pm 272;" p
make_abstract local/lib/perl5/Alien/Base/PkgConfig.pm 70;" s
@ -19370,8 +19369,8 @@ negotiate local/lib/perl5/Mojo/IOLoop/TLS.pm 25;" s
netloc local/lib/perl5/URI/URL.pm 90;" s
netscape_buggy_comment local/lib/perl5/x86_64-linux/HTML/Parser.pm 102;" s
network_contains local/lib/perl5/Mojo/Util.pm 208;" s
new lib/OpenAIAsync/Types/Requests.pm 110;" s
new lib/OpenAIAsync/Types/Requests.pm 34;" s
new lib/OpenAIAsync/Types/Requests.pm 116;" s
new lib/OpenAIAsync/Types/Requests.pm 40;" s
new local/bin/lwp-request 231;" s
new local/lib/perl5/AI/Embedding.pm 16;" s
new local/lib/perl5/Alien/Base.pm 111;" s
@ -20092,6 +20091,7 @@ one_tick local/lib/perl5/Mojo/Reactor/EV.pm 21;" s
one_tick local/lib/perl5/Mojo/Reactor/Poll.pm 32;" s
oneliner local/lib/perl5/Module/Build/Base.pm 5431;" s
oneliner local/lib/perl5/Module/Build/Platform/VMS.pm 272;" s
ontent::new lib/OpenAIAsync/Types/Requests.pm 116;" s
oo local/lib/perl5/oo.pm 1;" p
oo::import local/lib/perl5/oo.pm 22;" s
oo::moo local/lib/perl5/oo.pm 7;" s

View file

@ -7,28 +7,34 @@ use Object::PadX::Role::AutoJSON;
use Object::Pad::ClassAttr::Struct;
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::ToolCall :does(AutoMarshal) :does(AutoJSON) :Struct {
field $id;
field $arguments;
field $type;
field $id :JSONStr;
field $arguments :JSONStr;
field $type :JSONStr;
field $function :MarshalTo(OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::FunctionCall);
}
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::FunctionCall :does(AutoJSON) :Struct {
field $arguments;
field $name;
field $arguments :JSONStr;
field $name :JSONStr;
}
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::Text :does(AutoJSON) :Struct {
field $type;
field $text;
field $type :JSONStr;
field $text :JSONStr;
}
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::Image :does(AutoJSON) :Struct {
field $type;
field $image_url;
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ImageUrl :does(AutoJSON) :Struct {
field $url :JSONStr;
field $detail :JSONStr = undef;
}
package OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion {
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::Image :does(AutoJSON) :does(AutoMarshal) :Struct {
field $type :JSONStr;
field $image_url :MarshalTo(OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ImageUrl);
}
package
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion {
# This guy does some additional checks to give us the right type here
sub new {
@ -47,7 +53,6 @@ package OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUni
}
};
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User :does(AutoJSON) :Struct {
# This particular type is more complicated than AutoMarshal can handle, so we need to
# do this in a custom manner.
@ -78,33 +83,34 @@ class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User :does(AutoJSO
}
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant :does(AutoMarshal) :does(AutoJSON) :Struct {
field $role;
field $content;
field $role :JSONStr;
field $content :JSONStr;
field $name = undef;
field $tool_calls :MarshalTo([OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::ToolCall]) = undef;
field $function_call :MarshalTo(OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::FunctionCall) = undef;
}
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Function :does(AutoMarshal) :does(AutoJSON) :Struct {
field $role;
field $content;
field $name;
field $role :JSONStr;
field $content :JSONStr;
field $name :JSONStr;
}
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Tool :does(AutoMarshal) :does(AutoJSON) :Struct {
field $role;
field $content;
field $tool_call_id;
field $role :JSONStr;
field $content :JSONStr;
field $tool_call_id :JSONStr;
}
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::System :does(AutoMarshal) :does(AutoJSON) :Struct {
field $role;
field $name = undef;
field $content;
field $role :JSONStr;
field $name :JSONStr = undef;
field $content :JSONStr;
}
package OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union {
package
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union {
# This guy does some additional checks to give us the right type here
sub new {