File size: 3,585 Bytes
f71f174
509ca73
423a42f
822dfd5
509ca73
423a42f
 
 
509ca73
6d8186b
509ca73
25f7cba
 
 
 
7497699
 
 
 
423a42f
 
 
 
 
 
 
8b77a26
772d03e
e60d9fc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24c6700
 
772d03e
 
 
 
 
24c6700
 
 
 
25f7cba
423a42f
 
 
 
 
 
 
 
 
 
 
 
 
c34d039
24c6700
 
 
 
 
25f7cba
24c6700
25f7cba
24c6700
ef1e39e
423a42f
24c6700
423a42f
 
 
 
 
 
 
 
 
 
24c6700
509ca73
 
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117

from flask import Flask, request, jsonify
from huggingface_hub import InferenceClient


client = InferenceClient(
    "mistralai/Mistral-7B-Instruct-v0.1"
)

app = Flask(__name__)

file_path = "mentor.txt"
with open(file_path, "r") as file:
    mentors_data = file.read()

@app.route('/')
def home():
    return jsonify({"message": "Welcome to the Recommendation API!"})


def format_prompt(message):
    prompt = "<s>"
    prompt += f"[INST] {message} [/INST]"
    prompt += "</s>"
    return prompt

@app.route('/get_course', methods=['POST'])
def recommend():
    temperature = 0.9
    max_new_tokens = 256
    top_p = 0.95
    repetition_penalty = 1.0

    if request.method == 'POST':
        content = request.json
        user_degree = content.get('degree')
        user_stream = content.get('stream')
        user_semester = content.get('semester')

        generate_kwargs = dict(
            temperature=temperature,
            max_new_tokens=max_new_tokens,
            top_p=top_p,
            repetition_penalty=repetition_penalty,
            do_sample=True,
            seed=42,
        )
        prompt = f""" prompt: 
        You need to act like as recommendation engine for course recommendation for a student based on below details.
        Degree: {user_degree}
        Stream: {user_stream}
        Current Semester: {user_semester}
        Based on above details recommend the courses that relate to the above details 
        Note: Output should be valid json format in below format:
        {{"course1:course_name, course2:course_name, course3:course_name,...}}
        """
        formatted_prompt = format_prompt(prompt)

        stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
        output = ""

        for response in stream:
            output += response.token.text
            return jsonify({"ans": output})
    else:
        return jsonify({"error": "Invalid request method"})

@app.route('/get_mentor', methods=['POST'])
def mentor():
    temperature=0.9
    max_new_tokens=256
    top_p=0.95
    repetition_penalty=1.0
    content = request.json
    user_degree = content.get('degree')
    user_stream = content.get('stream')
    user_semester = content.get('semester')
    courses = content.get('courses')
    temperature = float(temperature)
    if temperature < 1e-2:
        temperature = 1e-2
    top_p = float(top_p)

    generate_kwargs = dict(
        temperature=temperature,
        max_new_tokens=max_new_tokens,
        top_p=top_p,
        repetition_penalty=repetition_penalty,
        do_sample=True,
        seed=42,
    )
    prompt = f""" prompt:
    You need to act like as recommendataion engine for mentor recommendation for student based on below details also the list of mentors with their experience is attached.

    Degree: {user_degree}
    Stream: {user_stream}
    Current Semester: {user_semester}
    courses opted:{courses}

    Mentor list= {mentors_data}
    Based on above details recommend the mentor that realtes to above details 
    Note: Output should be valid json format in below format:
    {{"mentor1:mentor_name,mentor2:mentor_name,mentor3:mentor_name,...}}
    """
    formatted_prompt = format_prompt(prompt)

    stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
    output = ""

    for response in stream:
        output += response.token.text
        yield output
    return jsonify({"ans":output})


if __name__ == '__main__':
    app.run(debug=True)