CEC-Learning / app.py
Jeff Myers II
Update space
1d0b89a
raw
history blame
2.27 kB
from flask import Flask, request, jsonify
from flask_cors import CORS
from News import News
from Gemma_Model import GemmaLLM
print("Starting server...")
app = Flask(__name__)
CORS(app)
news = News()
gemma = GemmaLLM()
# business entertainment general health science sports technology
@app.get("/get_top_articles/")
@app.get("/get_top_articles/<string:category>/")
@app.get("/get_top_articles/<int:num_articles>/")
@app.get("/get_top_articles/<int:num_articles>/<string:category>/")
def get_top_articles(num_articles=5, category=None):
if category is not None: category = category.lower()
articles = news.get_top_headlines(num_headlines=num_articles, category=category)
articles = news.get_articles_from_headlines(articles)
return jsonify(articles)
@app.get("/get_articles/")
@app.get("/get_articles/<string:query>/")
@app.get("/get_articles/<int:num_articles>/")
@app.get("/get_articles/<int:num_articles>/<string:query>/")
def get_articles(num_articles=5, query=None):
if query is not None: query = query.lower()
articles = news.get_headlines(num_headlines=num_articles, query=query)
articles = news.get_articles_from_headlines(articles)
return jsonify(articles)
@app.post("/get_summary/")
@app.post("/get_summary/<int:num_paragraphs>/")
def get_summary(num_paragraphs=1):
article = request.json
message = gemma.get_summary_message(article, num_paragraphs)
summary = gemma.get_summary(message)
article["summary"] = summary
return jsonify(article)
@app.post("/get_questions/")
@app.post("/get_questions/<string:difficulty>/")
@app.post("/get_questions/<int:num_questions>/")
@app.post("/get_questions/<int:num_questions>/<string:difficulty>/")
def get_questions(num_questions=3, difficulty="average"):
if "summary" in request.json:
summary = request.json["summary"]
questions = gemma.get_questions(gemma.get_questions_message(summary, num_questions, difficulty))
elif "summaries" in request.json:
summaries = request.json["summaries"]
messages = [gemma.get_questions_message(summary) for summary in summaries]
questions = gemma.get_questions(messages)
else: return jsonify({})
return jsonify(questions)
if __name__ == "__main__": app.run()