Skip to content

Athena: Add a llm as profiler approach for text exercise feedback generation #105

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 17 commits into
base: main
Choose a base branch
from

Conversation

ahmetsenturk
Copy link
Contributor

@ahmetsenturk ahmetsenturk commented Apr 25, 2025

Motivation and Context

As we want to generate more personalized feedback, we want to introduce an approach that would make use of the LLM to profile the students using their submissions.
Screenshot 2025-05-30 at 14 45 23

Description

Adds a new feedback generation approach, which in the first iteration profiles the student. Then uses that profile to generate personalized feedback.

1. Competency-Based Profiling

  • Analyzes student submissions against expected competencies
  • Maps competencies to Bloom's taxonomy cognitive levels (Recall, Understand, Apply, Analyze, Evaluate, Create)
  • Provides detailed evaluation of each competency with:
    • Clear status tracking (Correct, Partially Correct, Attempted Incorrectly, Not Attempted)
    • Evidence-based assessment with line references
    • Mapping to grading instructions

2. Personalized Feedback Generation

  • Generates structured feedback based on the competency profile
  • Provides three types of suggested actions:
    • Review Concept: For foundational misunderstandings
    • Improve Explanation: For partially correct responses
    • Extend Thinking: For correct responses that can be deepened
  • Includes detailed feedback with:
    • Clear titles and descriptions
    • Line-specific references
    • Credit allocation
    • Grading instruction mapping

Next steps

  • In the future, we are planning to store and maintain the profiler's output for better tracking and better insights for lecturers.
  • We also want to incorporate previous submissions/feedback and any other relevant information we can access to better profile the students, besides the submission

Steps for Testing

Playground

  • Define an experiment on evaluation mode, it would be easier if you select an exercise where there are some questions that test students' understanding as well as application skills
  • Select different approaches including llm-as-profiler, and compare the feedback generated

Artemis

  • Checkout the branch on local and change the default approach from athena/modules/text/module_text_llm/module_text_llm/config.py:
    approach: ApproachConfigUnion = Field(default_factory=LLMAsProfilerConfig)
  • Submit and generate feedback from Artemis, see if it works and feedback makes sense

Testserver States

Note

These badges show the state of the test servers.
Green = Currently available, Red = Currently locked
Click on the badges to get to the test servers.


Screenshots

Competency Schemas

UMLClassDiagram

New Feedback Attribute: Suggested Action

class SuggestedAction(str, Enum):
    REVIEW_CONCEPT = "Review Concept"     # For conceptual misunderstandings; revisit foundational material
    IMPROVE_EXPLANATION = "Improve Explanation"  # Partially correct; elaborate or clarify to strengthen understanding
    EXTEND_THINKING = "Extend Thinking"   # Fully or mostly correct; deepen insight or explore related ideas

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features
    • Introduced an AI-powered profiler for text-based exercises that analyzes student submissions, identifies required competencies, and provides detailed, actionable feedback.
    • Added structured, rubric-aligned feedback suggestions with clear explanations, line references, and suggested next steps for students.
    • Enhanced assessment capabilities with competency profiling, cognitive level evaluation, and evidence-based feedback for each competency.

Copy link

github-actions bot commented May 9, 2025

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions bot added the stale label May 9, 2025
Copy link

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions bot added the stale label May 18, 2025
@github-actions github-actions bot removed the stale label May 23, 2025
Copy link
Contributor

coderabbitai bot commented May 30, 2025

Walkthrough

A new "LLM as Profiler" feature is introduced for text-based exercises, including configuration, prompt templates, and data models for competency profiling and feedback suggestion. This addition enables AI-driven analysis of student submissions, mapping competencies, evaluating evidence, and generating structured, actionable feedback aligned with grading rubrics.

Changes

File(s) Change Summary
.../config.py Added LLMAsProfilerConfig to ApproachConfigUnion and imported it from llm_as_profiler.
.../llm_as_profiler/init.py Introduced LLMAsProfilerConfig class with prompts and async suggestion generation method.
.../llm_as_profiler/generate_suggestions.py Added async function to generate feedback suggestions using AI, handling prompt construction, model calls, and feedback mapping.
.../llm_as_profiler/prompt_generate_feedback.py Added prompt template, feedback/action enums, and Pydantic models for structured feedback and assessment output.
.../llm_as_profiler/prompt_profiler.py Added prompt template and Pydantic models/enums for competency extraction, evaluation, and student submission profiling.

Sequence Diagram(s)

