Metadata-Version: 2.4
Name: wagtail-ai
Version: 3.1.0
Summary: Get a hand writing your content with AI super powers!
Author-email: Tom Usher <tom@tomusher.com>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
Classifier: Framework :: Django :: 5.0
Classifier: Framework :: Wagtail
Classifier: Framework :: Wagtail :: 7
License-File: LICENSE
License-File: LICENSE_LANGCHAIN
Requires-Dist: Django>=4.2
Requires-Dist: Wagtail>=7.1
Requires-Dist: django-ai-core
Requires-Dist: llm>=0.12
Requires-Dist: mkdocs>=1.5.3 ; extra == "docs"
Requires-Dist: mkdocs-material>=9.4.5 ; extra == "docs"
Requires-Dist: mkdocs-awesome-pages-plugin>=2.9.2 ; extra == "docs"
Requires-Dist: beautifulsoup4>=4.11 ; extra == "testing"
Requires-Dist: dj-database-url==2.1.0 ; extra == "testing"
Requires-Dist: pre-commit>=3.6.0 ; extra == "testing"
Requires-Dist: django-types>=0.18.0 ; extra == "testing"
Requires-Dist: pytest>=7.4.2 ; extra == "testing"
Requires-Dist: pytest-django>=4.5.2 ; extra == "testing"
Requires-Dist: pytest-mock>=3.12.0 ; extra == "testing"
Requires-Dist: wagtail-factories>=4.1.0 ; extra == "testing"
Requires-Dist: factory-boy>=3.3.0 ; extra == "testing"
Requires-Dist: coverage>=7.4.0 ; extra == "testing"
Project-URL: Home, https://github.com/wagtail/wagtail-ai
Provides-Extra: docs
Provides-Extra: testing

![wagtail-ai](https://user-images.githubusercontent.com/27112/223072917-8354f8f2-b687-44dd-9db7-33f2cc340233.png)

# Wagtail AI

Get help with your content using AI superpowers.

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PyPI version](https://badge.fury.io/py/wagtail-ai.svg)](https://badge.fury.io/py/wagtail-ai)
[![ai CI](https://github.com/wagtail/wagtail-ai/actions/workflows/test.yml/badge.svg)](https://github.com/wagtail/wagtail-ai/actions/workflows/test.yml)

Wagtail AI integrates Wagtail with AI's APIs (think ChatGPT) to help you write and correct your content.

Right now, it can:

* Give you suggestions for titles and meta descriptions based on your page content
* Suggest titles and descriptions for your images
* Generate relevant alt text for your images based on both the image and surrounding page content
* Provide qualitative feedback on your content with actionable improvement suggestions
* Suggest related pages based on semantic similarity using vector embeddings
* Work with multiple LLM providers including local models, OpenAI, Mistral, Claude and many others
* Let you add your own custom prompts
* Correct your spelling/grammar
* Finish what you've started - write some text and tell Wagtail AI to finish it off for you

## Demos

### Page title and meta description suggestions

https://github.com/user-attachments/assets/4fcd543f-50fd-4687-b6ba-0715338bb92a

### Image title, description, and contextual alt text suggestions

https://github.com/user-attachments/assets/7f9d86f4-f4b0-41c1-bc13-f9c37368570c

### Content feedback

https://github.com/user-attachments/assets/45d1de20-8143-4572-ba5e-1cf4b350e121

### Rich-text integration

https://user-images.githubusercontent.com/27112/223072938-8cb5ccff-4835-489a-8be4-cca85001885e.mp4

## Requirements & Costs

Wagtail AI supports [many different LLMs](https://wagtail-ai.readthedocs.io/latest/ai-providers/), with OpenAI models
available by default. To use these, you'll need an OpenAI account and an API key. There'll also be some cost involved.

For the OpenAI API used here (`gpt-3.5-turbo`), the [cost](https://openai.com/pricing) is

- $0.0005 per 1000 tokens for input tokens (prompt)
- $0.0015 per 1000 tokens for output tokens (answer)

Here is an estimated cost breakdown for the `correction` prompt on a 1000-word paragraph.

### We assume that:

- Prompt is 30 words and the existing paragraph is 1000 words (Input)
- Each word is 1.3 tokens (Tokens multiplier)
- We get back 1000 words back (Output)

### Then:

- **Input tokens :** (35 + 1000) x 1.3 = 1345.5 tokens.
- **Output tokens :** 1000 x 1.3 = 1300
- **Input tokens cost :** 1345.5 / 1000 * $0.0005 = $0.00067275
- **Output tokens cost :** 1300 / 1000 * $0.0015 = $0.00195
- **Total cost :** $0.00262275

## Links

- [Documentation](https://wagtail-ai.readthedocs.io/)
- [Changelog](https://github.com/wagtail/wagtail-ai/blob/main/CHANGELOG.md)
- [Contributing](https://wagtail-ai.readthedocs.io/latest/contributing/)
- [Discussions](https://github.com/wagtail/wagtail-ai/discussions)
- [Security](https://github.com/wagtail/wagtail-ai/security)

## Supported Versions

* Wagtail 7.1+
* Django 4.2+
* Python 3.11+

