| 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!"}) |
|
|
| import random |
|
|
| def format_prompt(message): |
| |
| user_prompt = "UserPrompt" |
| bot_response = "BotResponse" |
|
|
| return f"<s>[INST] {user_prompt} [/INST] {bot_response}</s> [INST] {message} [/INST]" |
|
|
|
|
|
|
| @app.route('/get_course', methods=['POST']) |
| def recommend(): |
| 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') |
|
|
| 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 list in below format: |
| [course1, course2, course3,...] |
| Return only answer not prompt and unnecessary stuff, also dont add any special characters or punctuation marks |
| """ |
| formatted_prompt = format_prompt(prompt) |
|
|
| stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=False, details=False, return_full_text=False) |
| return jsonify({"ans": stream}) |
|
|
| @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 list in below format: |
| [mentor1,mentor2,mentor3,...] |
| Return only answer not prompt and unnecessary stuff, also dont add any special characters or punctuation marks |
| """ |
| formatted_prompt = format_prompt(prompt) |
|
|
| stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=False, details=False, return_full_text=False) |
| return jsonify({"ans": stream}) |
|
|
| if __name__ == '__main__': |
| app.run(debug=True) |
|
|