Refactor summarizer.py: Improve code structure and formatting

This commit is contained in:
Mert Cobanov 2024-03-21 15:17:21 +03:00
parent 2a551e007a
commit e15a632bba

View File

@ -1,31 +1,58 @@
import argparse
from langchain.chains.summarize import load_summarize_chain
from langchain_community.document_loaders import WebBaseLoader
from langchain.prompts import PromptTemplate
from langchain.chains.llm import LLMChain
from langchain.chains.summarize import load_summarize_chain
from langchain.prompts import PromptTemplate
from langchain_community.chat_models import ChatOllama
from langchain_community.document_loaders import WebBaseLoader
def setup_argparse():
"""Setup argparse to parse command line arguments."""
parser = argparse.ArgumentParser(description="Summarize a document from a given URL.")
parser.add_argument("-u", "--url", required=True, help="URL of the document to summarize")
parser = argparse.ArgumentParser(
description="Summarize a document from a given URL."
)
parser.add_argument(
"-u", "--url", required=True, help="URL of the document to summarize"
)
return parser.parse_args()
def load_document(url):
"""Load document from the specified URL."""
loader = WebBaseLoader(url)
return loader.load()
def setup_summarization_chain():
"""Setup the summarization chain with a prompt template and ChatOllama."""
prompt_template = PromptTemplate(template="""Write a detailed long summary of the following:
"{text}"
DETAILED SUMMARY:""", input_variables=["text"])
prompt_template = PromptTemplate(
template="""As a professional summarizer, create a concise and comprehensive summary of the provided text, be it an article, post, conversation, or passage, while adhering to these guidelines:
1. Craft a summary that is detailed, thorough, in-depth, and complex, while maintaining clarity and conciseness.
2. Incorporate main ideas and essential information, eliminating extraneous language and focusing on critical aspects.
3. Rely strictly on the provided text, without including external information.
4. Format the summary in paragraph form for easy understanding.
5.Conclude your notes with [End of Notes, Message #X] to indicate completion, where "X" represents the total number of messages that I have sent. In other words, include a message counter where you start with #1 and add 1 to the message counter every time I send a message.
By following this optimized prompt, you will generate an effective summary that encapsulates the essence of the given text in a clear, concise, and reader-friendly manner.
Write a detailed long summary of the following:
"{text}"
DETAILED SUMMARY:""",
input_variables=["text"],
)
llm = ChatOllama(model="llama2")
llm_chain = LLMChain(llm=llm, prompt=prompt_template)
return llm_chain
def main():
args = setup_argparse()
docs = load_document(args.url)
@ -35,5 +62,6 @@ def main():
print(result)
if __name__ == "__main__":
main()