An ChatGPT integration for Jupyter Notebooks and the IPython Shell
MIT License
This (standalone, no external dependencies required) extension allows you to use ChatGPT directly from your Jupyter Notebook or IPython Shell (Demo).
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 for a rough "roadmap".
!pip install ipython-gpt
Then in your notebook or ipython shell:
%load_ext ipython_gpt
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:
$ 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):
%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.
The command %%chat
interfaces with ChatGPT. It accepts multiple parameters (see Usage). Here's an example:
%%chat --max-tokens=25
What'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
.
%%chat --reset-conversation
How can I avoid pandas using scientific notation in outputs, and do it globally?
...
...
>>> CHAT RESPONSE
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
:
%%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:
%%chat --system-message="You're a R Data Science assistant" --reset-conversation
Your message...
You can change the defaults using the %chat_config
line magic:
%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:
%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
Usage:
%chat_models [--all-models]
%chat_models
- gpt-3.5-turbo-0301
- gpt-3.5-turbo
%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]
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
.