too much
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -2,7 +2,7 @@ from dataclasses import dataclass, field
|
||||
from typing import Dict, List, Optional, Literal, TypedDict
|
||||
from datetime import datetime
|
||||
from uuid import uuid4
|
||||
import random
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class CharacterTemplate(TypedDict):
|
||||
@@ -10,7 +10,7 @@ class CharacterTemplate(TypedDict):
|
||||
observations: List[str]
|
||||
reflections: List[str]
|
||||
plans: List[str]
|
||||
yaml_file: str
|
||||
yaml_file: Path
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -72,6 +72,7 @@ class Character:
|
||||
traits: List[CharacterTrait] = field(default_factory=list)
|
||||
relationships: Dict[str, str] = field(default_factory=dict)
|
||||
goals: List[str] = field(default_factory=list)
|
||||
template_file: Optional[Path] = None
|
||||
_id: str = field(default_factory=lambda: str(uuid4())[:8])
|
||||
|
||||
def get_trait(self, trait_name, trait_description) -> CharacterTrait:
|
||||
|
||||
@@ -41,7 +41,6 @@ class MemoryStream:
|
||||
|
||||
# Track for reflection trigger
|
||||
self.recent_importance_sum += memory.importance_score
|
||||
print(f"Recent Importance Sum: {self.recent_importance_sum}")
|
||||
|
||||
# Trigger reflection if threshold exceeded
|
||||
if self.recent_importance_sum >= self.importance_threshold:
|
||||
|
||||
15
living_agents/prompts/chat_with_agent.md
Normal file
15
living_agents/prompts/chat_with_agent.md
Normal file
@@ -0,0 +1,15 @@
|
||||
{{character}}
|
||||
|
||||
Relevant memories from your past:
|
||||
{{memory_context}}
|
||||
|
||||
Respond as {{character_name}} describing what you did and how you reacted. Write in first person past tense as if this
|
||||
just happened to you.
|
||||
|
||||
Examples of the response style:
|
||||
|
||||
- "I looked up from my book and smiled nervously..."
|
||||
- "I felt my heart race and took a deep breath before I said..."
|
||||
- "I hesitated for a moment, then decided to..."
|
||||
|
||||
Stay completely in character and be specific about your actions, thoughts, and words.
|
||||
Reference in New Issue
Block a user