sequenceDiagram
    participant Teacher
    participant LLMAsProfilerConfig
    participant ProfilerPrompt
    participant AI_Model
    participant GenerateSuggestionsPrompt

    Teacher->>LLMAsProfilerConfig: generate_suggestions(exercise, submission, ...)
    LLMAsProfilerConfig->>ProfilerPrompt: Prepare competency profiling prompt
    ProfilerPrompt->>AI_Model: Analyze submission for competencies
    AI_Model-->>ProfilerPrompt: SubmissionCompetencyProfile
    ProfilerPrompt->>GenerateSuggestionsPrompt: Prepare feedback prompt with profile
    GenerateSuggestionsPrompt->>AI_Model: Generate actionable feedback
    AI_Model-->>GenerateSuggestionsPrompt: AssessmentModel (feedback list)
    GenerateSuggestionsPrompt-->>LLMAsProfilerConfig: Parsed feedback suggestions
    LLMAsProfilerConfig-->>Teacher: Return feedback suggestions
Loading

Possibly related issues

Suggested labels

ready for review

Poem

In the warren of code, a new path unfurled,
Where LLMs ponder the student’s world.
Competencies mapped, feedback in tow,
Suggestions bloom where bright ideas grow.
With prompts and profiles, the AI’s on call—
Hopping to help, and grading for all!
🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5e42977 and 007475a.

📒 Files selected for processing (2)
  • athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/generate_suggestions.py (1 hunks)
  • athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: ahmetsenturk
PR: ls1intum/edutelligence#105
File: athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/__init__.py:17-19
Timestamp: 2025-06-02T18:19:34.504Z
Learning: In the edutelligence repository, PR #105 includes a learner_profile parameter in LLMAsProfilerConfig.generate_suggestions that is not yet implemented but is being prepared for functionality coming in PR #92 ("Athena: Refactor LLM Configuration to YAML-Based System"). The LearnerProfile infrastructure and prompt templates are already in place with placeholders for learner profile features.
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/generate_suggestions.py (2)
Learnt from: ahmetsenturk
PR: ls1intum/edutelligence#105
File: athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/__init__.py:17-19
Timestamp: 2025-06-02T18:19:34.504Z
Learning: In the edutelligence repository, PR #105 introduces a learner_profile parameter in the LLMAsProfilerConfig.generate_suggestions method that is not yet used, but will be implemented when PR #92 is merged. The parameter is added in preparation for upcoming learner profile functionality.
Learnt from: ahmetsenturk
PR: ls1intum/edutelligence#105
File: athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/__init__.py:17-19
Timestamp: 2025-06-02T18:19:34.504Z
Learning: In the edutelligence repository, PR #105 includes a learner_profile parameter in LLMAsProfilerConfig.generate_suggestions that is not yet implemented but is being prepared for functionality coming in PR #92 ("Athena: Refactor LLM Configuration to YAML-Based System"). The LearnerProfile infrastructure and prompt templates are already in place with placeholders for learner profile features.
🧬 Code Graph Analysis (1)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/generate_suggestions.py (5)
athena/athena/athena/metadata.py (1)
  • emit_meta (78-89)
athena/llm_core/llm_core/utils/llm_utils.py (3)
  • get_chat_prompt_with_formatting_instructions (81-110)
  • check_prompt_length_and_omit_features_if_necessary (29-66)
  • num_tokens_from_prompt (24-26)
athena/llm_core/llm_core/utils/predict_and_parse.py (1)
  • predict_and_parse (15-82)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_profiler.py (1)
  • SubmissionCompetencyProfile (112-115)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py (1)
  • AssessmentModel (123-125)
🪛 Pylint (3.3.7)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py

[convention] 86-86: Line too long (116/100)

(C0301)


[convention] 88-88: Line too long (114/100)

(C0301)


[convention] 93-93: Line too long (107/100)

(C0301)


[convention] 94-94: Line too long (118/100)

(C0301)


[convention] 95-95: Line too long (108/100)

(C0301)


[convention] 100-100: Line too long (130/100)

(C0301)


[convention] 103-103: Line too long (124/100)

(C0301)


[convention] 109-109: Line too long (109/100)

(C0301)


[convention] 112-112: Line too long (107/100)

(C0301)


