book-summarizer / app.py
gnumanth's picture
init0
56b6fef
raw
history blame contribute delete
No virus
2 kB
import gradio as gr
import os
import google.generativeai as palm
palm.configure(api_key=os.environ.get('API_KEY'))
BOOK_SUMMARY = """Summarize the book {place_holder} in a clear and concise way.
The summary should be no more than 1,000 words.
The summary should be written in a formal style.
The summary should include the following information:
The main plot points of the book.
The characters in the book and their roles.
The themes of the book.
The author's message.
Examples of desired output format:
"The book {place_holder} is about a young woman who goes on a journey to find herself. Along the way, she meets a variety of characters who help her to learn and grow. The book explores the themes of self-discovery, friendship, and love."
"{place_holder} is a classic novel that tells the story of a family's struggle to survive during the Great Depression. The book is full of memorable characters and powerful imagery. It is a must-read for anyone interested in American history."
Leading words and phrases:
The book {place_holder} is about...
The main plot points of the book are...
The characters in the book include...
The themes of the book are...
The author's message is...
Avoid vague or imprecise language:
Do not use words like "good" or "bad" to describe the book. Instead, be specific about what you liked or disliked about the book.
Do not use phrases like "it was a great book" or "it was a terrible book." Instead, explain why you thought the book was great or terrible.
Provide guidance on what should be done instead:
Instead of saying "do not include spoilers," say "please summarize the book without giving away any spoilers."
Instead of saying "do not use your own opinions," say "please provide a neutral summary of the book.
""" ""
def get_book_summary(bookname):
response = palm.chat(messages=[BOOK_SUMMARY.format(place_holder=bookname)])
return response.last
interface = gr.Interface(fn=get_book_summary, inputs="text", outputs="text")
interface.launch()