NAME

OpenAI::API::Request::Chat - chat endpoint

SYNOPSIS

use OpenAI::API::Request::Chat;

my $chat = OpenAI::API::Request::Chat->new(
    messages => [
        { "role" => "system", "content" => "You are a helpful assistant." },
    ],
);

my $res = $chat->send_message('Who won the world series in 2020?');

DESCRIPTION

Given a chat conversation, the model will return a chat completion response (similar to ChatGPT).

METHODS

new()

  • model

    ID of the model to use.

    See Models overview for a reference of them.

  • messages

    The messages to generate chat completions for, in the chat format.

  • max_tokens [optional]

    The maximum number of tokens to generate.

    Most models have a context length of 2048 tokens (except for the newest models, which support 4096.

  • temperature [optional]

    What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.

  • top_p [optional]

    An alternative to sampling with temperature, called nucleus sampling.

    We generally recommend altering this or temperature but not both.

  • n [optional]

    How many completions to generate for each prompt.

    Use carefully and ensure that you have reasonable settings for max_tokens and stop.

  • stop [optional]

    Up to 4 sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.

  • frequency_penalty [optional]

    Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far.

  • presence_penalty [optional]

    Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far.

  • user [optional]

    A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.

send()

Sends the request and returns a data structured similar to the one documented in the API reference.

send_async()

Send a request asynchronously. Returns a future that will be resolved with the decoded JSON response. See OpenAI::API::Request for an example.

add_message($role, $content)

Appends a message to the list of messages without sending a request.

Returns $self, so it can be chained with send or send_async:

my $res = OpenAI::API::Request::Chat->new()->add_message( user => 'Hi!' )->send();

send_message($content)

Sends a single message as user, appending messages to the conversation automatically. This allows you to treat the OpenAI::API::Request::Chat object as a "chat" instead of a single request:

my $chat = OpenAI::API::Request::Chat->new();

my $res1 = $chat->send_message("Hello!");
print "$res1\n";

my $res2 = $chat->send_message("What can you do?");
print "$res2\n";

SEE ALSO

OpenAI API Reference: Chat