Spaces:
Sleeping
Sleeping
| # agents.py | |
| import requests | |
| import json | |
| from flask import jsonify | |
| import os | |
| key = os.getenv("API-KEY") | |
| api_key = key | |
| import re # Import the regular expressions library | |
| def generate_research_questions_and_purpose_with_gpt(objective, num_questions): | |
| headers = { | |
| "Authorization": f"Bearer {api_key}", | |
| "Content-Type": "application/json" | |
| } | |
| # Construct the prompt dynamically | |
| prompt_content = f"You are a helpful assistant capable of generating research questions along with their purposes for a systematic literature review.\n" | |
| prompt_content = f"Given the research objective: '{objective}', generate {num_questions} distinct research questions, each followed by its specific purpose. 'To examine', or 'To investigate'." | |
| data = { | |
| "model": "gpt-3.5-turbo", | |
| "messages": [ | |
| {"role": "system", "content": "You are a helpful assistant capable of generating research questions along with their purposes for a systematic literature review."}, | |
| {"role": "user", "content": prompt_content} | |
| ], | |
| "temperature": 0.7 | |
| } | |
| response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, data=json.dumps(data)) | |
| if response.status_code == 200: | |
| result = response.json() | |
| messages = result['choices'][0]['message']['content'] | |
| lines = [line for line in messages.strip().split('\n') if line] | |
| question_purpose_objects = [] | |
| for i in range(0, len(lines), 2): | |
| # Using regex to dynamically remove "Research question X:" where X is any number | |
| question = re.sub(r"^Research question( \d+)?: ", "", lines[i], flags=re.IGNORECASE) | |
| purpose = lines[i+1] if i+1 < len(lines) else "Purpose not provided" | |
| # Optionally, remove the prefix from purpose if needed | |
| # purpose = purpose.replace("Purpose: ", "") | |
| question_purpose_objects.append({"question": question, "purpose": purpose}) | |
| if num_questions == 1 and question_purpose_objects: | |
| return {"research_questions": question_purpose_objects} | |
| else: | |
| return {"research_questions": question_purpose_objects} | |
| else: | |
| print(f"Error: {response.status_code}") | |
| print(response.text) | |
| return [] | |
| def generate_summary_conclusion(papers_info): | |
| headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"} | |
| prompt_parts = ["Summarize the conclusions of the following papers:"] | |
| for paper in papers_info: | |
| title = paper.get("title") | |
| author = paper.get("creator", "An author") | |
| year = paper.get("year", "A year") | |
| prompt_parts.append(f"- '{title}' by {author} ({year})") | |
| prompt = " ".join(prompt_parts) | |
| data = { | |
| "model": "gpt-3.5-turbo", | |
| "messages": [ | |
| {"role": "system", "content": "You are a helpful assistant."}, | |
| {"role": "user", "content": prompt}, | |
| ], | |
| } | |
| response = requests.post( | |
| "https://api.openai.com/v1/chat/completions", | |
| headers=headers, | |
| data=json.dumps(data), | |
| ) | |
| if response.status_code == 200: | |
| result = response.json() | |
| content = result["choices"][0]["message"]["content"] | |
| summary_conclusion = content.strip() | |
| else: | |
| return jsonify({"error": "Failed to generate a summary conclusion."}), 500 | |
| return summary_conclusion | |
| def generate_abstract_with_openai(prompt): | |
| """Generates a summary abstract using OpenAI's GPT model based on the provided prompt.""" | |
| # Fetching the API key from environment variables for better security practice | |
| headers = { | |
| "Authorization": f"Bearer {api_key}", # Using the API key from environment variables | |
| "Content-Type": "application/json" | |
| } | |
| data = { | |
| "model": "gpt-3.5-turbo", | |
| "messages": [ | |
| {"role": "system", "content": "You are a helpful assistant."}, | |
| {"role": "user", "content": prompt} | |
| ] | |
| } | |
| response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, data=json.dumps(data)) | |
| if response.status_code == 200: | |
| result = response.json() | |
| content = result['choices'][0]['message']['content'] | |
| return content.strip() | |
| else: | |
| raise Exception("Failed to generate a summary abstract from OpenAI.") | |
| def generate_introduction_summary_with_openai(prompt): | |
| headers = { | |
| "Authorization": f"Bearer {api_key}", | |
| "Content-Type": "application/json" | |
| } | |
| data = { | |
| "model": "gpt-3.5-turbo", | |
| "messages": [ | |
| {"role": "system", "content": "You are a helpful assistant."}, | |
| {"role": "user", "content": prompt} | |
| ] | |
| } | |
| response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, data=json.dumps(data)) | |
| if response.status_code == 200: | |
| result = response.json() | |
| content = result['choices'][0]['message']['content'] | |
| return content.strip() | |
| else: | |
| raise Exception("Failed to generate the introduction summary from OpenAI.") | |