Spaces:
Sleeping
Sleeping
File size: 5,163 Bytes
ac13c4a |
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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# 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.")
|