No project description provided
Project description
Transformers.js.py 🤗
Use Transformers.js on Pyodide and Pyodide-based frameworks such as JupyterLite, stlite (Streamlit), Shinylive (Shiny for Python), PyScript, and so on.
The original Transformers can't be used on a browser environment. Transformers.js is a JavaScript version of Transformers installable on browsers, but we can't use it from Pyodide. This package is a thin wrapper of Transformers.js to proxy its API to Pyodide.
API
The API is more like Transformers.js than the original Transformers.
Transformers.js | Transformers.js.py |
---|---|
import { pipeline } from '@xenova/transformers';
// Allocate a pipeline for sentiment-analysis
let pipe = await pipeline('sentiment-analysis');
let out = await pipe('I love transformers!');
// [{'label': 'POSITIVE', 'score': 0.999817686}]
|
from transformers_js import import_transformers_js
transformers = await import_transformers_js()
pipeline = transformers.pipeline
# Allocate a pipeline for sentiment-analysis
pipe = await pipeline('sentiment-analysis')
out = await pipe('I love transformers!')
# [{'label': 'POSITIVE', 'score': 0.999817686}]
|
See the Transformers.js document for available features.
Examples
JupyterLite
👉Try this code snippet on https://jupyter.org/try-jupyter/lab/index.html
%pip install transformers_js_py
from transformers_js import import_transformers_js
transformers = await import_transformers_js()
pipeline = transformers.pipeline
pipe = await pipeline('sentiment-analysis')
out = await pipe('I love transformers!')
print(out)
stlite (Serverless Streamlit)
👉 Online Demo : try out this code online.
import streamlit as st
from transformers_js import import_transformers_js
st.title("Sentiment analysis")
text = st.text_input("Input some text", "I love transformers!")
if text:
with st.spinner():
transformers = await import_transformers_js()
pipeline = transformers.pipeline
if "pipe" not in st.session_state:
st.session_state["pipe"] = await pipeline('sentiment-analysis')
pipe = st.session_state["pipe"]
out = await pipe(text)
st.write(out)
Shinylive
👉 Online demo : try out this code online.
from shiny import App, render, ui
from transformers_js import import_transformers_js
app_ui = ui.page_fluid(
ui.input_text("text", "Text input", placeholder="Enter text"),
ui.output_text_verbatim("txt"),
)
def server(input, output, session):
@output
@render.text
async def txt():
if not input.text():
return ""
transformers = await import_transformers_js()
pipeline = transformers.pipeline
pipe = await pipeline('sentiment-analysis')
out = await pipe(input.text())
return str(out)
app = App(app_ui, server, debug=True)
PyScript
👉Try this code snippet on https://pyscript.com/
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
<input type="text" value="" id="text-input" />
<button py-click="run()" id="run-button">Run</button>
<py-config>
packages = ["transformers-js-py"]
</py-config>
<py-script>
import asyncio
from transformers_js import import_transformers_js
text_input = Element("text-input")
async def main(input_data):
transformers = await import_transformers_js()
pipeline = transformers.pipeline
pipe = await pipeline('sentiment-analysis')
out = await pipe(input_data)
print(out)
def run():
print("Start")
input_data = text_input.value
if input_data.strip() == "":
print("No data input.")
return
future = asyncio.ensure_future(main(input_data))
</py-script>
</body>
</html>
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 transformers_js_py-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a839bcbc1240f12c58a962c44aa6ff54716d72f564db8280e96eb0e53af20dfa |
|
MD5 | f67bb5b4a96b3bdc9223c620395b5ea9 |
|
BLAKE2b-256 | 8cbc2e81c5a5e7bb6609de562ce4b7fad3a5aea39eb79a681e716b9e7ee28621 |