Skip to content

Latest commit

 

History

History
109 lines (73 loc) · 8.25 KB

File metadata and controls

109 lines (73 loc) · 8.25 KB

Latest Release Download Count Foundry Core Compatible Version Buy Me a Coffee at ko-fi.com

AI Description Generator

Although this module is completely free, the AI it uses is not. The module requires an API key obtained from https://beta.openai.com/account/api-keys and an OpenAI account with valid payment information. The pricing can be found at https://openai.com/api/pricing/, but on average you can expect each non-custom request made by this module to cost about $0.002 (2/10th of a single cent). It is advised to set a monthly usage limit if you are worried about costs, you can do so in your account settings here https://beta.openai.com/account/billing/limits.

This module does not require any credentials except for your API key, which is stored locally in your Foundry settings. All billing is done from your OpenAI account. This key could be accessed by other programs and modules although they would have little reason to do so, nevertheless be careful and once again make sure to set a monthly limit to avoid unsuspected costs.

GPT-3 is a text-based AI by OpenAI. This module provides a user-friendly implentation to communicate with its API from within your Foundry games to generate descriptions on the fly. The module provides direct support for actors, items, attacks, spells, and features.

System Support

By default your current rpg system is integrated into the prompt to give GPT-3 the context it needs. By the nature of GPT-3 it will work better for popular systems and worse for very niche systems. If your system produces subpar results you can manually change the system in the settings to something that provides more context than just the system's name.

Language Support

By default your current FoundryVTT language is integrated into the prompt to encourage GPT-3 to reply in that language. GPT-3 was trained mainly in English so the quality of results may vary in other languages.

If you want to have some fun, try out Pirate Speech.

Pirate Speech Description

Chat Commands

There are two new commands available to the GM to send prompts to GPT-3.

/gpt construct (subject)
  • Constructs and sends a prompt similar to the Description Generator.
  • The prompt is based on your settings and the provided subject.
  • Examples:
    • /gpt construct Ancient White Dragon
    • /gpt construct Beholder
    • /gpt construct Fireball spell
/gpt send (prompt)
  • Sends a custom prompt.
  • Examples:
    • /gpt send What does the Magic Missile spell do in dnd5e?
    • /gpt send What would be a fun low level encounter for a dnd5e game set in a jungle?

Description Generator

All actors, items, attacks, spells, and features have a button added in their header for the GM to request a short description generated by the AI based on your rpg system and world/setting. Responses are put in the Foundry chat and can optionally only be whispered to you.

The button on the sheet

Player Characters (Dnd5e only!)

The prompt constructed for PC actors is a bit different than for other actors. PCs use their lineage and classes as the subject, instead of using the actor's name. Anything written in the appearance text box is also passed along as additional context. It is recommended to be short but concise to generate results that fit the character you have envisioned in your mind, for example: male, wild white hair, steampunk clothing, red eyes.

Examples

Adult Green Dragon

A description generated for an Adult Green Dragon

Air Elemental

A description generated for an Air Elemental

Will O' Wisp

A description generated for a Will O' Wisp

Alchemy Jug

A description generated for an Alchemy Jug

Bag of Holding

A description generated for a Bag of Holding

Flame Tongue Greatsword

A description generated for a Flame Tongue Greatsword

Cone of Cold

A description generated for Cone of Cold

Eldritch Blast

A description generated for Eldritch Blast

Fireball

A description generated for Fireball

Issues and Requests

Please report issues and propose feature requests here.

The module will never send a request to GPT-3 without being told to by pressing a button, using chat commands, or using the API in macros or other modules. Nevertheless if you ever suspect you are being charged for unprovoked requests from this module please disable the module immediately and raise a critical issue.

API

Requires the module's 'Enable API Functions' setting to be enabled.

WARNING! Using any of these functions will send a request to GPT-3 for which you will be charged like any other request made by this module. As such please be careful implenting them in macros and other modules. Test your code well before implementing these functions and I strongly advice users to avoid looping and recursive functions.

Functions to construct and send your own prompts are provided under game.modules.get('ai-description-generator').api:

  • constructPrompt(language, system, world, subject, subjectType, descriptionType, key): Construct and sends a prompt based on the provided context similar to how the base module does it.
    • language: The language GPT-3 will be encouraged to respond in. Use game.settings.get('ai-description-generator', 'language') to use the language provided in the module's/core's settings.
    • system: The RPG system to be used for context. Use game.settings.get('ai-description-generator', 'system') to use the system that was provided in the module's settings.
    • world: The world/setting to be used for context. Use game.settings.get('ai-description-generator', 'world') to use the world that was provided in the module's settings.
    • subject: The name of the subject.
    • subjectType (optional): Additional information about the nature of the subject, like creature or spell. Defaults to nothing.
    • descriptionType (optional): Additional information about what sort of description you want. Defaults to nothing but the module uses either cool short sensory or cool short visual.
    • key (optional): Your API key. Defaults to the API key provided by you in the module's settings.
  • sendPrompt(prompt, key): Sends a completely custom prompt.
    • prompt: The prompt you want to send.
    • key (optional): Your API key. Defaults to the API key provided by you in the module's settings.