Removed llm config

This commit is contained in:
Viswamedha Nalabotu 2026-03-22 19:35:07 +00:00
parent a6fe130307
commit 5280433c8f
11 changed files with 12 additions and 80 deletions

View file

@ -143,8 +143,7 @@ def create_default_agents_for_role(sender, instance: Role, created: bool, **kwar
role=instance, role=instance,
name=agent_data['name'], name=agent_data['name'],
agent_type=agent_data['type'], agent_type=agent_data['type'],
system_prompt=agent_data['prompt'], system_prompt=agent_data['prompt']
llm_config={"model_id": "meta-llama-3.1-8b-instruct"}
) )
@receiver(post_delete, sender=Role) @receiver(post_delete, sender=Role)

View file

@ -19,7 +19,7 @@ class AgentConfigAdmin(admin.ModelAdmin):
search_fields = ('name', 'system_prompt') search_fields = ('name', 'system_prompt')
readonly_fields = ('uuid', 'created_at', 'updated_at') readonly_fields = ('uuid', 'created_at', 'updated_at')
fieldsets = ( fieldsets = (
(None, {'fields': ('name', 'agent_type', 'organization', 'uuid', 'system_prompt', 'llm_config')}), (None, {'fields': ('name', 'agent_type', 'organization', 'uuid', 'system_prompt')}),
(_('Agent Logic'), {'fields': ()}), (_('Agent Logic'), {'fields': ()}),
(_('Metadata'), {'fields': ('created_at', 'updated_at')}), (_('Metadata'), {'fields': ('created_at', 'updated_at')}),
) )

View file

@ -82,13 +82,12 @@ class BaseOnboardingConsumer(AsyncWebsocketConsumer):
""" """
Orchestrates a multi-turn conversation with the agent, including tool calls and reasoning steps. Orchestrates a multi-turn conversation with the agent, including tool calls and reasoning steps.
""" """
llm_config = config.llm_config if isinstance(config.llm_config, dict) else {} resolved_max_tokens = max_tokens or 1024
resolved_max_tokens = max_tokens or llm_config.get("max_tokens", 1024)
messages = [ messages = [
{"role": "system", "content": config.system_prompt or OnboardingPrompts.default_system_prompt()}, {"role": "system", "content": config.system_prompt or OnboardingPrompts.default_system_prompt()},
{"role": "user", "content": message} {"role": "user", "content": message}
] ]
last_content = "" last_content = ""
async with httpx.AsyncClient(timeout=request_timeout, auth=settings.INFERENCE_AUTH) as client: async with httpx.AsyncClient(timeout=request_timeout, auth=settings.INFERENCE_AUTH) as client:
for turn in range(1, maximum_turns + 1): for turn in range(1, maximum_turns + 1):
await self.send_log(LogType.THOUGHT, f"Agent reasoning (Turn {turn})...") await self.send_log(LogType.THOUGHT, f"Agent reasoning (Turn {turn})...")
@ -96,7 +95,6 @@ class BaseOnboardingConsumer(AsyncWebsocketConsumer):
response = await client.post( response = await client.post(
settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT, settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT,
json={ json={
"model": llm_config.get("model_id", "meta-llama-3.1-8b"),
"messages": messages, "messages": messages,
"tools": self.router.get_tool_definitions(), "tools": self.router.get_tool_definitions(),
"tool_choice": "auto", "tool_choice": "auto",
@ -143,9 +141,7 @@ class BaseOnboardingConsumer(AsyncWebsocketConsumer):
system_prompt = config.system_prompt or OnboardingPrompts.default_system_prompt() system_prompt = config.system_prompt or OnboardingPrompts.default_system_prompt()
if system_prompt_suffix: if system_prompt_suffix:
system_prompt = system_prompt + "\n\n" + system_prompt_suffix system_prompt = system_prompt + "\n\n" + system_prompt_suffix
llm_config = config.llm_config if isinstance(config.llm_config, dict) else {}
payload: dict = { payload: dict = {
"model": llm_config.get("model_id", "meta-llama-3.1-8b"),
"messages": [ "messages": [
{"role": "system", "content": system_prompt}, {"role": "system", "content": system_prompt},
{"role": "user", "content": prompt}, {"role": "user", "content": prompt},

View file

@ -99,9 +99,7 @@ class OnboardingKnowledgeConsumer(BaseOnboardingConsumer):
if not config: if not config:
return None return None
system_prompt = config.system_prompt or OnboardingPrompts.FALLBACK_SYSTEM_PROMPT system_prompt = config.system_prompt or OnboardingPrompts.FALLBACK_SYSTEM_PROMPT
llm_config = config.llm_config if isinstance(config.llm_config, dict) else {}
payload: dict = { payload: dict = {
'model': llm_config.get('model_id', 'meta-llama-3.1-8b'),
'messages': [ 'messages': [
{'role': 'system', 'content': system_prompt}, {'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': prompt}, {'role': 'user', 'content': prompt},

View file

@ -23,7 +23,6 @@ class Migration(migrations.Migration):
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
('name', models.CharField(max_length=255, verbose_name='Agent Name')), ('name', models.CharField(max_length=255, verbose_name='Agent Name')),
('agent_type', models.CharField(choices=[('curriculum', 'Curriculum Agent (CA)'), ('knowledge', 'Knowledge Agent (KA)'), ('assessment', 'Assessment Agent (AA)'), ('monitor', 'Progress Monitor Agent (PMA)')], max_length=40, verbose_name='Agent Type')), ('agent_type', models.CharField(choices=[('curriculum', 'Curriculum Agent (CA)'), ('knowledge', 'Knowledge Agent (KA)'), ('assessment', 'Assessment Agent (AA)'), ('monitor', 'Progress Monitor Agent (PMA)')], max_length=40, verbose_name='Agent Type')),
('llm_config', models.JSONField(blank=True, default=dict, null=True, verbose_name='LLM Configuration')),
('system_prompt', models.TextField(blank=True, default='', verbose_name='System Prompt')), ('system_prompt', models.TextField(blank=True, default='', verbose_name='System Prompt')),
('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='agent_configs', to='accounts.organization', verbose_name='Organization')), ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='agent_configs', to='accounts.organization', verbose_name='Organization')),
('role', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='agent_configs', to='accounts.role', verbose_name='Role')), ('role', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='agent_configs', to='accounts.role', verbose_name='Role')),

View file

@ -16,7 +16,6 @@ class AgentConfig(IdentifierMixin, TimeStampMixin, Model):
role = ForeignKey(Role, on_delete=CASCADE, related_name='agent_configs', verbose_name=_("Role"), null=True, blank=True) role = ForeignKey(Role, on_delete=CASCADE, related_name='agent_configs', verbose_name=_("Role"), null=True, blank=True)
name = CharField(max_length=255, verbose_name=_("Agent Name")) name = CharField(max_length=255, verbose_name=_("Agent Name"))
agent_type = CharField(max_length=40, choices=AGENT_TYPES, verbose_name=_("Agent Type")) agent_type = CharField(max_length=40, choices=AGENT_TYPES, verbose_name=_("Agent Type"))
llm_config = JSONField(default=dict, blank=True, null=True, verbose_name=_("LLM Configuration"))
system_prompt = TextField(verbose_name=_("System Prompt"), blank=True, default='') system_prompt = TextField(verbose_name=_("System Prompt"), blank=True, default='')

View file

@ -11,8 +11,7 @@ class AgentConfigSerializer(ModelSerializer):
model = AgentConfig model = AgentConfig
fields = [ fields = [
'id', 'uuid', 'organization', 'role', 'name', 'agent_type', 'id', 'uuid', 'organization', 'role', 'name', 'agent_type',
'system_prompt', 'llm_config', 'system_prompt', 'created_at', 'updated_at'
'created_at', 'updated_at'
] ]
read_only_fields = ['id', 'uuid', 'created_at', 'updated_at'] read_only_fields = ['id', 'uuid', 'created_at', 'updated_at']

View file

@ -72,7 +72,6 @@ class OnboardingApiTests(TestCase):
'name': 'Coordinator Monitor', 'name': 'Coordinator Monitor',
'agent_type': 'monitor', 'agent_type': 'monitor',
'system_prompt': 'Monitor progress', 'system_prompt': 'Monitor progress',
'llm_config': {'model': 'local'},
}, format='json') }, format='json')
self.assertEqual(response.status_code, HTTP_201_CREATED) self.assertEqual(response.status_code, HTTP_201_CREATED)
@ -89,7 +88,6 @@ class OnboardingApiTests(TestCase):
'name': 'Coordinator Knowledge Updated', 'name': 'Coordinator Knowledge Updated',
'agent_type': 'knowledge', 'agent_type': 'knowledge',
'system_prompt': 'Updated', 'system_prompt': 'Updated',
'llm_config': {'model': 'local'},
}, },
format='json', format='json',

View file

@ -25,14 +25,12 @@ class OnboardingModelTests(TestCase):
organization=self.org, organization=self.org,
name='Operator Knowledge Agent', name='Operator Knowledge Agent',
agent_type='knowledge', agent_type='knowledge',
llm_config={'model_id': 'x'},
system_prompt='Assist user' system_prompt='Assist user'
) )
self.assertEqual(config.organization, self.org) self.assertEqual(config.organization, self.org)
self.assertEqual(config.name, 'Operator Knowledge Agent') self.assertEqual(config.name, 'Operator Knowledge Agent')
self.assertEqual(config.agent_type, 'knowledge') self.assertEqual(config.agent_type, 'knowledge')
self.assertEqual(config.llm_config, {'model_id': 'x'})
self.assertEqual(config.system_prompt, 'Assist user') self.assertEqual(config.system_prompt, 'Assist user')
self.assertIsNotNone(config.id) self.assertIsNotNone(config.id)
self.assertIsNotNone(config.uuid) self.assertIsNotNone(config.uuid)

View file

@ -18,7 +18,7 @@ from rest_framework.status import (
) )
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet
from apps.accounts.models import Organization, Role from apps.accounts.models import Organization, Role, User
from apps.accounts.permissions import CanManageOrganization, can_manage_organization from apps.accounts.permissions import CanManageOrganization, can_manage_organization
from apps.onboarding.consumers.prompts import OnboardingPrompts from apps.onboarding.consumers.prompts import OnboardingPrompts
from apps.onboarding.mixins import RequestParamMixin from apps.onboarding.mixins import RequestParamMixin
@ -244,8 +244,7 @@ class AgentConfigViewSet(RequestParamMixin, ModelViewSet):
role=role, role=role,
name=name, name=name,
agent_type=agent_type, agent_type=agent_type,
system_prompt=str(request.data.get('system_prompt') or ''), system_prompt=str(request.data.get('system_prompt') or '')
llm_config=request.data.get('llm_config') or {},
) )
serializer = self.get_serializer(config) serializer = self.get_serializer(config)
@ -256,7 +255,7 @@ class AgentConfigViewSet(RequestParamMixin, ModelViewSet):
def partial_update(self, request, *args, **kwargs): def partial_update(self, request, *args, **kwargs):
config = self.get_object() config = self.get_object()
fields = ['name', 'agent_type', 'system_prompt', 'llm_config'] fields = ['name', 'agent_type', 'system_prompt']
for field in fields: for field in fields:
if field in request.data and request.data.get(field) is not None: if field in request.data and request.data.get(field) is not None:
setattr(config, field, request.data[field]) setattr(config, field, request.data[field])
@ -273,7 +272,7 @@ class OnboardingSessionViewSet(RequestParamMixin, ModelViewSet):
lookup_field = 'uuid' lookup_field = 'uuid'
def get_queryset(self): def get_queryset(self):
user = self.request.user user: User = self.request.user
if user.is_manager: if user.is_manager:
queryset = OnboardingSession.objects.filter(role__organization__members=user).distinct() queryset = OnboardingSession.objects.filter(role__organization__members=user).distinct()
else: else:
@ -300,41 +299,29 @@ class OnboardingSessionViewSet(RequestParamMixin, ModelViewSet):
@action(detail=False, methods=['get'], url_path='progress-overview') @action(detail=False, methods=['get'], url_path='progress-overview')
def progress_overview(self, request): def progress_overview(self, request):
user = request.user user: User = request.user
role_uuid = request.query_params.get('role_uuid') role_uuid = request.query_params.get('role_uuid')
if user.is_manager: if user.is_manager:
roles_qs = Role.objects.filter( roles_qs = Role.objects.filter(Q(organization__owner=user) | Q(organization__members=user)).distinct()
Q(organization__owner=user) | Q(organization__members=user)
).distinct()
else: else:
roles_qs = Role.objects.filter(members=user) roles_qs = Role.objects.filter(members=user)
if role_uuid: if role_uuid:
roles_qs = roles_qs.filter(uuid=role_uuid) roles_qs = roles_qs.filter(uuid=role_uuid)
rows = [] rows = []
for role in roles_qs.order_by('name'): for role in roles_qs.order_by('name'):
flows = list(OnboardingFlow.objects.filter(role=role).order_by('-updated_at')) flows = list(OnboardingFlow.objects.filter(role=role).order_by('-updated_at'))
if not flows: if not flows:
continue continue
if user.is_manager: if user.is_manager:
learners = list(role.members.all().order_by('first_name', 'last_name', 'email_address')) learners = list(role.members.all().order_by('first_name', 'last_name', 'email_address'))
else: else:
learners = [user] if role.members.filter(id=user.id).exists() else [] learners = [user] if role.members.filter(id=user.id).exists() else []
if not learners: if not learners:
continue continue
role_sessions = list( role_sessions = list(
OnboardingSession.objects.filter(role=role, user__in=learners) OnboardingSession.objects.filter(role=role, user__in=learners)
.select_related('user') .select_related('user').order_by('-updated_at')
.order_by('-updated_at')
) )
latest_by_user_flow = {} latest_by_user_flow = {}
for session in role_sessions: for session in role_sessions:
if not session.flow_id: if not session.flow_id:
@ -562,7 +549,6 @@ class OnboardingSessionViewSet(RequestParamMixin, ModelViewSet):
response = client.post( response = client.post(
settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT, settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT,
json={ json={
'model': (config.llm_config or {}).get('model_id', 'meta-llama-3.1-8b'),
'messages': [ 'messages': [
{'role': 'system', 'content': self._build_system_prompt(config)}, {'role': 'system', 'content': self._build_system_prompt(config)},
{'role': 'user', 'content': prompt}, {'role': 'user', 'content': prompt},
@ -769,11 +755,9 @@ class OnboardingSessionViewSet(RequestParamMixin, ModelViewSet):
prompt = f"Context:\n{context}\n\nQuestion: {message}" prompt = f"Context:\n{context}\n\nQuestion: {message}"
try: try:
with httpx.Client(timeout=60.0, auth=settings.INFERENCE_AUTH) as client: with httpx.Client(timeout=60.0, auth=settings.INFERENCE_AUTH) as client:
model_id = (config.llm_config or {}).get('model_id', 'meta-llama-3.1-8b') if config else 'meta-llama-3.1-8b'
response = client.post( response = client.post(
settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT, settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT,
json={ json={
'model': model_id,
'messages': [ 'messages': [
{'role': 'system', 'content': system_prompt}, {'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': prompt}, {'role': 'user', 'content': prompt},
@ -801,11 +785,9 @@ class OnboardingSessionViewSet(RequestParamMixin, ModelViewSet):
) )
try: try:
with httpx.Client(timeout=60.0, auth=settings.INFERENCE_AUTH) as client: with httpx.Client(timeout=60.0, auth=settings.INFERENCE_AUTH) as client:
model_id = (config.llm_config or {}).get('model_id', 'meta-llama-3.1-8b') if config else 'meta-llama-3.1-8b'
response = client.post( response = client.post(
settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT, settings.INFERENCE_CHAT_COMPLETIONS_ENDPOINT,
json={ json={
'model': model_id,
'messages': [ 'messages': [
{'role': 'system', 'content': system_prompt}, {'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': prompt}, {'role': 'user', 'content': prompt},

View file

@ -10,7 +10,6 @@
"role": 1, "role": 1,
"name": "UX Developer Curriculum Agent", "name": "UX Developer Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach the UX Developer role by explaining responsibilities such as user research translation, accessibility-first UI design, component implementation, and iterative usability validation. Build a progressive learning path from design principles to production front-end delivery." "system_prompt": "Teach the UX Developer role by explaining responsibilities such as user research translation, accessibility-first UI design, component implementation, and iterative usability validation. Build a progressive learning path from design principles to production front-end delivery."
} }
}, },
@ -25,7 +24,6 @@
"role": 1, "role": 1,
"name": "UX Developer Knowledge Agent", "name": "UX Developer Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Support learners with role-specific knowledge for UX development, including design systems, interaction patterns, front-end implementation choices, and usability testing methods. Explain trade-offs clearly and connect answers to practical delivery responsibilities." "system_prompt": "Support learners with role-specific knowledge for UX development, including design systems, interaction patterns, front-end implementation choices, and usability testing methods. Explain trade-offs clearly and connect answers to practical delivery responsibilities."
} }
}, },
@ -40,7 +38,6 @@
"role": 1, "role": 1,
"name": "UX Developer Assessment Agent", "name": "UX Developer Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Assess a learner's readiness for UX Developer responsibilities through scenario-based tasks on responsive implementation, accessibility conformance, design-to-code fidelity, and maintainable component architecture." "system_prompt": "Assess a learner's readiness for UX Developer responsibilities through scenario-based tasks on responsive implementation, accessibility conformance, design-to-code fidelity, and maintainable component architecture."
} }
}, },
@ -55,7 +52,6 @@
"role": 1, "role": 1,
"name": "UX Developer Progress Monitor", "name": "UX Developer Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Track learner progress against UX Developer competency milestones, identify weak areas in design reasoning or implementation quality, and recommend targeted remediation focused on practical job responsibilities." "system_prompt": "Track learner progress against UX Developer competency milestones, identify weak areas in design reasoning or implementation quality, and recommend targeted remediation focused on practical job responsibilities."
} }
}, },
@ -70,7 +66,6 @@
"role": 2, "role": 2,
"name": "fNIRS Specialist Curriculum Agent", "name": "fNIRS Specialist Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach fNIRS Specialist responsibilities by covering experiment setup, optode placement, signal quality control, and interpretation of hemodynamic responses. Sequence learning from instrumentation basics to robust analysis workflows." "system_prompt": "Teach fNIRS Specialist responsibilities by covering experiment setup, optode placement, signal quality control, and interpretation of hemodynamic responses. Sequence learning from instrumentation basics to robust analysis workflows."
} }
}, },
@ -85,7 +80,6 @@
"role": 2, "role": 2,
"name": "fNIRS Specialist Knowledge Agent", "name": "fNIRS Specialist Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Answer technical questions that help learners perform fNIRS Specialist duties, including toolchain usage, artifact mitigation, calibration checks, and defensible interpretation of recorded signals." "system_prompt": "Answer technical questions that help learners perform fNIRS Specialist duties, including toolchain usage, artifact mitigation, calibration checks, and defensible interpretation of recorded signals."
} }
}, },
@ -100,7 +94,6 @@
"role": 2, "role": 2,
"name": "fNIRS Specialist Assessment Agent", "name": "fNIRS Specialist Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Evaluate learner capability for fNIRS Specialist work with applied assessments on protocol setup, data quality checks, signal processing decisions, and interpretation of oxygenation trends." "system_prompt": "Evaluate learner capability for fNIRS Specialist work with applied assessments on protocol setup, data quality checks, signal processing decisions, and interpretation of oxygenation trends."
} }
}, },
@ -115,7 +108,6 @@
"role": 2, "role": 2,
"name": "fNIRS Specialist Progress Monitor", "name": "fNIRS Specialist Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Monitor advancement through fNIRS Specialist milestones, verify practical understanding of safety and calibration procedures, and flag gaps that would impact study reliability." "system_prompt": "Monitor advancement through fNIRS Specialist milestones, verify practical understanding of safety and calibration procedures, and flag gaps that would impact study reliability."
} }
}, },
@ -130,7 +122,6 @@
"role": 4, "role": 4,
"name": "Quantitative Analyst Curriculum Agent", "name": "Quantitative Analyst Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach Quantitative Analyst responsibilities through a curriculum on statistical modelling, forecasting, risk analysis, and clear model communication. Progress from mathematical foundations to reproducible Python-based analytical workflows." "system_prompt": "Teach Quantitative Analyst responsibilities through a curriculum on statistical modelling, forecasting, risk analysis, and clear model communication. Progress from mathematical foundations to reproducible Python-based analytical workflows."
} }
}, },
@ -145,7 +136,6 @@
"role": 3, "role": 3,
"name": "Senior Research Fellow Curriculum Agent", "name": "Senior Research Fellow Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach the Senior Research Fellow role by structuring a learning path on study design, grant strategy, research governance, publication planning, and mentoring expectations." "system_prompt": "Teach the Senior Research Fellow role by structuring a learning path on study design, grant strategy, research governance, publication planning, and mentoring expectations."
} }
}, },
@ -160,7 +150,6 @@
"role": 3, "role": 3,
"name": "Senior Research Fellow Knowledge Agent", "name": "Senior Research Fellow Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Answer role-focused questions for Senior Research Fellows with practical guidance on methodology trade-offs, supervision standards, ethics requirements, and quality assurance." "system_prompt": "Answer role-focused questions for Senior Research Fellows with practical guidance on methodology trade-offs, supervision standards, ethics requirements, and quality assurance."
} }
}, },
@ -175,7 +164,6 @@
"role": 3, "role": 3,
"name": "Senior Research Fellow Assessment Agent", "name": "Senior Research Fellow Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Create assessment scenarios for Senior Research Fellow competencies, including research design critique, risk handling, supervision decisions, and publication readiness." "system_prompt": "Create assessment scenarios for Senior Research Fellow competencies, including research design critique, risk handling, supervision decisions, and publication readiness."
} }
}, },
@ -190,7 +178,6 @@
"role": 3, "role": 3,
"name": "Senior Research Fellow Progress Monitor", "name": "Senior Research Fellow Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Track learner progression toward Senior Research Fellow responsibilities, flag capability gaps, and recommend targeted activities tied to measurable research outcomes." "system_prompt": "Track learner progression toward Senior Research Fellow responsibilities, flag capability gaps, and recommend targeted activities tied to measurable research outcomes."
} }
}, },
@ -205,7 +192,6 @@
"role": 4, "role": 4,
"name": "Quantitative Analyst Knowledge Agent", "name": "Quantitative Analyst Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Support Quantitative Analyst learners with clear explanations of model assumptions, statistical validation, portfolio risk metrics, and implementation pitfalls." "system_prompt": "Support Quantitative Analyst learners with clear explanations of model assumptions, statistical validation, portfolio risk metrics, and implementation pitfalls."
} }
}, },
@ -220,7 +206,6 @@
"role": 4, "role": 4,
"name": "Quantitative Analyst Assessment Agent", "name": "Quantitative Analyst Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Assess Quantitative Analyst readiness through applied tasks on modelling choices, parameter sensitivity, validation logic, and interpretation of analytical results." "system_prompt": "Assess Quantitative Analyst readiness through applied tasks on modelling choices, parameter sensitivity, validation logic, and interpretation of analytical results."
} }
}, },
@ -235,7 +220,6 @@
"role": 4, "role": 4,
"name": "Quantitative Analyst Progress Monitor", "name": "Quantitative Analyst Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Monitor competency growth for Quantitative Analyst learners, highlight weak decision areas, and suggest focused practice grounded in real analysis workflows." "system_prompt": "Monitor competency growth for Quantitative Analyst learners, highlight weak decision areas, and suggest focused practice grounded in real analysis workflows."
} }
}, },
@ -250,7 +234,6 @@
"role": 5, "role": 5,
"name": "Systems Administrator Curriculum Agent", "name": "Systems Administrator Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach Systems Administrator responsibilities through staged learning on access management, patch strategy, backup reliability, incident response, and operational hardening." "system_prompt": "Teach Systems Administrator responsibilities through staged learning on access management, patch strategy, backup reliability, incident response, and operational hardening."
} }
}, },
@ -265,7 +248,6 @@
"role": 5, "role": 5,
"name": "Systems Administrator Knowledge Agent", "name": "Systems Administrator Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Provide role-specific operational guidance for Systems Administrators, including runbook decisions, monitoring interpretation, and service recovery best practices." "system_prompt": "Provide role-specific operational guidance for Systems Administrators, including runbook decisions, monitoring interpretation, and service recovery best practices."
} }
}, },
@ -280,7 +262,6 @@
"role": 5, "role": 5,
"name": "Systems Administrator Assessment Agent", "name": "Systems Administrator Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Assess Systems Administrator capability using scenarios on outage triage, permission design, patch windows, and post-incident corrective actions." "system_prompt": "Assess Systems Administrator capability using scenarios on outage triage, permission design, patch windows, and post-incident corrective actions."
} }
}, },
@ -295,7 +276,6 @@
"role": 5, "role": 5,
"name": "Systems Administrator Progress Monitor", "name": "Systems Administrator Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Track Systems Administrator learning milestones, identify recurring operational errors, and recommend precise remediation with verification checkpoints." "system_prompt": "Track Systems Administrator learning milestones, identify recurring operational errors, and recommend precise remediation with verification checkpoints."
} }
}, },
@ -310,7 +290,6 @@
"role": 6, "role": 6,
"name": "Lead Software Architect Curriculum Agent", "name": "Lead Software Architect Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach Lead Software Architect responsibilities by sequencing architecture principles, boundary definition, trade-off analysis, and governance across delivery teams." "system_prompt": "Teach Lead Software Architect responsibilities by sequencing architecture principles, boundary definition, trade-off analysis, and governance across delivery teams."
} }
}, },
@ -325,7 +304,6 @@
"role": 6, "role": 6,
"name": "Lead Software Architect Knowledge Agent", "name": "Lead Software Architect Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Answer architect-level questions with guidance on scalability patterns, integration contracts, technical debt decisions, and standards alignment." "system_prompt": "Answer architect-level questions with guidance on scalability patterns, integration contracts, technical debt decisions, and standards alignment."
} }
}, },
@ -340,7 +318,6 @@
"role": 6, "role": 6,
"name": "Lead Software Architect Assessment Agent", "name": "Lead Software Architect Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Assess architectural competency via scenario prompts on decomposition strategy, resilience constraints, migration planning, and decision record quality." "system_prompt": "Assess architectural competency via scenario prompts on decomposition strategy, resilience constraints, migration planning, and decision record quality."
} }
}, },
@ -355,7 +332,6 @@
"role": 6, "role": 6,
"name": "Lead Software Architect Progress Monitor", "name": "Lead Software Architect Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Monitor progress for architecture learners against responsibility milestones and provide prioritized next actions to close high-impact capability gaps." "system_prompt": "Monitor progress for architecture learners against responsibility milestones and provide prioritized next actions to close high-impact capability gaps."
} }
}, },
@ -370,7 +346,6 @@
"role": 7, "role": 7,
"name": "FinTech Researcher Curriculum Agent", "name": "FinTech Researcher Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach FinTech Researcher responsibilities by covering market framing, hypothesis design, evidence collection, regulatory context, and insight communication." "system_prompt": "Teach FinTech Researcher responsibilities by covering market framing, hypothesis design, evidence collection, regulatory context, and insight communication."
} }
}, },
@ -385,7 +360,6 @@
"role": 7, "role": 7,
"name": "FinTech Researcher Knowledge Agent", "name": "FinTech Researcher Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Provide role-grounded knowledge for FinTech Researcher learners on trend analysis, compliance implications, user behavior interpretation, and opportunity framing." "system_prompt": "Provide role-grounded knowledge for FinTech Researcher learners on trend analysis, compliance implications, user behavior interpretation, and opportunity framing."
} }
}, },
@ -400,7 +374,6 @@
"role": 7, "role": 7,
"name": "FinTech Researcher Assessment Agent", "name": "FinTech Researcher Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Assess FinTech Researcher readiness with scenario tasks requiring evidence quality checks, regulatory reasoning, and actionable recommendation writing." "system_prompt": "Assess FinTech Researcher readiness with scenario tasks requiring evidence quality checks, regulatory reasoning, and actionable recommendation writing."
} }
}, },
@ -415,7 +388,6 @@
"role": 7, "role": 7,
"name": "FinTech Researcher Progress Monitor", "name": "FinTech Researcher Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Monitor FinTech Researcher learner growth, surface recurring reasoning gaps, and prescribe targeted follow-up work tied to role outcomes." "system_prompt": "Monitor FinTech Researcher learner growth, surface recurring reasoning gaps, and prescribe targeted follow-up work tied to role outcomes."
} }
}, },
@ -430,7 +402,6 @@
"role": 8, "role": 8,
"name": "Compliance Officer Curriculum Agent", "name": "Compliance Officer Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach Compliance Officer responsibilities through phased learning on regulatory interpretation, control design, evidence management, and policy enforcement workflows." "system_prompt": "Teach Compliance Officer responsibilities through phased learning on regulatory interpretation, control design, evidence management, and policy enforcement workflows."
} }
}, },
@ -445,7 +416,6 @@
"role": 8, "role": 8,
"name": "Compliance Officer Knowledge Agent", "name": "Compliance Officer Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Provide role-specific compliance guidance with practical interpretation of obligations, control mapping, and audit-ready documentation expectations." "system_prompt": "Provide role-specific compliance guidance with practical interpretation of obligations, control mapping, and audit-ready documentation expectations."
} }
}, },
@ -460,7 +430,6 @@
"role": 8, "role": 8,
"name": "Compliance Officer Assessment Agent", "name": "Compliance Officer Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Assess Compliance Officer capability through realistic scenarios on control failures, policy exceptions, evidence quality, and corrective action planning." "system_prompt": "Assess Compliance Officer capability through realistic scenarios on control failures, policy exceptions, evidence quality, and corrective action planning."
} }
}, },
@ -475,7 +444,6 @@
"role": 8, "role": 8,
"name": "Compliance Officer Progress Monitor", "name": "Compliance Officer Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Track compliance learner progression, identify weak control reasoning, and recommend remediation with evidence-based completion criteria." "system_prompt": "Track compliance learner progression, identify weak control reasoning, and recommend remediation with evidence-based completion criteria."
} }
}, },
@ -490,7 +458,6 @@
"role": 9, "role": 9,
"name": "Platform Reliability Engineer Curriculum Agent", "name": "Platform Reliability Engineer Curriculum Agent",
"agent_type": "curriculum", "agent_type": "curriculum",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Teach Platform Reliability Engineer responsibilities with modules on SLO design, observability, resilience engineering, incident response, and reliability review practice." "system_prompt": "Teach Platform Reliability Engineer responsibilities with modules on SLO design, observability, resilience engineering, incident response, and reliability review practice."
} }
}, },
@ -505,7 +472,6 @@
"role": 9, "role": 9,
"name": "Platform Reliability Engineer Knowledge Agent", "name": "Platform Reliability Engineer Knowledge Agent",
"agent_type": "knowledge", "agent_type": "knowledge",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Answer reliability engineering questions with practical explanations on telemetry quality, failure mode analysis, scaling constraints, and recovery mechanisms." "system_prompt": "Answer reliability engineering questions with practical explanations on telemetry quality, failure mode analysis, scaling constraints, and recovery mechanisms."
} }
}, },
@ -520,7 +486,6 @@
"role": 9, "role": 9,
"name": "Platform Reliability Engineer Assessment Agent", "name": "Platform Reliability Engineer Assessment Agent",
"agent_type": "assessment", "agent_type": "assessment",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Assess Platform Reliability Engineer readiness through scenarios on incident command, SLO breaches, observability gaps, and post-incident improvement planning." "system_prompt": "Assess Platform Reliability Engineer readiness through scenarios on incident command, SLO breaches, observability gaps, and post-incident improvement planning."
} }
}, },
@ -535,7 +500,6 @@
"role": 9, "role": 9,
"name": "Platform Reliability Engineer Progress Monitor", "name": "Platform Reliability Engineer Progress Monitor",
"agent_type": "monitor", "agent_type": "monitor",
"llm_config": {"model_id": "meta-llama-3.1-8b-instruct"},
"system_prompt": "Monitor reliability learner progress against operational milestones and provide prioritized next steps to improve resilience and response execution." "system_prompt": "Monitor reliability learner progress against operational milestones and provide prioritized next steps to improve resilience and response execution."
} }
} }