[convention] 119-119: Line too long (111/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[error] 1-1: Unable to import 'pydantic'

(E0401)


[convention] 5-5: Constant name "system_message" doesn't conform to UPPER_CASE naming style

(C0103)


[convention] 68-68: Constant name "human_message" doesn't conform to UPPER_CASE naming style

(C0103)


[refactor] 78-78: Too few public methods (0/2)

(R0903)


[convention] 92-92: Missing class docstring

(C0115)


[convention] 98-98: Missing class docstring

(C0115)


[refactor] 98-98: Too few public methods (0/2)

(R0903)


[refactor] 123-123: Too few public methods (0/2)

(R0903)


[convention] 2-2: standard import "enum.Enum" should be placed before third party import "pydantic.BaseModel"

(C0411)


[convention] 3-3: standard import "typing.List" should be placed before third party import "pydantic.BaseModel"

(C0411)

athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/generate_suggestions.py

[convention] 18-18: Line too long (111/100)

(C0301)


[convention] 23-23: Line too long (118/100)

(C0301)


[convention] 52-52: Line too long (120/100)

(C0301)


[convention] 71-71: Line too long (118/100)

(C0301)


[convention] 111-111: Line too long (104/100)

(C0301)


[convention] 113-113: Line too long (136/100)

(C0301)


[convention] 1-1: Missing module docstring

(C0114)


[error] 3-3: Unable to import 'athena'

(E0401)


[error] 4-4: Unable to import 'athena.text'

(E0401)


[error] 5-5: Unable to import 'athena.logger'

(E0401)


[error] 6-10: Unable to import 'llm_core.utils.llm_utils'

(E0401)


[error] 11-11: Unable to import 'llm_core.utils.predict_and_parse'

(E0401)


[convention] 18-18: Missing function or method docstring

(C0116)


[refactor] 18-18: Too many local variables (20/15)

(R0914)


[convention] 6-10: third party import "llm_core.utils.llm_utils.get_chat_prompt_with_formatting_instructions" should be placed before first party imports "athena.emit_meta", "athena.text.Exercise", "athena.logger.logger"

(C0411)


[convention] 11-11: third party import "llm_core.utils.predict_and_parse.predict_and_parse" should be placed before first party imports "athena.emit_meta", "athena.text.Exercise", "athena.logger.logger"

(C0411)


[convention] 12-12: third party import "module_text_llm.approach_config.ApproachConfig" should be placed before first party imports "athena.emit_meta", "athena.text.Exercise", "athena.logger.logger"

(C0411)


[convention] 13-14: third party import "module_text_llm.helpers.utils.add_sentence_numbers" should be placed before first party imports "athena.emit_meta", "athena.text.Exercise", "athena.logger.logger"

(C0411)


[convention] 15-15: third party import "module_text_llm.llm_as_profiler.prompt_profiler.SubmissionCompetencyProfile" should be placed before first party imports "athena.emit_meta", "athena.text.Exercise", "athena.logger.logger"

(C0411)


[convention] 16-16: third party import "module_text_llm.llm_as_profiler.prompt_generate_feedback.AssessmentModel" should be placed before first party imports "athena.emit_meta", "athena.text.Exercise", "athena.logger.logger"

(C0411)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: build_image (athena/playground)
  • GitHub Check: build_image (athena/modules/programming/module_programming_themisml)
  • GitHub Check: prospector
🔇 Additional comments (4)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/generate_suggestions.py (1)

76-80:

❌ Incorrect review comment

Fix field name mismatch with prompt configuration

The code uses config.generate_suggestions_prompt.second_system_message and answer_message, but according to the GenerateSuggestionsPrompt class in prompt_generate_feedback.py, the field names don't align with standard naming conventions.

Verify the field names in the GenerateSuggestionsPrompt class:


🏁 Script executed:

#!/bin/bash
# Check the actual field names in GenerateSuggestionsPrompt class
ast-grep --pattern $'class GenerateSuggestionsPrompt($_) {
  $$$
}'

Length of output: 68


Let’s locate the prompt class definition to confirm its field names:


🏁 Script executed:

#!/bin/bash
# Search for the GenerateSuggestionsPrompt class and show its fields
rg -n "class GenerateSuggestionsPrompt" -A 50

Length of output: 31993


No field mismatch—usage is correct
The GenerateSuggestionsPrompt in llm_as_profiler/prompt_generate_feedback.py indeed defines second_system_message and answer_message, matching how they’re accessed in generate_suggestions.py. No changes needed.

Likely an incorrect or invalid review comment.

athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py (3)

5-65: Excellent system message design for educational feedback

The system message template is comprehensive and well-structured for generating educational feedback. It properly:

  • Defines clear roles and constraints for the AI assistant
  • Provides detailed instructions for competency-based assessment
  • Includes appropriate guidelines to avoid revealing solutions
  • Incorporates the three-tier action framework (Review Concept, Improve Explanation, Extend Thinking)

The template effectively balances educational best practices with practical implementation needs.

🧰 Tools
🪛 Pylint (3.3.7)

[convention] 5-5: Constant name "system_message" doesn't conform to UPPER_CASE naming style

(C0103)


92-95: Well-designed feedback action categories

The SuggestedAction enum provides a thoughtful framework for categorizing student feedback based on their competency level. The three categories effectively map to different learning stages and provide clear guidance for both AI generation and student action.

🧰 Tools
🪛 Pylint (3.3.7)

[convention] 93-93: Line too long (107/100)

(C0301)


[convention] 94-94: Line too long (118/100)

(C0301)


[convention] 95-95: Line too long (108/100)

(C0301)


[convention] 92-92: Missing class docstring

(C0115)


98-121: Comprehensive feedback model structure

The FeedbackModel class provides a well-designed structure for capturing all necessary feedback elements including line references, credit allocation, and grading instruction mapping. The field descriptions are clear and the optional typing is appropriate.

🧰 Tools
🪛 Pylint (3.3.7)

[convention] 100-100: Line too long (130/100)

(C0301)


[convention] 103-103: Line too long (124/100)

(C0301)


[convention] 109-109: Line too long (109/100)

(C0301)


[convention] 112-112: Line too long (107/100)

(C0301)


[convention] 119-119: Line too long (111/100)

(C0301)


[convention] 98-98: Missing class docstring

(C0115)


[refactor] 98-98: Too few public methods (0/2)

(R0903)

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@ahmetsenturk ahmetsenturk marked this pull request as ready for review May 30, 2025 11:50
@ahmetsenturk ahmetsenturk requested a review from a team as a code owner May 30, 2025 11:50
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (5)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py (2)

5-65: Review the prompt template for clarity and consistency.

The system message is comprehensive and well-structured. However, there are a few areas that could be improved:

  1. Line 30: The instruction "Tell them 'Go over this subject/topic'" is somewhat vague
  2. Lines 41-47: The guidelines section has good coverage but could benefit from consistent formatting
  3. Line 69: There's an escaped quote that might cause formatting issues

Consider this refinement for better clarity:

-        - Review Concept: When student faces conceptual misunderstandings; suggest them to revisit foundational material. Tell them "Go over this subject/topic" without explaining/revealing answer.
+        - Review Concept: When student faces conceptual misunderstandings; suggest them to revisit foundational material. Provide specific topics to review without explaining/revealing the answer.

And fix the escaped quote:

-Student\'s submission to grade (with sentence numbers <number>: <sentence>):
+Student's submission to grade (with sentence numbers <number>: <sentence>):

96-118: Consider validation for line number consistency.

The FeedbackModel is well-structured, but there's no validation to ensure line_start <= line_end when both are provided.

Add a validator to ensure line number consistency:

from pydantic import BaseModel, Field, validator

class FeedbackModel(BaseModel):
    # ... existing fields ...
    
+    @validator('line_end')
+    def validate_line_range(cls, v, values):
+        if v is not None and values.get('line_start') is not None:
+            if v < values['line_start']:
+                raise ValueError('line_end must be greater than or equal to line_start')
+        return v
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_profiler.py (3)

42-47: Fix the escaped quote for consistency.

Similar to the other file, there's an escaped quote that should be corrected.

-Student\'s submission to grade (with sentence numbers <number>: <sentence>):
+Student's submission to grade (with sentence numbers <number>: <sentence>):

51-60: Clarify the docstring and available features.

The docstring lists many features that may not all be relevant or available in this specific prompt context.

Consider simplifying the docstring to reflect actual usage:

class ProfilerPrompt(BaseModel):
-    """\
-Features available: **{problem_statement}**, **{example_solution}**, **{grading_instructions}**, **{max_points}**, **{bonus_points}**, **{submission}**, **{practical_theoretical}**, **{creative_guidance}**, **{followup_summary}**, **{brief_detailed}**
-
-_Note: **{problem_statement}**, **{example_solution}**, or **{grading_instructions}** might be omitted if the input is too long._\
-"""
+    """
+    Prompt structure for competency profiling.
+    
+    Template variables: problem_statement, example_solution, grading_instructions, submission.
+    Note: Some variables might be omitted if input is too long.
+    """

95-109: Consider validation for line number consistency.

Similar to the feedback model, this could benefit from line range validation.

Add the same line validation as suggested for the feedback model:

from pydantic import BaseModel, Field, validator

class CompetencyEvaluation(BaseModel):
    # ... existing fields ...
    
