30 lines
1010 B
Python
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,
|
|
)
|