Spaces:
Sleeping
Sleeping
| import json | |
| from openai import OpenAI | |
| def generate_chatgpt_prompt(question, guidelines, examples): | |
| """Generate a prompt for ChatGPT based on question, guidelines, and examples.""" | |
| prompt = f"Here is an essay question and assessment guidelines:\n\nQuestion:\n{question}\n\nGuidelines:\n{guidelines}\n\n" | |
| if examples: | |
| prompt += "Here are examples of previously graded essays:\n" | |
| for example in examples: | |
| prompt += f"Essay: {example['essay']}\nMark: {example['mark']}\nReason: {example['reason']}\n\n" | |
| prompt += "Please assess the following essays based on the provided guidelines and give a mark and reasoning in JSON format." | |
| return prompt | |
| def assess_essay_with_gpt(essay_text, question, guidelines, examples=None): | |
| """Get ChatGPT to assess the essay based on provided question and guidelines.""" | |
| prompt = generate_chatgpt_prompt(question, guidelines, examples) | |
| prompt += f"\n\nEssay to assess:\n{essay_text}\n\nProvide the response in JSON format as follows:\n{{\"mark\": <mark>, \"reason\": \"<reason>\"}}. Do not include ```json``` in the response." | |
| client = OpenAI() | |
| response = client.chat.completions.create( | |
| model="gpt-4o-mini", | |
| messages=[ | |
| {"role": "system", "content": "You are an AI assistant that assesses essays."}, | |
| {"role": "user", "content": prompt} | |
| ], | |
| max_tokens=150, | |
| temperature=0.2 | |
| ) | |
| # Extract the content from the response | |
| result = response.choices[0].message.content.strip() | |
| # Parse the JSON response | |
| try: | |
| return json.loads(result) | |
| except json.JSONDecodeError: | |
| print('result:', result) | |
| # Handle cases where the response might not be valid JSON | |
| return {"mark": 0, "reason": "Error: Unable to parse response"} | |