Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/santiagobasulto/ipython-gpt
An ChatGPT integration for Jupyter Notebooks and the IPython Shell
https://github.com/santiagobasulto/ipython-gpt
ipython ipython-magic jupyter python
Last synced: 5 days ago
JSON representation
An ChatGPT integration for Jupyter Notebooks and the IPython Shell
- Host: GitHub
- URL: https://github.com/santiagobasulto/ipython-gpt
- Owner: santiagobasulto
- License: mit
- Created: 2023-04-15T09:47:05.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-08-02T13:02:17.000Z (over 1 year ago)
- Last Synced: 2024-12-30T04:11:15.938Z (13 days ago)
- Topics: ipython, ipython-magic, jupyter, python
- Language: Python
- Homepage:
- Size: 43 KB
- Stars: 598
- Watchers: 3
- Forks: 40
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ChatGPT-repositories - ipython-gpt - ipython-gpt - a jupyter/ipython interface to chatgptvery promising extension to chat with chatgpt directly from your jupyter notebook or ipython shell. (Browser-extensions)
- awesome-chatgpt - santiagobasulto/ipython-gpt - An ChatGPT integration for Jupyter Notebooks and the IPython Shell (SDK, Libraries, Frameworks / Python)
README
# IPython ChatGPT extension
[![Black badge](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![prettier badge](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?logo=prettier&logoColor=white)](https://github.com/prettier/prettier)
[![pre-commit](https://img.shields.io/badge/pre--commit-active-yellow?logo=pre-commit&logoColor=white)](https://pre-commit.com/)
[![test](https://img.shields.io/github/actions/workflow/status/santiagobasulto/ipython-gpt/test.yaml?logo=github&logoColor=white)](https://github.com/santiagobasulto/ipython-gpt/actions/workflows/test.yaml)This (standalone, no external dependencies required) extension allows you to use ChatGPT directly from your Jupyter Notebook or IPython Shell ([Demo](https://github.com/santiagobasulto/ipython-gpt/blob/master/Demo.ipynb)).
**Important!** This is a very early and raw version, I have a lot of things to improve regarding code quality and missing functionality. Check [this issue](https://github.com/santiagobasulto/ipython-gpt/issues/4) for a rough "roadmap".
## Installation
```python
!pip install ipython-gpt
```Then in your notebook or ipython shell:
```ipython
%load_ext ipython_gpt
```## Setup
You must first generate an API key at OpenAI (https://platform.openai.com/account/api-keys) and set is an environment variable `OPENAI_API_KEY`. You can do it by modifying your `.bashrc/.zshrc` or starting jupyter with it:
```bash
$ OPENAI_API_KEY=[YOUR-KEY] jupyter lab
# ...
$ OPENAI_API_KEY=[YOUR-KEY] ipython
```If you're working on Google Colab, you can use the `%env` magic method (keep in mind that if you don't delete the cell, your key will be visible):
```python
%env OPENAI_API_KEY=sk-W8b0... your key ...
```There are a few other ways to set the API KEY, but the envvar is the recommended one.
## ChatGPT API
The command `%%chat` interfaces with ChatGPT. It accepts multiple parameters (see Usage). Here's an example:
```python
%%chat --max-tokens=25What's the purpose of life?
...>>> CHAT RESPONSE
```**Important** by default, the `%%chat` command preserves the conversation to give the Agent some context, in the same way that ChatGPT works. You can "reset" its status passing the flag `--reset-conversation`.
```python
%%chat --reset-conversationHow can I avoid pandas using scientific notation in outputs, and do it globally?
...
...
>>> CHAT RESPONSE
```## Agent's role (system message) and other chat parameters
By default, the Chat is started with the role: _"You're a python data science coding assistant"_. You can change that by passing something different in your first `%%chat`:
```ipython
%%chat --system-message="You're a R Data Science assistant"Your message...
```Once the conversation has started, you can't change the original message, as the context is preserved. To do so, you must reset the conversation:
```ipython
%%chat --system-message="You're a R Data Science assistant" --reset-conversationYour message...
```## Setting global config
You can change the defaults using the `%chat_config` line magic:
```ipython
%chat_config --system-message="You're an R data scientist coding assistant specialized in visualizations" --model "other model" --reset-conversation
```Invoke it without parameters to see the defaults set:
```python
%chat_config
...>>>
##### Conf set:* **Default model**: gpt-3.5-turbo
* **Default system message**: You're a python data science coding assistant
* **Chat history length**: 0
```## Other methods
#### Display available models
Usage:
```bash
%chat_models [--all-models]
``````python
%chat_models
```##### Available models:
- gpt-3.5-turbo-0301
- gpt-3.5-turbo#### Display usage and accepted parameters
```python
%reload_ext ipython_gpt
%chat_help
...usage: ipykernel_launcher.py [-h] [--openai-api-key OPENAI_API_KEY]
[--reset-conversation]
[--system-message SYSTEM_MESSAGE]
[--no-system-message] [--model MODEL]
[--temperature TEMPERATURE]
[--max-tokens MAX_TOKENS] [--all-models]```
## Alternative authentication
Aside from setting the environment variable, you can also set `OPENAI_API_KEY` as a global variable in your notebook, or pass it directly as a parameter in any method `--openai-api-key=YOUR-KEY`.
These alternative methods are NOT recommended, as you might leak your API Key in the notebooks' history, stored in `.ipynb_checkpoints`.