No project description provided
Project description
jupyter_anywidget_window_ai
Example of using window.ai
in-browser LLM (Chrome Canary) in JupyterLab / Jupyter notebook using anywidget
.
Set-up Chrome Canary / window.ai
: Getting started with window.ai in Chrome Canary — in browser Gemini LLM
We can test the availability of window.ai
prompt API using some simple javascript magic in a Jupyter notebook accessed via an appropriately configured Chrome Canary browser:
%%javascript
// VIEW RESULT IN BROWSER DEV TOOLS CONSOLE
// h/t ChatGPT
(async function() {
console.log("Creating AI asisstant...\n\n");
// Assuming ai.assistant.create() is defined
// and accessible in your environment
const session = await ai.assistant.create();
console.log("Session created...\n\n");
console.log("Sending prompt...\n\n");
// Prompt the model and wait for the result
const result = await session.prompt("Write me a poem.");
// Log the result to the console
console.log(result);
})();
Installation
pip install jupyter_anywidget_window_ai
Usage
This runs in a browser based Jupyter environment and uses the browser machinery to run the in-browser LLM application.
Create a widget:
# Import package
from jupyter_anywidget_window_ai import windowai_panel, windowai_inline, windowai_headless
# Create a headless widget
# - works in: Jupyter Lab, Jupyter Notebook, VS Code
w = windowai_headless()
# Inline mode
# Preview output as cell output from initialising cell
# - works in: Jupyter Lab, Jupyter Notebook, VS Code
# w = windowai_inline()
# Create a widget panel with a handle
# - uses jupyter sidecar (Jupyter Lab only)
#w = windowai_panel()
# Close panel either via X or:
#w.close()
Get model capabilities: w.update_capabilities()
. Note that this may take a moment to update the py state and no callback is currently available. Run the command in its own cell and wait a moment.
Create a prompt session with an optional system prompt: w.create_session(system_prompt=PROMPT)
Submit a prompt: w.prompt("Hello, how are you?")
Also available: w.create_session(..., initialPrompts=[], temperature=FLOAT, topK=INT )
At the moment, there is no callback available on a response generated from a prompt. However, an audible alert is available.
This is enabled by default in windowai_headless()
. The response can also be spoken. Use boolean (True
/False
) parameters completion_tone=
and speak_msg=
in windowai_panel()
, windowai_inline()
and windowai_headless()
to set audible responses.
Get the response text: w.get_latest_output()
Destroy the session: w.destroy()
See window.ai.assistant
docs for more examples that should translate: Google explainer: prompt-api
TO DO
- add
autosession
flag to allow session to be automatically configured and created when a widget is instantiated; - add support for other APIs (
explainers-by-googlers/writing-assistance-apis
)
ELSEWHERE
See other examples of running "sideloaded" WASM apps using Jupyter anywidget
models
- PGLite (PostgreSQL) wasm — in-browser database:
jupyter_anywidget_pglite
- Tesseract/pdfjs — in-browser OCR:
jupyter_anywidget_tesseract_pdfjs
- Graphviz — in-browser graphviz diagrams from
.dot
code:jupyter_anywidget_graphviz
Project details
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
File details
Details for the file jupyter_anywidget_window_ai-0.0.3.tar.gz
.
File metadata
- Download URL: jupyter_anywidget_window_ai-0.0.3.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 244676b0318a6c29e099064184760545920b12cfa3a2bc1cfa2f5899523a0b09 |
|
MD5 | 0bf6be5ffb1ad0605fc248cbc71c13fb |
|
BLAKE2b-256 | b68668f7c459270e10014370c66368e402da059614ce02ac9beeeb2426439b0a |
File details
Details for the file jupyter_anywidget_window_ai-0.0.3-py2.py3-none-any.whl
.
File metadata
- Download URL: jupyter_anywidget_window_ai-0.0.3-py2.py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83c7777f7b500f2b1f5455f081c1248a33d3844604b2774079d7973fc1d2db3a |
|
MD5 | b21025b55b5b967c51a8093b44398331 |
|
BLAKE2b-256 | 1466bdfe4e6757cc33d117744a7121a85078a1bbdd366ac8f96207692fc7e755 |