The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

AI::Chat - Interact with AI Chat APIs

VERSION

Version 0.2

SYNOPSIS

  use AI::Chat;

  my $chat  = AI::Chat->new(
      key   => 'your-api-key',
      api   => 'OpenAI',
      model => 'gpt-3.5-turbo-0125',
  );

  my $reply = $chat->prompt("What is the meaning of life?");
  print $reply;

DESCRIPTION

This module provides a simple interface for interacting with AI Chat APIs, currently supporting OpenAI.

The AI chat agent can be given a role and then passed prompts. It will reply to the prompts in natural language. Being AI, the responses are non-deterministic, that is, the same prompt will result in diferent responses on different occasions.

Further control of the creativity of the responses is possible by specifying at optional temperature parameter.

API KEYS

A free OpenAI API can be obtained from https://platform.openai.com/account/api-keys

MODELS

Although the API Key is free, each use incurs a cost. This is dependent on the number of tokens in the prompt and the reply. Different models have different costs. The default model gpt-3.5-turbo-0125 is the lowest cost of the useful models and is a good place to start using this module.

See also https://platform.openai.com/docs/models/overview

METHODS

new

  my $chat = AI::Chat->new(%params);

Creates a new AI::Chat object.

Parameters

key

required Your API key for the chosen service.

api

The API to use (currently only 'OpenAI' is supported).

model

The language model to use (default: 'gpt-3.5-turbo-0125').

See https://platform.openai.com/docs/models/overview

role

The role to use for the bot in conversations.

This tells the bot what it's purpose when answering prompts.

For example: "You are a world class copywriter famed for creating content that is immediately engaging with a lighthearted, storytelling style".

debug

Used for testing. If set to any true value, the prompt method will return details of the error encountered instead of undef

prompt

  my $reply = $chat->prompt($prompt, $temperature);

Sends a prompt to the AI Chat API and returns the response.

Parameters

prompt

required The prompt to send to the AI.

temperature

The creativity level of the response (default: 1.0).

Temperature ranges from 0 to 2. The higher the temperature, the more creative the bot will be in it's responses.

success

  my $success = $chat->success();

Returns true if the last operation was successful.

error

  my $error = $chat->error();

Returns the error message if the last operation failed.

SEE ALSO

https://openai.com - OpenAI official website

AUTHOR

Ian Boddison <ian at boddison.com>

BUGS

Please report any bugs or feature requests to bug-ai-chat at rt.cpan.org, or through the web interface at https://rt.cpan.org/NoAuth/ReportBug.html?Queue=bug-ai-chat. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc AI::Chat

You can also look for information at:

COPYRIGHT AND LICENSE

Copyright (C) 2024 by Ian Boddison

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.