I’m working on an app that users can use to know their level in subjects like math or english (for example) through multiple choice tests divided into 5 levels for each subject.
I’m currently working on a “Know My Level” feature which through an api call -passing some instructions to ChatGPT along with the list of the user’s records plus the list of all test types and subjects the app includes- will generate a report based on an html template I’m also providing.
I’m facing different problems, one of them is that many times the response is just a copy paste of my template with no relevant information in it (or very little information), but the most important problem is the inconsistency of the results.
I know I cannot expect all the responses to follow exactly the same structure and be identical, but this is more or less my idea, or at least to get an approach to that, and this is why I’ve created a template, to make ChatGPT responses to follow a consistent pattern. If not, every time a same user hits on “Know My Level” will see a different response (independently on whether the response is correct or not).
I’m working on Kotlin (it’s an Android app), and I’ve tried many different combinations of inputs to improve the results, but I’m encountering more or less the same behaviour always with little improvements.
Maybe someone experienced here may help me with some hints on how to better formulate the request to achieve my goal.
This is my current request, and I’m replacing the {} sections with the corresponding information from code:
Below is a list of tests and subjects the app includes followed by my list of records in {subject}. I need to know my level in the subject provided, so please, deeply analize the information I’m providing and complete the html template with your results following my instructions:
This is my list of records with their corresponding scores.
{records}
These next are the tests and subjects the app includes:
{tests}
And finally this is the template in html format you will use to create the report with the information in your result:
Instructions:
Generate a summary of scores and replace [summary] with your summary.
Generate an statistical analysis and replace [statisticalanalysis] with your result.
Generate a score analysis and replace [scoreanalysis] with your result.
Generate interpretation of results and replace [interpretationofresults] with your response.
Generate evaluation of performance and replace [evaluationofperformance] with your results.
Generate strengths and replace [strengths] with the strengths you generated.
Generate areas of improvement and replace [areasofimprovement] with your results.
Generate recommendations and replace [recommendations] with your results.
Generate a conclusion and replace [conslusion] with your results.
Evaluate my level in the subject (for example, beginner, intermediate and advanced) and replace [level] with your evaluation.
<!DOCTYPE html>
<html>
<head>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
margin: 30px;
font-size: 1.5em;
}
h2 {
color: #333;
margin-top: 20px;
}
p {
margin-top: 10px;
}
table {
border-collapse: collapse;
width: 100%;
margin-bottom: 20px;
}
th, td {
padding: 8px;
text-align: left;
border-bottom: 1px solid #ddd;
}
th {
background-color: #f2f2f2;
}
.chart-container {
margin-top: 20px;
}
* {
margin: 0;
padding: 0;
}
.imgbox {
display: grid;
height: 100%;
}
.center-fit {
max-width: 100%;
max-height: 100vh;
margin: auto;
}
</style>
</head>
<body>
<h1>Math Test Evaluation Report</h1>
<h2>1. Summary of Scores</h2>
<p>[summary]</p>
<h2>2. Statistical Analysis</h2>
<p>[statisticalanalysis]</p>
<h2>3. Score Analysis</h2>
<p>[scoreanalysis]</p>
<h2>4. Interpretation of Results</h2>
<p>[interpretationofresults]</p>
<h2>5. Evaluation of Performance</h2>
<p>[evaluationofperformance]</p>
<h2>6. Strengths</h2>
<p>[strengths]</p>
<h2>7. Areas for Improvement</h2>
<p>[areasofimprovement]</p>
<h2>8. Recommendations</h2>
<p>[recommendations]</p>
<h2>9. Conclusion</h2>
<p>[conclusion]</p>
<h2>10. Your Level</h2>
<p>[level]</p>
</body>
</html>
I expect your results will be this same html but with all sections completed with the required information.
An example of records and test types for you guys to have more context is the next:
User Records:
[SAT Math Level 1 Test 1 → 80, SAT Math Level 1 Test 1 → 80, SAT Math Level 1 Test 1 → 40, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 60, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 0, SAT Math Level 1 Test 1 → 40, SAT Math Level 1 Test 1 → 20, SAT Math Level 1 Test 1 → 40, SAT Math Level 1 Test 1 → 40, SAT Math Level 1 Test 1 → 40, SAT Math Level 1 Test 1 → 40, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 20, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 60, SAT Math Level 1 Test 1 → 100, SAT Math Level 1 Test 1 → 100]
Tests:
ACT Science
AI ACT Science
SAT Reading
ACT Math
AI GRE Verbal Reasoning… and more
Maybe I’m giving too much information at once, not sure, but I cannot ask more than one question (ChatMessage in Kotlin) in the same request as far as I know, but I’m open to shorten my request including less sections, if this could help.
This next is an example of a very good response ChatGPT given in one particular request, so this is more or less what I expect: