This commit is contained in:
parent
3b7e9da9cb
commit
2112424a80
9 changed files with 227 additions and 103 deletions
100
.vstags
100
.vstags
|
@ -9849,8 +9849,12 @@ Object::PadX::Role::AutoMarshal::unimport local/lib/perl5/Object/PadX/Role/AutoM
|
|||
OlsonVersion local/lib/perl5/DateTime/TimeZone/Catalog.pm 1865;" s
|
||||
OpenAIAsync .build/0T4wbFlmwf/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/0T4wbFlmwf/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/2oNz8Mp68u/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/2oNz8Mp68u/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/AcmKa2ZbCJ/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/JhaXDkLtkw/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/JhaXDkLtkw/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/UPVIKQUOaN/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/UPVIKQUOaN/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/Xz72xzB4iA/blib/lib/OpenAIAsync.pm 1;" p
|
||||
|
@ -9859,13 +9863,17 @@ OpenAIAsync .build/bgXXjrPaza/blib/lib/OpenAIAsync.pm 1;" p
|
|||
OpenAIAsync .build/bgXXjrPaza/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/mKmyAW37h1/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/mKmyAW37h1/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/previous/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/previous/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/t7Cb8f47yj/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/t7Cb8f47yj/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/trQp7H7Uyl/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/trQp7H7Uyl/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/wX6DkQhw6E/blib/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync .build/wX6DkQhw6E/lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync lib/OpenAIAsync.pm 1;" p
|
||||
OpenAIAsync::Client .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/2oNz8Mp68u/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/JhaXDkLtkw/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/UPVIKQUOaN/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/Xz72xzB4iA/blib/lib/OpenAIAsync/Client.pm 1;" p
|
||||
|
@ -9874,13 +9882,17 @@ OpenAIAsync::Client .build/bgXXjrPaza/blib/lib/OpenAIAsync/Client.pm 1;" p
|
|||
OpenAIAsync::Client .build/bgXXjrPaza/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/mKmyAW37h1/blib/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/mKmyAW37h1/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 .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client .build/t7Cb8f47yj/lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Client lib/OpenAIAsync/Client.pm 1;" p
|
||||
OpenAIAsync::Types .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/0T4wbFlmwf/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/2oNz8Mp68u/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/JhaXDkLtkw/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/UPVIKQUOaN/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/Xz72xzB4iA/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
|
@ -9889,8 +9901,8 @@ OpenAIAsync::Types .build/bgXXjrPaza/blib/lib/OpenAIAsync/Types.pm 1;" p
|
|||
OpenAIAsync::Types .build/bgXXjrPaza/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/mKmyAW37h1/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/mKmyAW37h1/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 .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/t7Cb8f47yj/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/trQp7H7Uyl/lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types.pm 1;" p
|
||||
|
@ -9898,10 +9910,14 @@ OpenAIAsync::Types .build/wX6DkQhw6E/lib/OpenAIAsync/Types.pm 1;" p
|
|||
OpenAIAsync::Types lib/OpenAIAsync/Types.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/4DgDOdekNW/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/UPVIKQUOaN/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/Xz72xzB4iA/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
|
@ -9916,8 +9932,8 @@ OpenAIAsync::Types::Requests .build/mKmyAW37h1/blib/lib/OpenAIAsync/Types/Reques
|
|||
OpenAIAsync::Types::Requests .build/mKmyAW37h1/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/nb3podVIwj/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 .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/trQp7H7Uyl/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
|
@ -9926,10 +9942,14 @@ OpenAIAsync::Types::Requests lib/OpenAIAsync/Types/Requests.pm 1;" p
|
|||
OpenAIAsync::Types::Requests:: .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Requests.pm 1;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Requests.pm 169;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/4DgDOdekNW/lib/OpenAIAsync/Types/Requests.pm 169;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Requests.pm 169;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/UPVIKQUOaN/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
|
@ -9945,19 +9965,23 @@ OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/mKmyAW37h1/
|
|||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/mKmyAW37h1/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/nb3podVIwj/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/previous/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/trQp7H7Uyl/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union .build/wX6DkQhw6E/lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union lib/OpenAIAsync/Types/Requests.pm 170;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union lib/OpenAIAsync/Types/Requests.pm 186;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Requests.pm 93;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/4DgDOdekNW/lib/OpenAIAsync/Types/Requests.pm 93;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Requests.pm 93;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/UPVIKQUOaN/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
|
@ -9973,19 +9997,23 @@ OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .buil
|
|||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/mKmyAW37h1/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/nb3podVIwj/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/previous/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/trQp7H7Uyl/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion .build/wX6DkQhw6E/lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion lib/OpenAIAsync/Types/Requests.pm 94;" p
|
||||
OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ContentUnion lib/OpenAIAsync/Types/Requests.pm 110;" p
|
||||
OpenAIAsync::Types::Results .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/4DgDOdekNW/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/UPVIKQUOaN/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
|
@ -10001,8 +10029,8 @@ OpenAIAsync::Types::Results .build/mKmyAW37h1/blib/lib/OpenAIAsync/Types/Results
|
|||
OpenAIAsync::Types::Results .build/mKmyAW37h1/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/nb3podVIwj/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 .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/trQp7H7Uyl/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
OpenAIAsync::Types::Results .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Results.pm 1;" p
|
||||
|
@ -28052,6 +28080,10 @@ new .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
|||
new .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Requests.pm 172;" s
|
||||
new .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Requests.pm 96;" s
|
||||
new .build/4DgDOdekNW/lib/OpenAIAsync/Types/Requests.pm 172;" s
|
||||
|
@ -28060,6 +28092,10 @@ new .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
|||
new .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Requests.pm 172;" s
|
||||
new .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Requests.pm 96;" s
|
||||
new .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
|
@ -28090,10 +28126,10 @@ new .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
|||
new .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/nb3podVIwj/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/nb3podVIwj/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/previous/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/previous/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/trQp7H7Uyl/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
|
@ -28102,8 +28138,8 @@ new .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
|||
new .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new .build/wX6DkQhw6E/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new .build/wX6DkQhw6E/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
new lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
new lib/OpenAIAsync/Types/Requests.pm 113;" s
|
||||
new lib/OpenAIAsync/Types/Requests.pm 189;" s
|
||||
new local/bin/lwp-request 231;" s
|
||||
new local/lib/perl5/Algorithm/Diff.pm 580;" s
|
||||
new local/lib/perl5/App/Cmd.pm 163;" s
|
||||
|
@ -28894,10 +28930,14 @@ onlyres local/lib/perl5/List/SomeUtils/PP.pm 160;" s
|
|||
onlyval local/lib/perl5/List/SomeUtils/PP.pm 148;" s
|
||||
ontent::new .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Requests.pm 172;" s
|
||||
ontent::new .build/4DgDOdekNW/lib/OpenAIAsync/Types/Requests.pm 172;" s
|
||||
ontent::new .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Requests.pm 172;" s
|
||||
ontent::new .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/UPVIKQUOaN/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
|
@ -28913,13 +28953,13 @@ ontent::new .build/mKmyAW37h1/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
|||
ontent::new .build/mKmyAW37h1/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/nb3podVIwj/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/previous/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/trQp7H7Uyl/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new .build/wX6DkQhw6E/lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new lib/OpenAIAsync/Types/Requests.pm 173;" s
|
||||
ontent::new lib/OpenAIAsync/Types/Requests.pm 189;" 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
|
||||
|
@ -31559,10 +31599,14 @@ xlp_collapsed_lengths_initialize local/lib/perl5/Perl/Tidy/Formatter.pm 13897;"
|
|||
xlp_tweak local/lib/perl5/Perl/Tidy/Formatter.pm 29023;" s
|
||||
y::new .build/0T4wbFlmwf/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/0T4wbFlmwf/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/2oNz8Mp68u/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/2oNz8Mp68u/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/4DgDOdekNW/blib/lib/OpenAIAsync/Types/Requests.pm 96;" s
|
||||
y::new .build/4DgDOdekNW/lib/OpenAIAsync/Types/Requests.pm 96;" s
|
||||
y::new .build/AcmKa2ZbCJ/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/AcmKa2ZbCJ/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/JhaXDkLtkw/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/JhaXDkLtkw/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/NfFNPyy4iR/lib/OpenAIAsync/Types/Requests.pm 96;" s
|
||||
y::new .build/UPVIKQUOaN/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/UPVIKQUOaN/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
|
@ -31578,13 +31622,13 @@ y::new .build/mKmyAW37h1/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
|||
y::new .build/mKmyAW37h1/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/nb3podVIwj/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/nb3podVIwj/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/previous/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/previous/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/t7Cb8f47yj/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/t7Cb8f47yj/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/trQp7H7Uyl/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/trQp7H7Uyl/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/wX6DkQhw6E/blib/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new .build/wX6DkQhw6E/lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new lib/OpenAIAsync/Types/Requests.pm 97;" s
|
||||
y::new lib/OpenAIAsync/Types/Requests.pm 113;" s
|
||||
y_n local/lib/perl5/Module/Build/Base.pm 602;" s
|
||||
year local/lib/perl5/Software/License.pm 57;" s
|
||||
year local/lib/perl5/x86_64-linux/DateTime.pm 767;" s
|
||||
|
|
|
@ -126,8 +126,23 @@ class OpenAIAsync::Client :repr(HASH) :isa(IO::Async::Notifier) :strict(params)
|
|||
return $type_result;
|
||||
}
|
||||
|
||||
async method chat($prompt) {
|
||||
...
|
||||
async method chat($input) {
|
||||
if (ref($input) eq 'HASH') {
|
||||
$input = OpenAIAsync::Types::Requests::ChatCompletion->new($input->%*);
|
||||
} elsif (ref($input) eq 'OpenAIAsync::Types::Requests::ChatCompletion') {
|
||||
# dummy, nothing to do
|
||||
} else {
|
||||
die "Unsupported input type [".ref($input)."]";
|
||||
}
|
||||
|
||||
print "Making request\n";
|
||||
|
||||
my $data = await $self->_make_request("/completions", $input);
|
||||
|
||||
my $type_result = OpenAIAsync::Types::Results::ChatCompletion->new($data->%*);
|
||||
|
||||
return $type_result;
|
||||
|
||||
}
|
||||
|
||||
async method embedding($input) {
|
||||
|
|
|
@ -13,15 +13,31 @@ role OpenAIAsync::Types::Requests::Base :does(OpenAIAsync::Types::Base) :Struct
|
|||
|
||||
#### Base Request Types
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion :does(OpenAIAsync::Types::Requests::Base) {
|
||||
method _endpoint() {...}
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion :does(OpenAIAsync::Types::Requests::Base) :Struct {
|
||||
method _endpoint() {"/chat/completion"}
|
||||
field $messages :MarshalTo([OpenAIAsync::Types::Requests::ChatCompletion::Messages::Union]);
|
||||
field $model :JSONStr = "gpt-3.5-turbo";
|
||||
field $frequency_penalty :JSONNum = undefs;
|
||||
field $presence_penalty :JSONNum = undef;
|
||||
field $logit_bias = undef; # TODO wtf is this?
|
||||
field $max_tokens :JSONNum = undef;
|
||||
field $response_format :JSONStr :JSONExclude = undef; # I'm not supporting this this version yet
|
||||
|
||||
field $seed :JSONNum = undef;
|
||||
field $stop = undef; # String, array or null, todo handle
|
||||
field $stream :JSONBool = undef; # TODO handle
|
||||
field $temperature :JSONNum = undef;
|
||||
field $top_p :JSONNum = undef;
|
||||
field $tools :JSONExclude = undef; # TODO handle this
|
||||
field $tool_choice :JSONExclude = undef; # TODO handle this
|
||||
|
||||
field $function_call :JSONExclude = undef;
|
||||
field $functions :JSONExclude = undef;s
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::Completion :does(OpenAIAsync::Types::Requests::Base) {
|
||||
method _endpoint() {...}
|
||||
use JSON::MaybeXS; # TODO make a role that does this better?
|
||||
|
||||
class OpenAIAsync::Types::Requests::Completion :does(OpenAIAsync::Types::Requests::Base) :Struct {
|
||||
method _endpoint() {"/completion"}
|
||||
|
||||
field $model :JSONStr = "gpt-3.5-turbo"; # This is how 99% of everyone else seems to default this
|
||||
field $prompt :JSONStr;
|
||||
|
||||
|
@ -51,7 +67,7 @@ class OpenAIAsync::Types::Requests::Completion :does(OpenAIAsync::Types::Request
|
|||
}
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::Embedding :does(OpenAIAsync::Types::Requests::Base) {
|
||||
class OpenAIAsync::Types::Requests::Embedding :does(OpenAIAsync::Types::Requests::Base) :Struct {
|
||||
method _endpoint() {...}
|
||||
field $input :JSONStr;
|
||||
field $model :JSONStr;
|
||||
|
@ -61,7 +77,7 @@ class OpenAIAsync::Types::Requests::Embedding :does(OpenAIAsync::Types::Requests
|
|||
|
||||
### Request Subtypes
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::ToolCall :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::ToolCall :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $id :JSONStr;
|
||||
field $arguments :JSONStr;
|
||||
field $type :JSONStr;
|
||||
|
@ -73,17 +89,17 @@ class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::Functio
|
|||
field $name :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::Text :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::Text :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $type :JSONStr;
|
||||
field $text :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ImageUrl :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ImageUrl :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $url :JSONStr;
|
||||
field $detail :JSONStr = undef;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::Image :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::Image :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $type :JSONStr;
|
||||
field $image_url :MarshalTo(OpenAIAsync::Types::Requests::ChatCompletion::Messages::User::ImageUrl);
|
||||
}
|
||||
|
@ -110,7 +126,7 @@ package
|
|||
}
|
||||
};
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User :does(OpenAIAsync::Types::Base) :Struct {
|
||||
# This particular type is more complicated than AutoMarshal can handle, so we need to
|
||||
# do this in a custom manner.
|
||||
field $role;
|
||||
|
@ -139,7 +155,7 @@ class OpenAIAsync::Types::Requests::ChatCompletion::Messages::User :does(OpenAIA
|
|||
}
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $role :JSONStr;
|
||||
field $content :JSONStr;
|
||||
field $name = undef;
|
||||
|
@ -147,19 +163,19 @@ class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant :does(Op
|
|||
field $function_call :MarshalTo(OpenAIAsync::Types::Requests::ChatCompletion::Messages::Assistant::FunctionCall) = undef;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Function :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Function :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $role :JSONStr;
|
||||
field $content :JSONStr;
|
||||
field $name :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Tool :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::Tool :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $role :JSONStr;
|
||||
field $content :JSONStr;
|
||||
field $tool_call_id :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::System :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Requests::ChatCompletion::Messages::System :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $role :JSONStr;
|
||||
field $name :JSONStr = undef;
|
||||
field $content :JSONStr;
|
||||
|
|
|
@ -7,31 +7,31 @@ use Object::PadX::Role::AutoMarshal;
|
|||
use Object::PadX::Role::AutoJSON;
|
||||
use Object::Pad::ClassAttr::Struct;
|
||||
|
||||
class OpenAIAsync::Types::Results::ToolCall :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::ToolCall :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $id :JSONStr;
|
||||
field $type :JSONStr; # always "function" right now, may get expanded in the future
|
||||
field $function :MarshalTo(OpenAIAsync::Types::Results::FunctionCall);
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::FunctionCall :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::FunctionCall :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $arguments :JSONStr; # TODO decode the json from this directly?
|
||||
field $name :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::ChatMessage :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::ChatMessage :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $content :JSONStr;
|
||||
field $tool_calls :MarshalTo([OpenAIAsync::Types::Results::ToolCall]) = undef; # don't think my local server provides this
|
||||
field $role :JSONStr;
|
||||
field $function_call :MarshalTo(OpenAIAsync::Types::Results::FunctionCall) = undef; # Depcrecated, might still happen
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::ChatCompletionChoices :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::ChatCompletionChoices :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $finish_reason :JSONStr;
|
||||
field $index :JSONNum;
|
||||
field $message :MarshalTo(OpenAIAsync::Types::Results::ChatMessage);
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::ChatCompletion :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::ChatCompletion :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $id :JSONStr;
|
||||
field $choices :MarshalTo([OpenAIAsync::Types::Results::ChatCompletionChoices]);
|
||||
field $created :JSONStr;
|
||||
|
@ -41,21 +41,21 @@ class OpenAIAsync::Types::Results::ChatCompletion :does(OpenAIAsync::Types::Base
|
|||
field $object :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::ChunkDelta :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::ChunkDelta :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $content :JSONStr;
|
||||
field $function_call :MarshalTo(OpenAIAsync::Types::Results::FunctionCall);
|
||||
field $tool_cass :MarshalTo([OpenAIAsync::Types::Results::ToolCall]);
|
||||
field $role :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::ChatCompletionChunkChoices :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::ChatCompletionChunkChoices :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $delta :MarshalTo(OpenAIAsync::Types::Results::ChunkDelta);
|
||||
field $finish_reason :JSONStr;
|
||||
field $index :JSONStr;
|
||||
}
|
||||
|
||||
# This is part of the streaming API
|
||||
class OpenAIAsync::Types::Results::ChatCompletionChunk :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::ChatCompletionChunk :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $id :JSONStr;
|
||||
field $choices :MarshalTo(OpenAIAsync::Types::Results::ChatCompletionChunkChoices);
|
||||
field $created :JSONStr;
|
||||
|
@ -64,13 +64,13 @@ class OpenAIAsync::Types::Results::ChatCompletionChunk :does(OpenAIAsync::Types:
|
|||
field $object :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::Usage :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::Usage :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $total_tokens :JSONNum;
|
||||
field $prompt_tokens :JSONNum;
|
||||
field $completion_tokens :JSONNum; # look at chat completions, is this the same
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::LogProbs :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::LogProbs :does(OpenAIAsync::Types::Base) :Struct {
|
||||
# TODO what's the representation here?
|
||||
field $text_offset = undef;
|
||||
field $token_logprobs = undef;
|
||||
|
@ -78,14 +78,14 @@ class OpenAIAsync::Types::Results::LogProbs :does(OpenAIAsync::Types::Base) {
|
|||
field $top_logprobs = undef;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::CompletionChoices :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::CompletionChoices :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $text :JSONStr;
|
||||
field $index :JSONNum;
|
||||
field $logprobs :MarshalTo(OpenAIAsync::Types::Results::LogProbs) = undef; # TODO make nicer type?
|
||||
field $finish_reason :JSONStr = undef; # TODO enum? helper funcs for this class? ->is_finished?
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::Completion :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::Completion :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $id :JSONStr;
|
||||
field $choices :MarshalTo([OpenAIAsync::Types::Results::CompletionChoices]);
|
||||
field $created :JSONStr;
|
||||
|
@ -95,7 +95,7 @@ class OpenAIAsync::Types::Results::Completion :does(OpenAIAsync::Types::Base) {
|
|||
field $object :JSONStr;
|
||||
}
|
||||
|
||||
class OpenAIAsync::Types::Results::Embedding :does(OpenAIAsync::Types::Base) {
|
||||
class OpenAIAsync::Types::Results::Embedding :does(OpenAIAsync::Types::Base) :Struct {
|
||||
field $index :JSONNum;
|
||||
field $embedding :JSONList(JSONNum);
|
||||
field $object :JSONStr;
|
||||
|
|
|
@ -6,7 +6,7 @@ use Test2::V0;
|
|||
use OpenAIAsync::Client;
|
||||
|
||||
BEGIN {
|
||||
$ENV{OPENAI_API_KEY}="12345" unless $ENV{OPENAI_API_KEY}="12345";
|
||||
$ENV{OPENAI_API_KEY}="12345" unless $ENV{OPENAI_API_KEY}eq"12345";
|
||||
}
|
||||
|
||||
ok(lives {
|
||||
|
|
32
xt/01-completion-deprecated.t
Normal file
32
xt/01-completion-deprecated.t
Normal file
|
@ -0,0 +1,32 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test2::V0;
|
||||
|
||||
use OpenAIAsync::Client;
|
||||
|
||||
skip_all("Needs disclaimer to run") unless $ENV{I_PROMISE_NOT_TO_SUE_FOR_EXCESSIVE_COSTS} eq "Signed, ".getlogin();
|
||||
|
||||
skip_all("No api base defined") unless $ENV{OPENAI_API_BASE};
|
||||
skip_all("No API key defined") unless $ENV{OPENAI_API_KEY};
|
||||
|
||||
exit() unless ($ENV{OPENAI_API_KEY} and $ENV{OPENAI_API_BASE} and $ENV{I_PROMISE_NOT_TO_SUE_FOR_EXCESSIVE_COSTS} eq "Signed, ".getlogin());
|
||||
|
||||
use IO::Async::Loop;
|
||||
|
||||
my $loop = IO::Async::Loop->new();
|
||||
|
||||
my $client;
|
||||
ok(lives {
|
||||
$client = OpenAIAsync::Client->new();
|
||||
|
||||
isa_ok($client, "OpenAIAsync::Client");
|
||||
}, "basic client creation");
|
||||
|
||||
ok(lives {$loop->add($client);}, "Adding to loop");
|
||||
|
||||
my $output_future = $client->completion({max_tokens => 1024, prompt => "Tell a story about a princess named Judy and her princess sister Emmy"});
|
||||
use Data::Dumper;
|
||||
print Dumper($output_future->get());
|
||||
|
||||
done_testing();
|
49
xt/02-chat-completion.t
Normal file
49
xt/02-chat-completion.t
Normal file
|
@ -0,0 +1,49 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test2::V0;
|
||||
|
||||
use OpenAIAsync::Client;
|
||||
|
||||
skip_all("Needs disclaimer to run") unless $ENV{I_PROMISE_NOT_TO_SUE_FOR_EXCESSIVE_COSTS} eq "Signed, ".getlogin();
|
||||
|
||||
skip_all("No api base defined") unless $ENV{OPENAI_API_BASE};
|
||||
skip_all("No API key defined") unless $ENV{OPENAI_API_KEY};
|
||||
|
||||
exit() unless ($ENV{OPENAI_API_KEY} and $ENV{OPENAI_API_BASE} and $ENV{I_PROMISE_NOT_TO_SUE_FOR_EXCESSIVE_COSTS} eq "Signed, ".getlogin());
|
||||
|
||||
use IO::Async::Loop;
|
||||
|
||||
my $loop = IO::Async::Loop->new();
|
||||
|
||||
my $client;
|
||||
ok(lives {
|
||||
$client = OpenAIAsync::Client->new();
|
||||
|
||||
isa_ok($client, "OpenAIAsync::Client");
|
||||
}, "basic client creation");
|
||||
|
||||
ok(lives {$loop->add($client);}, "Adding to loop");
|
||||
|
||||
my $output_future = $client->chat({
|
||||
model => "gpt-3.5-turbo",
|
||||
messages => [
|
||||
{
|
||||
role => "system",
|
||||
content => "You are a helpful assistant that tells fanciful stories"
|
||||
},
|
||||
{
|
||||
role => "user",
|
||||
content => "Hello!"
|
||||
}
|
||||
],
|
||||
|
||||
|
||||
|
||||
max_tokens => 1024,
|
||||
});
|
||||
|
||||
use Data::Dumper;
|
||||
print Dumper($output_future->get());
|
||||
|
||||
done_testing();
|
|
@ -1,43 +0,0 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test2::V0;
|
||||
|
||||
use OpenAIAsync::Client;
|
||||
|
||||
skip_all("Needs disclaimer to run") unless $ENV{I_PROMISE_NOT_TO_SUE_FOR_EXCESSIVE_COSTS} eq "Signed, ".getlogin();
|
||||
|
||||
skip_all("No api base defined") unless $ENV{OPENAI_API_BASE};
|
||||
skip_all("No API key defined") unless $ENV{OPENAI_API_KEY};
|
||||
|
||||
exit() unless ($ENV{OPENAI_API_KEY} and $ENV{OPENAI_API_BASE} and $ENV{I_PROMISE_NOT_TO_SUE_FOR_EXCESSIVE_COSTS} eq "Signed, ".getlogin());
|
||||
|
||||
ok(lives {
|
||||
my $client = OpenAIAsync::Client->new();
|
||||
|
||||
isa_ok($client, "OpenAIAsync::Client");
|
||||
}, "basic client creation");
|
||||
|
||||
my $exp = dies {
|
||||
my $client = OpenAIAsync::Client->new(bad_option_doesnt_exist => 1);
|
||||
};
|
||||
|
||||
ok($exp, "Unknown option kills creation");
|
||||
|
||||
like($exp, qr/Unrecognised parameters for OpenAIAsync::Client constructor: 'bad_option_doesnt_exist' at/, "exception text for unknonwn option");
|
||||
|
||||
ok lives {
|
||||
my $client = OpenAIAsync::Client->new(http_other_options => {});
|
||||
|
||||
isa_ok($client, "OpenAIAsync::Client");
|
||||
}, "set http options";
|
||||
|
||||
ok lives {
|
||||
my $client = OpenAIAsync::Client->new(io_async_notifier_params=>{});
|
||||
|
||||
isa_ok($client, "OpenAIAsync::Client");
|
||||
}, "Can give io async notifier options";
|
||||
|
||||
|
||||
|
||||
done_testing();
|
11
xtest.sh
Executable file
11
xtest.sh
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -euxo pipefail
|
||||
|
||||
export OPENAI_API_KEY="0118 999 881 999 119 725 3"
|
||||
export OPENAI_API_BASE="http://openai.general1-model.brainiac.ai.simcop2387.info/v1"
|
||||
export I_PROMISE_NOT_TO_SUE_FOR_EXCESSIVE_COSTS="Signed, ryan"
|
||||
|
||||
#dzil xtest
|
||||
|
||||
perl -Ilib xt/02-chat-completion.t
|
Loading…
Add table
Reference in a new issue