quiz-generator-v3 / prompts /learning_objectives.py
ecuartasm's picture
Initial commit: AI Course Assessment Generator
217abc3
BASE_LEARNING_OBJECTIVES_PROMPT = """
The learning objectives you generate will be assessed through multiple choice
quiz questions, so the learning objectives cannnot be about building, creating,
developing, etc. Instead, the objectives should be about identifying, listing,
describing, defining, comparing, e.g., the kinds of things that can be assessed in a multiple choice quiz. For example, a learning objective like: “identify the key reason for providing examples of the response format you’re looking for in an LLM prompt”, where then the correct answer might be “providing an example of the response format you're looking for gives the LLM clear guidance on the expected output”. Limit learning objectives to one goal per objective, i.e., don't say "identify the <key concepts of the course> and explain why they are important in the context of <topic of the course>". Either choose which of these (identify or explain) is most relevant to the learning objective or create two learning objectives.
INSTRUCTIONS:
1. Each learning objective must be derived DIRECTLY from the COURSE CONTENT provided
below. Do not create objectives for topics not covered in the content.
2. Learning objectives should be specific, measurable, and focused on important
concepts.
3. Each objective should start with an action verb that allows for assessment using
a multiple choice question (e.g., identify, describe, define, list, compare, etc.). Do not include more than one action verb per learning objective, e.g., do not say "identify and explain" or similar.
4. Make each objective unique and independent, covering different aspects of the content. It is ok if two objectives address different aspects or angles of the same topic.
5. Learning objectives should not contain part or all of the correct answer associated with them.
6. No learning objective should depend on context from another learning objective, or in other words, each learning objective should be able to stand alone without knowing anything about what the other learning objectives are.
7. Ensure objectives are at an appropriate level of difficulty for the course, meaning they are consistent with the difficulty level of the course content.
8. Write learning objectives that address critical knowledge and skills in the content, not trivial facts or details of a specific use case implementation or coding exercise.
9. Wherever possible, write learning objectives that address the “why” of the concepts presented in the course rather than the “what”. For example, if the course presents an implementation of a use case using a particular framework or tool, don’t write learning objectives that ask about the details of exactly what was presented in the implementation or how the framework or tool was used. Rather, write a learning objective that addresses the why behind the example.
10. The course content you are provided is presenting principles or methods in the artificial intelligence space, and the means of presentation is through the use of a particular tool or framework. Do not mention the name of whatever tool or framework is used in the course as part of a learning objective. Instead aim for tool or framework agnostic learning objectives that address the principles or methods as well as topics and concepts being presented.
11. Do not write learning objectives that address specific tool or framework functionality presented in the course content. Write learning objectives that are completely tool or framework agnostic that get at the core principles or methods being presented.
12. Because this is a software development course and an AI development course, refrain from any references to manual intervention unless absolutely relevant
12. Write the first learning objective to address the “what” or "why" of the main topic of the course in a way that will lead to a relatively easy recall question as the first question in the quiz. To write this first learning objective you should identify the main
topic, concept or principle that the course is about and form an objective
something like “identify what <important main topic / concept / principle> is” or
“explain why <important main topic / concept / principle> is important?” or something of similar simplicity.
"""
BLOOMS_TAXONOMY_LEVELS = """
The levels of Bloom's taxonomy from lowest to highest are as follows:
- Recall: Demonstrates the retention of key concepts and facts, not trivialities.
Avoid a simple recall structure, where there is an opportunity to ask learners a
question at a higher level of Bloom's taxonomy, for example, asking the learner
to apply a concept seen in course to a new but similar scenario.
- Comprehension: Connect ideas and concepts to demonstrate a deeper grasp of
the material beyond simple recall.
- Application: Apply a concept to a new / different but similar scenario to that
seen in course.
- Analysis: Examine and break information into parts, determine how the parts
relate, identify motives or causes, make inferences or calculations, and find
evidence to support generalizations.
- Evaluation: Make judgments, assessments, or evaluations regarding a scenario,
statement, or concept. The answer choices should offer different plausible options
that require critical thinking to discern the most valid or appropriate choice.
"""
LEARNING_OBJECTIVE_EXAMPLES = """
<appropriate_learning_objectives_and_correct_answers>
[
{
"id": 1,
"learning_objective": "Identify what a code agent is.",
"source_reference": [
"sc-HuggingFace-C5-L0_v1.vtt",
"sc-HuggingFace-C5-L1_v4.vtt",
"sc-HuggingFace-C5-L2_v4.vtt"
],
"correct_answer": "A code agent is a system that uses an AI model to generate and execute code as its way of performing tasks.",
},
{
"id": 2,
"learning_objective": "Explain how code agents can be more efficient than traditional tool calling agents.",
"source_reference": [
"sc-HuggingFace-C5-L2_v4.vtt"
],
"correct_answer": "Code agent actions are more compact and can execute loops and variables in a single code snippet, which reduces the number of steps, latency, and risk of errors in comparison to traditional tool calling agents.",
},
{
"id": 3,
"learning_objective": "Describe how running code agents using a custom Python interpreter, like the one used in the course, can mitigate security concerns associated with executing AI-generated code.",
"source_reference": [
"sc-HuggingFace-C5-L3_v3.vtt"
],
"correct_answer": "Running code in a dedicated interpreter can help mitigate security risks by restricting imports, blocking undefined commands, and limiting resource usage.",
},
{
"id": 4,
"learning_objective": "Describe how running code agents in a remote sandbox can mitigate security concerns associated with executing AI-generated code.": [
"sc-HuggingFace-C5-L3_v3.vtt"
],
"correct_answer": "Running code in a remote sandbox environment helps prevent malicious or accidental damage to your local system."
},
{
"id": 5,
"learning_objective": "Describe why and how agent performance can be tracked or traced during execution.",
"source_reference": [
"sc-HuggingFace-C5-L4_v3.vtt"
],
"correct_answer": "Tracing captures the agent's reasoning steps and tool usage, making it possible to evaluate the correctness, efficiency, and reliability of its decisions over multiple steps."
},
{
"id": 6,
"learning_objective": "Discuss the benefits of using multiple specialized agents that collaborate on complex tasks.",
"source_reference": [
"sc-HuggingFace-C5-L5_v2.vtt"
],
"correct_answer": "Splitting tasks among distinct agents with focused roles, each having its own memory and capabilities, can improve performance, reduce errors, and enable more advanced planning."
},
{
"id": 7,
"learning_objective": "Explain what it means to calculate advantages by normalizing reward scores across generated responses and centering them around zero in reinforcement fine-tuning.",
"source_reference": [
"sc-Predibase-C2-L4.vtt"
],
"correct_answer": "Advantages are calculated by normalizing reward scores across generated responses, centering them around zero to highlight which outputs are better or worse than average."
}
]
</appropriate_learning_objectives_and_correct_answers>
Avoid adding unnecessary length to the correct answer. Aim for 20 word correct answers or less. Below is an example of unnecessary length, which typically occurs in the last part of a long sentence:
<inappropriate_learning_objectives_and_correct_answers>
[
{
"id": 1,
"learning_objective": "Identify why integrating internal and external systems is important when building multi-agent AI applications",
"source_reference": [
"sc-CrewAI-C2-L2_eng.vtt"
],
"correct_answer": "Integrating internal and external systems enables AI agents to access, process, and act on real-world data, expanding the usefulness and applicability of automations.",
},
{
"id": 2,
"learning_objective": "Identify the main advantage of assigning different AI models to different agents in a multi-agent system, as described in the course"
"source_reference": [
"sc-CrewAI-C2-L2_eng.vtt"
],
"correct_answer": "Assigning different AI models to different agents enables the system to optimize for factors like speed, quality, or task complexity, making the overall workflow more efficient and effective"
}
]
In id: 1 we should avoid "expanding the usefulness and applicability of automations." and in id: 2 we should avoid "making the overall workflow more efficient and effective". These statements are considered unnecessary length.
Rule: Avoid compound sentences where the second clause introduces additional consequences, effects, or elaborations that are not essential to the core concept.
Look for these patterns that indicate unnecessary length:
- Clauses beginning with "which," "that," "providing," "enabling," "reducing," "ensuring"
- Phrases connected by commas that add consequences or effects
- Additional explanations after the main misconception is established
</inappropriate_learning_objectives_and_correct_answers>
"""
LEARNING_OBJECTIVE_EXAMPLES_WITHOUT_ANSWERS = """
<learning_objectives>
[
{
"id": 1,
"learning_objective": "Identify what a code agent is.",
"source_reference": [
"sc-HuggingFace-C5-L0_v1.vtt",
"sc-HuggingFace-C5-L1_v4.vtt",
"sc-HuggingFace-C5-L2_v4.vtt"
],
},
{
"id": 2,
"learning_objective": "Explain how code agents can be more efficient than traditional tool calling agents.",
"source_reference": [
"sc-HuggingFace-C5-L2_v4.vtt"
],
},
{
"id": 3,
"learning_objective": "Describe how running code agents using a custom Python interpreter, like the one used in the course, can mitigate security concerns associated with executing AI-generated code.",
"source_reference": [
"sc-HuggingFace-C5-L3_v3.vtt"
],
},
{
"id": 4,
"learning_objective": "Describe how running code agents in a remote sandbox can mitigate security concerns associated with executing AI-generated code.",
"source_reference": [
"sc-HuggingFace-C5-L3_v3.vtt"
],
},
{
"id": 5,
"learning_objective": "Describe why and how agent performance can be tracked or traced during execution.",
"source_reference": [
"sc-HuggingFace-C5-L4_v3.vtt"
],
},
{
"id": 6,
"learning_objective": "Discuss the benefits of using multiple specialized agents that collaborate on complex tasks.",
"source_reference": [
"sc-HuggingFace-C5-L5_v2.vtt"
],
},
{
"id": 7,
"learning_objective": "Explain what it means to calculate advantages by normalizing reward scores across generated responses and centering them around zero in reinforcement fine-tuning.",
"source_reference": [
"sc-Predibase-C2-L4.vtt"
]
}
]
</learning_objectives>
"""