MCPcopy Create free account
hub / github.com/bigdata-ustc/Agent4Edu / simulate_practice

Method simulate_practice

Code/action.py:16–54  ·  view source on GitHub ↗
(self, profile: Profile, memory: Memory, practice: dict[str, Any], step: int)

Source from the content-addressed store, hash-verified

14 self.llm = llm or LLMClient()
15
16 def simulate_practice(self, profile: Profile, memory: Memory, practice: dict[str, Any], step: int) -> dict[str, Any]:
17 true_concept = normalize_concept(practice["know_name"])
18 short_memory = memory.retrieve_short()
19 long_memory = memory.retrieve_long(current_concept=true_concept, time_step=step)
20 options = self._concept_options(memory, true_concept, seed=step + memory.student_id)
21
22 system_prompt = profile.build_prompt() + "\nThe information above is your # profile #."
23 user_prompt = self._build_action_prompt(practice, short_memory, long_memory, options)
24 response = self.llm.call([
25 {"role": "system", "content": system_prompt},
26 {"role": "user", "content": user_prompt},
27 ])
28 parsed = self._parse_tasks(response)
29
30 task_scores = self._score_tasks(practice, parsed)
31 corrective = memory.reflect_corrective(practice, parsed)
32 reflection = self.llm.call([
33 {"role": "system", "content": system_prompt},
34 {"role": "user", "content": Memory.reflection_instruction(corrective)},
35 ])
36
37 record = [practice.get("exer_content", ""), true_concept, int(practice.get("score", 0)), 1]
38 if memory is not None:
39 memory.reinforce(record)
40 memory.update_practiced_knowledge(true_concept)
41 memory.write_long_summary(reflection)
42 memory.forget(step)
43
44 return {
45 "exercise_id": practice.get("exer_id"),
46 "true_score": int(practice.get("score", 0)),
47 "true_concept": true_concept,
48 "concept_options": options,
49 "prompt": user_prompt,
50 "raw_response": response,
51 "parsed_response": parsed,
52 "task_scores": task_scores,
53 "reflection": reflection,
54 }
55
56 def _concept_options(self, memory: Memory, true_concept: str, seed: int) -> list[str]:
57 distractors = memory.relation_graph.sample_distractors(true_concept, k=2, seed=seed)

Callers 1

run_studentFunction · 0.80

Calls 15

_concept_optionsMethod · 0.95
_build_action_promptMethod · 0.95
_parse_tasksMethod · 0.95
_score_tasksMethod · 0.95
normalize_conceptFunction · 0.90
retrieve_shortMethod · 0.80
retrieve_longMethod · 0.80
build_promptMethod · 0.80
callMethod · 0.80
reflect_correctiveMethod · 0.80
reinforceMethod · 0.80

Tested by

no test coverage detected