File size: 2,273 Bytes
1d0b89a
 
 
 
ffa3445
1d0b89a
ffa3445
1d0b89a
 
ffa3445
1d0b89a
 
ffa3445
1d0b89a
ffa3445
1d0b89a
 
 
 
 
 
 
 
 
 
ffa3445
1d0b89a
 
 
 
 
 
 
 
 
 
ffa3445
1d0b89a
 
 
 
 
 
 
ffa3445
1d0b89a
ffa3445
1d0b89a
 
 
 
 
 
 
 
 
 
 
 
 
ffa3445
1d0b89a
ffa3445
1d0b89a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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()