Spaces:
Sleeping
Sleeping
from huggingface_hub import hf_hub_download | |
from llama_cpp import Llama | |
import streamlit as st | |
MAX_OUTPUT_TOKENS = 512 | |
def summarize_article(input_text): | |
repo_id = "SakanaAI/TinySwallow-1.5B-Instruct-GGUF" | |
filename = "tinyswallow-1.5b-instruct-q5_k_m.gguf" | |
model_path = hf_hub_download(repo_id=repo_id, filename=filename) | |
# モデルの読み込み | |
llm = Llama(model_path=model_path, n_ctx=4096, n_gpu_layers=-1, verbose=False) | |
prompt = f"以下のテキストを日本語で約400字程度に要約してください。特に固有名詞や専門用語は正確に含めてください。テキスト: {input_text} 要約: " | |
response = llm(prompt, max_tokens=MAX_OUTPUT_TOKENS) | |
return response["choices"][0]["text"] | |
# ページ設定 | |
st.set_page_config( | |
page_title="記事要約(デモ)", | |
page_icon="📚", | |
layout="centered", | |
) | |
# アプリのタイトル | |
st.title("記事要約(デモ)") | |
st.subheader("入力を元に要約を生成します") | |
st.markdown( | |
""" | |
このアプリは、指定されたテキストを要約するためのデモです。以下の入力フォームに記事内容を入力してください。 | |
CPUで動作するため時間がかかり、精度も低いです。 | |
""" | |
) | |
# 入力フォーム | |
with st.form("input_form"): | |
input_text = st.text_area("記事内容", height=200, placeholder="例:主人公の葉蔵は自分を「人間失格」だと考えている...") | |
submit_button = st.form_submit_button("生成") | |
# 送信ボタンが押されたら結果を表示 | |
if submit_button: | |
summary = summarize_article(input_text) | |
st.markdown("## 生成された要約(デモ)") | |
st.info(summary) | |
# フッター | |
st.markdown("---") | |
st.caption("Powered by Streamlit & Hugging Face") | |