syntax fixes, big errors still
This commit is contained in:
parent
f54d3a89e6
commit
afdb8bd5c9
3 changed files with 523 additions and 31 deletions
|
@ -252,7 +252,7 @@ class OpenAIAsync::Server :repr(HASH) :strict(params) {
|
||||||
|
|
||||||
method _make_queue() {
|
method _make_queue() {
|
||||||
my $queue = Future::Queue->new(
|
my $queue = Future::Queue->new(
|
||||||
prototype => sub {$self->_make_future()}
|
prototype => sub {$self->_make_future()},
|
||||||
max_items => 1, # set a max item count, this is so that await ->push() will cause things to yield
|
max_items => 1, # set a max item count, this is so that await ->push() will cause things to yield
|
||||||
);
|
);
|
||||||
return $queue;
|
return $queue;
|
||||||
|
@ -364,19 +364,19 @@ class OpenAIAsync::Server :repr(HASH) :strict(params) {
|
||||||
await $self->$route_method($future_status, $queue, $ctx, $obj, $params);
|
await $self->$route_method($future_status, $queue, $ctx, $obj, $params);
|
||||||
|
|
||||||
my $status = await $future_status;
|
my $status = await $future_status;
|
||||||
my $is_streaming_event = $status->{is_streaming};
|
my $is_streaming = $status->{is_streaming};
|
||||||
|
|
||||||
my $headers = {
|
my $headers = {
|
||||||
"Content-Type" => $is_streaming ? "text/event-stream" : $status->{content_type},
|
"Content-Type" => $is_streaming ? "text/event-stream" : $status->{content_type},
|
||||||
$is_streaming ? ()"Cache-Control" => "no-store") : (),
|
$is_streaming ? ("Cache-Control" => "no-store") : (),
|
||||||
# TODO others?
|
# TODO others?
|
||||||
}
|
};
|
||||||
my $response = HTTP::Response->new($status->{status_code}, $status->{status_message}, $status->{headers});
|
my $response = HTTP::Response->new($status->{status_code}, $status->{status_message}, $status->{headers});
|
||||||
|
|
||||||
$req->write($response->as_string("\r\n"));
|
$req->write($response->as_string("\r\n"));
|
||||||
$req->write("\r\n"); # extra to end headers
|
$req->write("\r\n"); # extra to end headers
|
||||||
|
|
||||||
$req->write(sub {
|
$req->write(async sub {
|
||||||
my $body_obj = await $queue->pull();
|
my $body_obj = await $queue->pull();
|
||||||
|
|
||||||
if (defined $body_obj) {
|
if (defined $body_obj) {
|
||||||
|
@ -385,7 +385,7 @@ class OpenAIAsync::Server :repr(HASH) :strict(params) {
|
||||||
|
|
||||||
if ($is_streaming) {
|
if ($is_streaming) {
|
||||||
return sprintf "event: %s\ndata: %s\n\n", $event_name, $body;
|
return sprintf "event: %s\ndata: %s\n\n", $event_name, $body;
|
||||||
} eles {
|
} else {
|
||||||
return $body;
|
return $body;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -29,8 +29,9 @@ role OpenAIAsync::Server::API::Test::ChatCompletion :strict(params) {
|
||||||
apply OpenAIAsync::Server::API::v1::ChatCompletion;
|
apply OpenAIAsync::Server::API::v1::ChatCompletion;
|
||||||
use OpenAIAsync::Types::Results;
|
use OpenAIAsync::Types::Results;
|
||||||
use Future::AsyncAwait;
|
use Future::AsyncAwait;
|
||||||
|
use builtin qw/false/;
|
||||||
|
|
||||||
async method chat ($future_status, $queue, $ctx, $obj, $params) {
|
async method chat_completion ($future_status, $queue, $ctx, $obj, $params) {
|
||||||
my $chained_future = $future_status->then(sub {
|
my $chained_future = $future_status->then(sub {
|
||||||
return OpenAIAsync::Types::Results::ChatCompletion->new(
|
return OpenAIAsync::Types::Results::ChatCompletion->new(
|
||||||
id => "24601",
|
id => "24601",
|
||||||
|
@ -57,4 +58,5 @@ role OpenAIAsync::Server::API::Test::ChatCompletion :strict(params) {
|
||||||
});
|
});
|
||||||
|
|
||||||
return $chained_future; # TODO this might actually be wrong thanks to the async above?
|
return $chained_future; # TODO this might actually be wrong thanks to the async above?
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue