feat(*): Add further tools

This commit is contained in:
Josh Creek
2025-04-21 10:33:26 +01:00
parent 98ff117f73
commit 839e1183a6
7 changed files with 105 additions and 6 deletions
+28 -6
View File
@@ -1,10 +1,18 @@
import { DefaultAzureCredential } from '@azure/identity';
import { AIProjectsClient } from '@azure/ai-projects';
import { rubricMatcherTool } from '../tools/rubricMatcherTool';
import { essayAnalyzerTool } from '../tools/essayAnalyzerTool';
import { ToolUtility } from '@azure/ai-projects';
import { AI_FOUNDRY_PROJECT_CONNECTION_STRING, AI_MODEL } from '$env/static/private';
import {
rubricMatcherTool,
essayAnalyzerTool,
conceptVerifierTool,
feedbackGeneratorTool,
metacognitiveReflectionPromptTool,
selfAssessmentTool,
spellingAndGrammarCheckerTool
} from '../tools/index';
const connectionString = AI_FOUNDRY_PROJECT_CONNECTION_STRING;
if (!connectionString) {
throw new Error('AI_FOUNDRY_PROJECT_CONNECTION_STRING is not set in environment variables');
@@ -22,18 +30,32 @@ const client = AIProjectsClient.fromConnectionString(
const codeInterpreterTool = ToolUtility.createCodeInterpreterTool([]);
const tools = [codeInterpreterTool.definition, rubricMatcherTool.definition, essayAnalyzerTool.definition];
const tools = [
codeInterpreterTool.definition,
rubricMatcherTool.definition,
essayAnalyzerTool.definition,
conceptVerifierTool.definition,
feedbackGeneratorTool.definition,
metacognitiveReflectionPromptTool.definition,
selfAssessmentTool.definition,
spellingAndGrammarCheckerTool.definition
];
const instructions = "You are a helpful agent that can assist with providing feedback on a student's work for a teacher.";
const instructions = "You are a helpful agent that can assist with providing feedback on a student's work for a teacher. You are familiar with all modern pedagogy around summative and formative assessment, and K12 education, and primary and secondary education.";
const toolResources = {
...codeInterpreterTool.resources,
matchRubric: {},
analyzeEssay: {}
analyzeEssay: {},
conceptVerifier: {},
feedbackGenerator: {},
metacognitiveReflectionPrompt: {},
selfAssessment: {},
spellingAndGrammarChecker: {}
};
const agent = await client.agents.createAgent(aiModel, {
name: `agent-assessment-feedback`,
name: `assessment-feedback-agent`,
instructions,
temperature: 0.5,
tools,
@@ -0,0 +1,14 @@
import { ToolUtility } from '@azure/ai-projects';
export const conceptVerifierTool = ToolUtility.createFunctionTool({
name: 'verifyConceptCoverage',
description: 'Checks which rubriclisted concepts appear (or are missing) in the submission.',
parameters: {
type: 'object',
properties: {
submission: { type: 'string' },
rubric: { type: 'string' }
},
required: ['submission', 'rubric']
}
});
@@ -0,0 +1,14 @@
import { ToolUtility } from '@azure/ai-projects';
export const feedbackGeneratorTool = ToolUtility.createFunctionTool({
name: 'generateFeedback',
description: 'Produces two praise points and two actionable “try next time” suggestions based on submission and rubric.',
parameters: {
type: 'object',
properties: {
submission: { type: 'string' },
rubric: { type: 'string' }
},
required: ['submission', 'rubric']
}
});
+7
View File
@@ -0,0 +1,7 @@
export { rubricMatcherTool } from './rubricMatcherTool';
export { essayAnalyzerTool } from './essayAnalyzerTool';
export { conceptVerifierTool } from './conceptVerifierTool';
export { feedbackGeneratorTool } from './feedbackGeneratorTool';
export { metacognitiveReflectionPromptTool } from './metacognitiveReflectionPromptTool';
export { selfAssessmentTool } from './selfAssessmentTool';
export { spellingAndGrammarCheckerTool } from './spellingAndGrammarCheckerTool';
@@ -0,0 +1,14 @@
import { ToolUtility } from '@azure/ai-projects';
export const metacognitiveReflectionPromptTool = ToolUtility.createFunctionTool({
name: 'generateReflectionPrompts',
description: 'Based on rubric shortfalls, generates prompts like “How could you strengthen your evidence in paragraph 2?”',
parameters: {
type: 'object',
properties: {
submission: { type: 'string' },
rubric: { type: 'string' }
},
required: ['submission', 'rubric']
}
});
+14
View File
@@ -0,0 +1,14 @@
import { ToolUtility } from '@azure/ai-projects';
export const selfAssessmentTool = ToolUtility.createFunctionTool({
name: 'createSelfAssessment',
description: 'Generates 3 short questions that prompt the student to reflect on their own work based on rubric gaps.',
parameters: {
type: 'object',
properties: {
submission: { type: 'string' },
rubric: { type: 'string' }
},
required: ['submission', 'rubric']
}
});
@@ -0,0 +1,14 @@
import { ToolUtility } from '@azure/ai-projects';
export const spellingAndGrammarCheckerTool = ToolUtility.createFunctionTool({
name: 'checkSpellingAndGrammar',
description: 'Identifies spelling, punctuation, and syntax issues in the submission and suggests corrections.',
parameters: {
type: 'object',
properties: {
submission: { type: 'string', description: 'The student submission text' },
rubric: { type: 'string', description: 'The rubric or task description (for contextual tone adjustments)' }
},
required: ['submission']
}
});