Metadata-Version: 2.1
Name: ngptbot
Version: 0.1.0
Summary: Wrapper for ChatGPT API
Home-page: https://github.com/VermiIIi0n/GPTBot
License: MIT
Keywords: utilities
Author: VermiIIi0n
Author-email: dungeon.behind0t@icloud.com
Requires-Python: >=3.12,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Pytest
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Dist: httpx[http2,socks] (>=0.26.0,<0.27.0)
Requires-Dist: pillow (>=10.2.0,<11.0.0)
Requires-Dist: platformdirs (>=4.2.0,<5.0.0)
Requires-Dist: pydantic (>=2.6.1,<3.0.0)
Requires-Dist: tiktoken (>=0.6.0,<0.7.0)
Requires-Dist: toml (>=0.10.2,<0.11.0)
Requires-Dist: ujson (>=5.9.0,<6.0.0)
Requires-Dist: vermils (>=0.3.4,<0.4.0)
Project-URL: Issues, https://github.com/VermiIIi0n/GPTBot/issues
Description-Content-Type: text/markdown

# Simple Wrapper For The ChatGPT API

This module is designed for asynchronous usage and provides a simple interface to the OpenAI ChatGPT API.

It also provides a command-line interface for interactive usage.

While it does provide synchronous methods, it is recommended to use the asynchronous methods for better performance.

## Installation

```bash
pip install -U ngptbot
```

## Usage

### Command Line

#### Configuration

`gptbot` requires a model and an API key to be set.

You can use config file, command parameters or interactive input to set these values.

By default, `gptbot` will look for files named `config.json` and `session.json` in the user cache directory.

```bash
gptbot -c /path/to/config.json  # Use a config file
gptbot -m "gpt-3.5-turbo"  # Set model, input API key interactively
gptbot -k /path/to/config.json  # create config file
```

#### Parameters

- `-c`, `--config`: Path to a JSON file
- `-m`, `--model`: Model name
- `-k`, `--create-config`: Create a config file interactively
- `-s`, `--session`: Session history file
- `-V`, `--version`: Show version

**_Precedence_**: Interactive input > Command parameters > Config file

#### Interactive Mode

This mode mimics a chat interface. You can type your message and get a response.

Commands are started with a `/` and are **case-sensitive**.

- `/exit`: Exit the program
- `/save <path>`: Save the session history to a file
- `/load`: Load a session history from a file
- `/rollback <step>`: Rollback to the previous state
- `/clear`: Clear the session history
- `/role`: Switch role
- `/model`: Switch model
- `/help`: Show help

To embed an image, insert `#image(<url>)` in your message.
Use double `#` to escape embedding.

```Python
await bot.send("""
What are these?
#image(https://example.com/image.png)
#image(file:///path/to/image.png)
#image(base64://<base64-encoded-image>)
""")
```

All URLs will be downloaded and embedded as base64-encoded images.

### API

```python
import asyncio
import gptbot

bot = gptbot.Bot(model="gpt-3.5-turbo", api_key="your-api-key")

async def main():
    response = await bot.send("Hello, how are you?")
    print(response)

    async for r in bot.stream("I'm fine, thank you."):
        print(r, end='')

    async for res in bot.stream_raw("What is the answer to life, the universe, and everything?"):
        """
        stream_raw returns a stream of `FullChunkResponse`.
        It contains all raw data from the API.
        """

    bot.send_sync("Goodbye!")  # Synchronous version of `send`

asyncio.run(main())
```

