| | import os |
| |
|
| | from langchain.chat_models import AzureChatOpenAI, ChatOpenAI |
| | from langchain.document_loaders.pdf import PyPDFLoader |
| | from langchain.schema.messages import HumanMessage, SystemMessage |
| |
|
| | from taskweaver.plugin import Plugin, register_plugin |
| |
|
| | paper_summarize_prompt = r""" |
| | Please summarize this paper and highlight the key points, including the following: |
| | - The problem the paper is trying to solve. |
| | - The main idea of the paper. |
| | - The main contributions of the paper. |
| | - The main experiments and results of the paper. |
| | - The main conclusions of the paper. |
| | """ |
| |
|
| |
|
| | @register_plugin |
| | class SummarizePaperPlugin(Plugin): |
| | def __call__(self, paper_file_path: str): |
| | os.environ["OPENAI_API_TYPE"] = self.config.get("api_type", "azure") |
| | if os.environ["OPENAI_API_TYPE"] == "azure": |
| | model = AzureChatOpenAI( |
| | azure_endpoint=self.config.get("api_base"), |
| | openai_api_key=self.config.get("api_key"), |
| | openai_api_version=self.config.get("api_version"), |
| | azure_deployment=self.config.get("deployment_name"), |
| | temperature=0, |
| | verbose=True, |
| | ) |
| | elif os.environ["OPENAI_API_TYPE"] == "openai": |
| | os.environ["OPENAI_API_KEY"] = self.config.get("api_key") |
| | model = ChatOpenAI(model_name=self.config.get("deployment_name"), temperature=0, verbose=True) |
| | else: |
| | raise ValueError("Invalid API type. Please check your config file.") |
| |
|
| | loader = PyPDFLoader(paper_file_path) |
| | pages = loader.load() |
| |
|
| | messages = [ |
| | SystemMessage(content=paper_summarize_prompt), |
| | HumanMessage(content="The paper content:" + "\n".join([c.page_content for c in pages])), |
| | ] |
| |
|
| | summary_res = model.invoke(messages).content |
| |
|
| | description = f"We have summarized {len(pages)} pages of this paper." f"Paper summary is: {summary_res}" |
| |
|
| | return summary_res, description |
| |
|