Skip to content

[ZEPPELIN-6733] Add AI assistant chat to notebooks (server-side) - #5547

Open
seung-00 wants to merge 1 commit into
apache:masterfrom
seung-00:feature/notebook-assistant
Open

seung-00 wants to merge 1 commit into
apache:masterfrom
seung-00:feature/notebook-assistant

Conversation

@seung-00

@seung-00 seung-00 commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

What is this PR for?

This PR adds the server-side implementation of an AI assistant for notebooks.

Motivation

AI can help with coding and data analysis, but using it with Zeppelin requires users to move code and results between the notebook and a separate chat. A built-in assistant can reduce this effort. It can also make notebook operations and other tasks easier through tools.

Decisions

Model adaptor

  • The assistant currently supports OpenAI models.
  • It uses the official OpenAI Java SDK to keep up with API changes.

Data structure

Notebook 1 ── N Conversation
Conversation 1 ── N Message
Message (assistant) 1 ── N ToolCall

File path
$ZEPPELIN_HOME/assistant/<noteId>/<conversationId>.json

Permissions

  • Anyone who can read a notebook can read its conversations.
  • Only the user who created a conversation can mutate it.

See the proposal for more details.

Direction

  • The assistant is disabled by default and can be enabled through zeppelin.notebook.assistant.enable. Enabling it by default is planned once the feature is stable.
  • The initial tool, list_paragraphs, just returns paragraph metadata. More tools are needed to make the assistant more capable. Contributions are welcome.

What type of PR is it?

Feature

What is the Jira issue?

How should this be tested?

  • Run the assistant unit tests
./mvnw test -pl zeppelin-server \
  -Dtest='org.apache.zeppelin.service.assistant.*Test'
  • Verify conversation management and message history through the REST APIs
  • Verify streaming responses and tool calls through WebSocket

Questions:

  • Does the license files need to update? Y
  • Is there breaking changes for older versions? N
  • Does this needs documentation? Y

@voidmatcha voidmatcha left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found two issues that appear to be causing the CI failures.

First, the transitive dependencies from openai-java conflict with existing dependency versions, causing Maven dependency convergence checks to fail. Second, ASSISTANT_SEND_MESSAGE and ASSISTANT_EVENT, which were added to the Java side, are missing from the TypeScript SDK, so the WebSocket contract check stops the E2E job before Playwright starts.

I prepared a reference implementation covering both issues:

voidmatcha@3f7c15d

With this approach, Maven dependency convergence, the WebSocket contract check, the SDK contract typecheck, and all 28 assistant-related server tests pass locally. Please feel free to use it as a reference.

@seung-00
seung-00 force-pushed the feature/notebook-assistant branch 5 times, most recently from 7631ffa to b4b7b4f Compare October 6, 2026 11:17
@seung-00
seung-00 force-pushed the feature/notebook-assistant branch from b4b7b4f to d9b205b Compare October 6, 2026 11:19

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants