This commit is contained in:
2025-09-05 19:00:24 +02:00
parent 793213a834
commit 630c6317a1
5 changed files with 331 additions and 44 deletions

View File

@@ -71,6 +71,33 @@ class CharacterAgent:
return response
async def chat_with(self, messages: List[LLMMessage]) -> LLMMessage:
"""Generate reaction based on memory and character"""
# Retrieve relevant memories
relevant_memories = await self.memory_stream.retrieve_related_memories(situation, k=8)
memory_context = "\n".join([f"- {m.description}" for m in relevant_memories])
context = {
'character': self._get_character_prompt(),
'character_name': self.character.name,
'memory_context': memory_context,
'situation': situation}
prompt = PromptManager.get_prompt('react_to_situation', context)
response = await self.llm.chat([{"role": "user", "content": prompt}])
# create new memories from interaction
interaction_context = {
'situation': f'I reacted to: \n{situation}',
'response': f'My response was: \n{response}',
}
prompt, schema = PromptManager.get_prompt_with_schema('extract_interaction_memories', interaction_context)
memories_response = await self.llm.client.get_structured_response([{"role": "user", "content": prompt}], schema)
for new_memory in memories_response['memories']:
await self.perceive(new_memory)
return response
async def plan_day(self) -> List[str]:
"""Generate high-level daily plan"""
# Retrieve relevant memories about goals, habits, schedule
@@ -255,5 +282,7 @@ Summary:"""
memory.importance_score = await instance._score_memory_importance(memory)
await instance._analyze_trait_impact(memory)
instance.character.template_file = template['yaml_file']
logger.info(f"Character {instance.character.name} created successfully")
return instance