Research_Bot / app.py
singhvaibhav924's picture
Prompts Updated
c83f530
import uvicorn
import helper
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import List
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"]
)
class RequestData(BaseModel):
abstract: str
words: int
papers: int
class ResponseData(BaseModel):
summary: str
ids: List[str]
base_prompt = """
Write a related work section for a scientific paper based on the following abstract and references. Your output should:
1. Introduce the topic (1 sentence)
2. Summarize key related works (3-4 sentences)
3. Compare and contrast approaches (2-3 sentences)
4. Connect to the proposed work (1-2 sentences)
Use [1], [2], etc. to cite references. Do not copy text directly. Be concise and coherent.
Abstract: {abstract}
References:
{references}
Write the related work section:
"""
sentence_plan = """
1. Introduction sentence (1 sentence)
2. Overview of relevant studies (2-3 sentences, cite [1], [2])
3. Detailed discussion on key papers (4-5 sentences, cite [3], [4], [5], if present)
4. Summary of related work and connection to proposed approach (2 sentences, cite remaining papers, if present)
"""
@app.post("/generateLiteratureSurvey/", response_model=ResponseData)
async def generate_literature_survey(request_data: RequestData):
summary, ids = summarize(request_data.abstract, request_data.words, request_data.papers)
return {"summary": summary,
"ids": ids
}
@app.get("/")
async def root():
return {"status": 1}
def summarize(query, n_words, n_papers) :
keywords = helper.extract_keywords(query)
papers = helper.search_papers(keywords, n_papers*2)
ranked_papers = helper.re_rank_papers(query, papers, n_papers)
literature_review, ids = helper.generate_related_work(query, ranked_papers, base_prompt, sentence_plan, n_words)
return literature_review, ids
if __name__ == '__main__':
print("Program running")
uvicorn.run(app)