+    @validator('line_end')
+    def validate_line_range(cls, v, values):
+        if v is not None and values.get('line_start') is not None:
+            if v < values['line_start']:
+                raise ValueError('line_end must be greater than or equal to line_start')
+        return v
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 36b57ff and 5e42977.

📒 Files selected for processing (5)
  • athena/modules/text/module_text_llm/module_text_llm/config.py (1 hunks)
  • athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/__init__.py (1 hunks)
  • athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/generate_suggestions.py (1 hunks)
  • athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py (1 hunks)
  • athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_profiler.py (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/__init__.py (5)
athena/modules/text/module_text_llm/module_text_llm/approach_config.py (1)
  • ApproachConfig (6-16)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py (1)
  • GenerateSuggestionsPrompt (78-86)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_profiler.py (1)
  • ProfilerPrompt (51-60)
athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/generate_suggestions.py (1)
  • generate_suggestions (18-128)
athena/athena/athena/schemas/learner_profile.py (1)
  • LearnerProfile (5-97)
⏰ Context from checks skipped due to timeout of 90000ms (13)
  • GitHub Check: build_image (athena/assessment_module_manager)
  • GitHub Check: build_image (athena/modules/modeling/module_modeling_llm)
  • GitHub Check: build_image (athena/modules/programming/module_programming_winnowing)
  • GitHub Check: build_image (athena/modules/text/module_text_cofee)
  • GitHub Check: build_image (athena/modules/text/module_text_llm)
  • GitHub Check: build_image (athena/modules/programming/module_programming_apted)
  • GitHub Check: build_image (athena/playground)
  • GitHub Check: build_image (athena/modules/programming/module_example)
  • GitHub Check: build_image (athena/log_viewer)
  • GitHub Check: build_image (athena/modules/programming/module_programming_llm)
  • GitHub Check: build_image (athena/modules/programming/module_programming_themisml)
  • GitHub Check: test
  • GitHub Check: prospector
🔇 Additional comments (10)
athena/modules/text/module_text_llm/module_text_llm/config.py (1)

10-10: LGTM!

The integration of LLMAsProfilerConfig into the configuration framework follows the established pattern and is implemented correctly.

Also applies to: 13-13

athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_generate_feedback.py (3)

1-4: LGTM! Clean imports.

The imports are well-organized and include all necessary components for the Pydantic models and enums.


90-93: LGTM! Well-defined enum for suggested actions.

The SuggestedAction enum is clearly defined with descriptive values that align with the pedagogical approach described in the system message.


121-124: LGTM! Clean aggregation model.

The AssessmentModel provides a clear structure for collecting multiple feedback items.

athena/modules/text/module_text_llm/module_text_llm/llm_as_profiler/prompt_profiler.py (6)

1-4: LGTM! Proper imports.

The imports are correctly ordered and include all necessary components.


6-39: Excellent educational framework alignment.

The system message demonstrates strong pedagogical understanding by:

  • Properly implementing Bloom's taxonomy cognitive levels
  • Providing clear competency evaluation criteria
  • Emphasizing evidence-based assessment

The instructions are comprehensive and educationally sound.


65-69: LGTM! Well-ordered competency status enum.

The CompetencyStatus enum is logically ordered from lowest to highest demonstration level, which makes sense for evaluation progression.


72-78: Excellent Bloom's taxonomy implementation.

The CognitiveLevel enum correctly implements Bloom's taxonomy in the proper hierarchical order from basic recall to complex creation.


81-92: LGTM! Comprehensive competency definition.

The RequiredCompetency model effectively captures the essential elements needed for competency tracking with proper optional fields.


112-116: LGTM! Clean profile aggregation.

The SubmissionCompetencyProfile provides a clear structure for collecting all competency evaluations.

@ahmetsenturk ahmetsenturk moved this from In progress to In review in Athena May 30, 2025
@LeonWehrhahn LeonWehrhahn added the deploy:athena-test1 Athena Test Server 1 label Jun 4, 2025
@github-actions github-actions bot added lock:athena-test1 Is currently deployed to Athena Test Server 1 and removed deploy:athena-test1 Athena Test Server 1 labels Jun 4, 2025
@LeonWehrhahn LeonWehrhahn removed the lock:athena-test1 Is currently deployed to Athena Test Server 1 label Jun 5, 2025
Copy link

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions bot added the stale label Jun 12, 2025
@github-actions github-actions bot removed the stale label Jun 16, 2025
Copy link

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: In review
Development

Successfully merging this pull request may close these issues.

2 participants