ducklm/duck_core/reflection.py

30 lines
1010 B
Python

from duck_core.experience.recorder import ExperienceRecorder, ExperienceRecord
from duck_core.model_client import ModelClient
class Reflection:
def __init__(self, model_client: ModelClient, recorder: ExperienceRecorder):
self.model_client = model_client
self.recorder = recorder
async def reflect(self, task_id: str, transcript: str) -> ExperienceRecord:
response = await self.model_client.chat(
"critic",
[
{
"role": "user",
"content": (
"Reflect on this DuckLM task. Cover outcome, waste, JSON/tool issues, "
f"and reusable lesson.\n\n{transcript}"
),
}
],
)
return await self.recorder.record(
task_id=task_id,
summary=response.content[:500],
result="unknown",
reusable_lesson=response.content,
confidence=0.5,
)