Spaces:
Sleeping
Sleeping
File size: 4,043 Bytes
55b5946 9863223 55b5946 9863223 55b5946 9863223 55b5946 9863223 55b5946 9863223 55b5946 afa26c5 a631890 afa26c5 9863223 35425cb 55b5946 9863223 55b5946 9863223 35425cb 9863223 55b5946 afa26c5 35425cb afa26c5 60cc9a1 | 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 | import openai
import os
def get_api_key(local = False):
if local:
from dotenv import load_dotenv
load_dotenv()
return os.getenv('OPEN_API_KEY')
def get_user_input(prompt):
return input(prompt)
def choose_cooperation_type():
choice = get_user_input("Please choose the cooperation type: \n"
+"1. Sequential: human provide an answer first and then AI provide the answer based on it.\n"
+"2. Parallel: human and AI give answers seperately and then AI does the merge.\n")
if choice == '1':
return 'sequential'
elif choice == '2':
return 'parallel'
else:
print("Invalid choice. Please try again.")
return choose_cooperation_type()
def describe_task():
task_description = get_user_input("Please describe your task: ")
if task_description.strip() == "":
# print("Task description cannot be empty. Please try again.")
# return describe_task()
task_description = "Write a poem about the moon in 3 lines."
return task_description
def generate_text_with_gpt(prompts, api_key = None):
"""Generate text using the GPT-3 model."""
if api_key:
openai.api_key = api_key
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "Please assist."},
{"role": "user", "content": prompts}
]
)
return response['choices'][0]['message']['content']
except Exception as e:
print(f"Error occurred when generating texts: {e}")
return ""
def generate_ai_initial_answer(task_description, api_key=None):
prompt = f"Given the task: {task_description}, provide an answer: "
return generate_text_with_gpt(prompt, api_key)
def merge_texts_parallel(task_description, human_text, ai_text, api_key = None):
prompt = f"Given the task: {task_description}, there are two answers provided:\n" + \
f"The first answer: {human_text}\nThe second answer: {ai_text}\n" + \
f"Merge the two answers into one in a coherent way: "
return generate_text_with_gpt(prompt, api_key)
def merge_texts_sequential(task_description, human_text, api_key = None):
prompt = f"Given the task:{task_description}, here is the answer provided by the human: {human_text}\n" + \
f"Refine this response and ensure the final answer aligns with the human's intent:"
return generate_text_with_gpt(prompt, api_key)
def modify_with_suggestion(task_description, text, suggestions, api_key = None):
prompt = f"Given the task:{task_description}, the answer provided is: {text}\n" + \
f"Modify the answer based on the following suggestions: {suggestions}"
return generate_text_with_gpt(prompt, api_key)
def get_evaluation_with_gpt(task_description, text, api_key=None):
prompt = (
f"Given the task: {task_description}, the provided answer is: {text}\n"
f"Please evaluate the answer based on the following criteria, using a scale from 0 to 10, where:\n"
f"0-2 reflects very poor quality, with minimal value or relevance.\n"
f"3-4 indicates below-average quality with significant shortcomings.\n"
f"5 represents acceptable quality.\n"
f"6-8 signifies good to very good quality, showing substantial thought and accuracy.\n"
f"9-10 represents exceptional quality, with outstanding insight or depth.\n\n"
f"Provide both a score and a brief comment (1 sentence) for each criterion.\n"
f"Please format the output exactly as follows:\n"
f"Novelty: [Score]\nComment: [Short comment on Novelty]\n"
f"Implementability: [Score]\nComment: [Short comment on Feasibility]\n"
f"Defensibility: [Score]\nComment: [Short comment on Defensibility]\n"
f"Overall Score: [Score]\nOverall Comment: [Overall feedback on the answer]\n"
)
return generate_text_with_gpt(prompt, api_key) |