profplate's picture
Update app.py
7664d42 verified
import gradio as gr
from transformers import pipeline
MODEL_ID = "HuggingFaceTB/SmolLM2-1.7B-Instruct"
generator = pipeline(
"text-generation",
model=MODEL_ID,
device="cpu",
)
SYSTEM_PROMPT = (
"You are a writing assistant helping to incorporate a quotation into a "
"paragraph. Your job has two parts:\n\n"
"1. Insert the quotation at the most natural point in the paragraph. "
"Wrap the quotation in double quote marks. Do not change the wording of "
"the quotation. Do not change the wording of the surrounding paragraph.\n\n"
"2. Immediately after the quotation, add ONE sentence that explains how "
"the quotation supports, complicates, or extends the paragraph's main "
"idea. The added sentence should match the voice of the paragraph.\n\n"
"Output only the revised paragraph, with the quotation and the one new "
"sentence in place. No preamble, no notes."
)
def incorporate_with_use(paragraph, quote):
paragraph = (paragraph or "").strip()
quote = (quote or "").strip()
if not paragraph or not quote:
return "Please provide both a paragraph and a quotation."
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{
"role": "user",
"content": f"Paragraph:\n{paragraph}\n\nQuotation:\n{quote}",
},
]
output = generator(
messages,
max_new_tokens=400,
do_sample=False,
)
return output[0]["generated_text"][-1]["content"].strip()
EXAMPLES = [
[
"Joan Didion's evening walks are not nature writing in the conventional "
"sense. They are an attempt to mark time, to register the gradient of "
"light from one shade of blue to the next.",
"In certain latitudes there comes a span of time approaching and "
"following the summer solstice, some weeks in all, when the twilights "
"turn long and blue.",
],
[
"Writing teachers often tell their students to use specific imagery "
"rather than abstractions. The advice is harder to follow than it "
"sounds, especially for students who have been rewarded all through "
"school for sounding general and serious.",
"Show, don't tell.",
],
]
with gr.Blocks(title="Quote Incorporation — Richer") as demo:
gr.Markdown(
"""
# Quote Incorporation — Space 2 (Richer)
Insert a quotation into a paragraph **and** add one sentence after it
that uses the quote. Uses a 1.7B-parameter model on Hugging Face
free CPU — slower than Space 1 (~30–90s per request), and noticeably
smarter, but still hits real limits.
*Watch for the constraint: latency, generic explanations, and quote
drift. Those are the seeds of Space 3.*
"""
)
with gr.Row():
with gr.Column():
paragraph_in = gr.Textbox(
label="Paragraph",
placeholder="Paste a paragraph of writing here…",
lines=8,
)
quote_in = gr.Textbox(
label="Quotation",
placeholder="Paste the quotation (without quote marks)…",
lines=3,
)
submit_btn = gr.Button(
"Incorporate + Use Quote", variant="primary"
)
gr.Markdown(
"*This may take 30–90 seconds on free CPU. The model is "
"doing real work — paragraph parsing, quote placement, "
"and connective reasoning all on a 2-vCPU container.*"
)
with gr.Column():
result_out = gr.Textbox(
label="Revised Paragraph (with quote and one explanatory sentence)",
lines=12,
)
submit_btn.click(
fn=incorporate_with_use,
inputs=[paragraph_in, quote_in],
outputs=[result_out],
)
gr.Examples(
examples=EXAMPLES,
inputs=[paragraph_in, quote_in],
)
if __name__ == "__main__":
demo.launch()