File size: 1,764 Bytes
3d1811d
5fcb7fe
0dc951b
 
 
 
 
 
 
 
 
 
 
 
 
 
5fcb7fe
0dc951b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5fcb7fe
0dc951b
5fcb7fe
0dc951b
5fcb7fe
 
0dc951b
 
 
 
 
 
 
5fcb7fe
 
0dc951b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5fcb7fe
0dc951b
 
 
 
 
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from src.config import client


def get_paper_analysis(abstract):
    """
    Generate summary, limitations, and research gaps
    in a single API call.
    """

    if not abstract:
        return {
            "summary": "No abstract available.",
            "limitations": "N/A",
            "research_gaps": "N/A"
        }

    prompt = f"""
You are an academic research assistant.

Analyze the following research abstract and return your answer in exactly this format:

SUMMARY:
(3-5 sentence summary)

LIMITATIONS:
- bullet point
- bullet point

RESEARCH_GAPS:
- bullet point
- bullet point

Abstract:
{abstract}
"""

    response = client.chat.completions.create(
        model="llama-3.1-8b-instant",
        messages=[
            {
                "role": "user",
                "content": prompt
            }
        ],
        temperature=0.3,
    )

    text = response.choices[0].message.content

    summary = ""
    limitations = ""
    research_gaps = ""

    current = None

    for line in text.splitlines():

        line = line.strip()

        if line.upper().startswith("SUMMARY"):
            current = "summary"
            continue

        elif line.upper().startswith("LIMITATIONS"):
            current = "limitations"
            continue

        elif line.upper().startswith("RESEARCH_GAPS"):
            current = "research_gaps"
            continue

        if current == "summary":
            summary += line + "\n"

        elif current == "limitations":
            limitations += line + "\n"

        elif current == "research_gaps":
            research_gaps += line + "\n"

    return {
        "summary": summary.strip(),
        "limitations": limitations.strip(),
        "research_gaps": research_gaps.strip()
    }