Custom Jupyter magics for interacting with LLMs.
Project description
JupyterChatbook
Python package of a Jupyter extension that facilitates the interaction with Large Language Models (LLMs).
Remark: The chatbook LLM cells use the packages "openai", [OAIp2], and "google-generativeai", [GAIp1].
Remark: The API keys for the LLM cells are taken from the Operating System (OS) environmental variables OPENAI_API_KEY
and PALM_API_KEY
.
Remark: The results of the LLM cells are automatically copied to the clipboard using the package "pyperclip", [ASp1].
Installation
Install from GitHub
pip install -e git+https://github.com/antononcube/Python-JupyterChatbook.git#egg=Python-JupyterChatbook
From PyPi
pip install JupyterChatbook
Demonstration notebooks (chatbooks)
Notebook | Description |
---|---|
Chatbooks-cells-demo.ipynb | How to do multi-cell (notebook-wide) chats? |
Chatbook-LLM-cells.ipynb | How to "directly message" LLMs services? |
DALL-E-cells-demo.ipynb | How to generate images with DALL-E? |
Echoed-chats.ipynb | How to see the LLM interaction execution steps? |
Example with chat cells
See the notebook "Chatbook-cells-demo.ipynb"
Here we start a new, named chat with specified LLM and prompt:
%%chat -i yoda2 --conf ChatPaLM --prompt "You are Yoda. Respond to ALL inputs in the voice of Yoda from Star Wars. Be sure to ALWAYS use his distinctive style and syntax."
Hi! Who are you?
I am Yoda, Jedi Master. I have trained many Padawans in the ways of the Force. I am old and wise, and I have seen much in my time. I am here to help you on your journey, if you will have me.
Continuing the conversation with "yoda2":
%%chat -i yoda2
How many students did you have?
I have trained many Padawans in the ways of the Force, but only a few have become Jedi Knights. Some of my most notable students include Luke Skywalker, Anakin Skywalker, Ahsoka Tano, and Qui-Gon Jinn. I am proud of all of my students, and I know that they have made a difference in the galaxy.
See prompt and messages of the chat object with id "yoda2" using a chat meta cell:
%%chat_meta yoda2
print
Chat ID:
------------------------------------------------------------
Prompt:
You are Yoda. Respond to ALL inputs in the voice of Yoda from Star Wars. Be sure to ALWAYS use his distinctive style and syntax.
------------------------------------------------------------
{'role': 'user', 'content': 'Hi! Who are you?', 'timestamp': 1696015464.6843169}
------------------------------------------------------------
{'role': 'assistant', 'content': 'I am Yoda, Jedi Master. I have trained many Padawans in the ways of the Force. I am old and wise, and I have seen much in my time. I am here to help you on your journey, if you will have me.', 'timestamp': 1696015466.49413}
------------------------------------------------------------
{'role': 'user', 'content': 'How many students did you have?', 'timestamp': 1696015466.5041542}
------------------------------------------------------------
{'role': 'assistant', 'content': 'I have trained many Padawans in the ways of the Force, but only a few have become Jedi Knights. Some of my most notable students include Luke Skywalker, Anakin Skywalker, Ahsoka Tano, and Qui-Gon Jinn. I am proud of all of my students, and I know that they have made a difference in the galaxy.', 'timestamp': 1696015474.83406}
DALL-E access
See the notebook "DALL-E-cells-demo.ipynb"
Here is a screenshot:
Implementation details
The design of this package -- and corresponding envisioned workflows with it -- follow those of the Raku package "Jupyter::Chatbook", [AAp3].
TODO
- TODO Implementation
- DONE PalM chat cell
- TODO Using "pyperclip"
- DONE Basic
-
%%chatgpt
-
%%dalle
-
%%palm
-
%%chat
-
- TODO Switching on/off copying to the clipboard
- DONE Per cell
- With the argument
--copy_to_clipboard
.
- With the argument
- TODO Global
- Can be done via the chat meta cell, but maybe a more elegant, bureaucratic solution exists.
- DONE Per cell
- DONE Basic
- TODO DALL-E image variations cell
- TODO Mermaid-JS cell
- TODO ProdGDT cell
- MAYBE DeepL cell
- See "deepl-python"
- TODO Documentation
- TODO Multi-cell LLM chats movie (teaser)
- TODO Multi-cell LLM chats movie (comprehensive)
- TODO LLM service cells movie (short)
- TODO Code generation
References
Packages
[AAp1] Anton Antonov, LLMFunctionObjects Python package, (2023), Python-packages at GitHub/antononcube.
[AAp2] Anton Antonov, LLMPrompts Python package, (2023), Python-packages at GitHub/antononcube.
[AAp3] Anton Antonov, [Jupyter::Chatbook Raku package](https://github.com/antononcube/Raku-Jupyter-Chatbook, (2023), GitHub/antononcube.
[ASp1] Al Sweigart, pyperclip (Python package), (2013-2021), PyPI.org/AlSweigart.
[GAIp1] Google AI, google-generativeai (Google Generative AI Python Client), (2023), PyPI.org/google-ai.
[OAIp1] OpenAI, openai (OpenAI Python Library), (2020-2023), PyPI.org.
Videos
[AAv1] Anton Antonov, "Jupyter Chatbook multi cell LLM chats teaser (Raku)", (2023), YouTube/@AAA4Prediction.
[AAv2] Anton Antonov, "Jupyter Chatbook multi cell LLM chats teaser (Python)", (2023), YouTube/@AAA4Prediction.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for JupyterChatbook-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a769d8fb5759af338013b912db496ddbbe8842675fac394ab804e07b74799a7 |
|
MD5 | 9ce6a3c617ea49f20e123d05741cc871 |
|
BLAKE2b-256 | 8c2443c4e667b4d48e2b442bf99f0873d76978dacd7e6e8285a3353c9c1bedb9 |