Description
Attention Jupyter AI users! I have some exciting news to share in this issue. We are currently planning, designing, and building the next major release of Jupyter AI, v3.0.0.
This issue is a living document that lists features planned for v3.0.0, and publicly tracks progress on v3.0.0 development. The list of planned features is incomplete and will evolve in the coming months. I'm posting what we have planned so far to make our progress transparent & visible to the broader user community.
The list of issues being considered for v3.0.0 are also listed here in a dedicated GitHub milestone: https://github.com/jupyterlab/jupyter-ai/milestone/10
Planned features
These are the features we are >95% confident should be developed as part of v3.0.0.
-
Migration to Jupyter Chat (must be completed first)
- Context: Jupyter Chat is a new package that re-defines and provides the frontend components originally from Jupyter AI, while completely re-defining the backend model of chats. Chats will no longer be a simple list of messages stored in-memory and vanish on server restart, but instead persisted as plaintext
*.chat
files and represented in-memory as a Yjs CRDT document. Yjs is the same family of packages that power Jupyter Collaboration, which provides RTC functionality in JupyterLab. @brichet (the lead dev behind Jupyter Chat) and I will be working closely to ensure that this migration will be seamless & painless for existing users & contributors. - Motivation: This migration will 1) allow for multiple chats by creating a top-level abstraction for chats, 2) simplify Jupyter AI's backend by delegating chat state management & synchronization to Yjs, 3) allow for real-time editing of the chat history to enable features like message editing & re-ordering. This migration also moves most of Jupyter AI's frontend components to
@jupyter/chat
, allowing other extensions to re-use our code to build their own chat applications. - Issue: Use Jupyter Chat, if available, for the chat interface #785
- Issue: Use
@jupyter/chat
as chat UI #862 - PR: [v3-dev] Initial migration to
jupyterlab-chat
#1043
- Context: Jupyter Chat is a new package that re-defines and provides the frontend components originally from Jupyter AI, while completely re-defining the backend model of chats. Chats will no longer be a simple list of messages stored in-memory and vanish on server restart, but instead persisted as plaintext
-
Multiple conversation management
-
Message editing
- Issue: Enable chat editing #339
-
Migration to Pydantic v2 and LangChain >=0.3
-
Unify authentication in chat & magics
- Issue: Chat window works, but IPython magics do not #1103
- There likely are a few more which should be added.
Tentative features
These are features that may be developed as part of v3.0.0, but require further design, research, or feedback from the community.
-
Allow for dynamic installation of model dependencies
-
Improve
/generate
by implementing it as an agentic workflow
Details on v3.0.0 development (for contributors)
-
The new
v3-dev
branch will track development on v3.0.0 until its initial release.- Until then,
main
will still track Jupyter AI v2.x.
- Until then,
-
From now on, newly-merged PRs should be backported to
v3-dev
.- Comment
@meeseeksdev please backport to v3-dev
on PRs after merging to have the bot automatically open a new backport PR againstv3-dev
.
- Comment
-
We are targeting to have a pre-release ready by the end of December 2024. The goal of this pre-release is to just achieve feature parity with v2 while migrating to
jupyterlab-chat
, i.e. all the features that work today for a single chat should work reasonably well for multiple chats. -
When
v3-dev
is ready for its initial release, a PR mergingv3-dev
intomain
will be opened, and be reviewed a final time. -
After that PR is merged,
main
will track v3.x, and a separate2.x
branch will track Jupyter AI v2.x. -
We acknowledge that the Jupyter Chat migration requires contextual knowledge of Jupyter Chat & Yjs, which makes it difficult for others to contribute directly. This migration also changes the entire chat API, on both the frontend and the backend. @brichet and I are prioritizing reaching alignment on the new chat API that will be used in Jupyter AI v3.0.0 as quickly as possible, so other contributors can build freely using a (relatively) stable chat API (ETA: by end of Dec).
-
Once that is complete, we will add a "Contributing" section to this issue that details how contributors can assign themselves issues & open PRs, and provides a summary of what is different in
v3-dev
. -
For now, we ask that those who wish to contribute do so by opening new issues, leaving feedback on existing ones listed here, and reviewing
v3-dev
PRs to stay in-the-loop on code changes.