AI generated first iteration
This commit is contained in:
64
app/agent/modes/librarian.py
Normal file
64
app/agent/modes/librarian.py
Normal file
@@ -0,0 +1,64 @@
|
||||
"""Librarian Mode - Archives and categorizes important discussion."""
|
||||
|
||||
import logging
|
||||
from app.llm.client import LLMClient
|
||||
from app.llm.prompts import PromptTemplates
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class LibrarianMode:
|
||||
"""
|
||||
Librarian - The keeper of knowledge and archives.
|
||||
|
||||
Purpose:
|
||||
- Identifies and catalogs important discussion points
|
||||
- Creates summaries of key topics
|
||||
- Builds context for future reference
|
||||
- Prepares data for blog and clip exports
|
||||
|
||||
Policy:
|
||||
- Runs passively, always monitoring
|
||||
- Tags messages by topic/sentiment
|
||||
- Creates discussion threads
|
||||
- Identifies "clip-worthy" moments
|
||||
- Feeds data to Scribe for final export
|
||||
"""
|
||||
|
||||
def __init__(self, llm_client: LLMClient):
|
||||
"""Initialize Librarian mode."""
|
||||
self.llm_client = llm_client
|
||||
self.archived_messages: list[dict] = []
|
||||
self.topics: dict[str, list[str]] = {}
|
||||
|
||||
async def archive_message(self, message_id: str, content: str, username: str) -> None:
|
||||
"""Archive an important message."""
|
||||
self.archived_messages.append(
|
||||
{
|
||||
"id": message_id,
|
||||
"content": content,
|
||||
"username": username,
|
||||
}
|
||||
)
|
||||
logger.debug(f"Librarian archived message from {username}")
|
||||
|
||||
async def identify_topics(self, messages: list[str]) -> list[str]:
|
||||
"""Identify key topics from a set of messages."""
|
||||
# Placeholder: Would use LLM to extract topics
|
||||
topics = ["general", "technical", "community"]
|
||||
return topics
|
||||
|
||||
async def create_summary(self, topic: str, messages: list[str]) -> str:
|
||||
"""Create a summary of messages under a topic."""
|
||||
prompt = PromptTemplates.librarian_summary(messages)
|
||||
summary = await self.llm_client.generate(prompt, max_tokens=300)
|
||||
logger.info(f"Librarian created summary for topic: {topic}")
|
||||
return summary
|
||||
|
||||
async def get_archives(self) -> dict:
|
||||
"""Get the archive status."""
|
||||
return {
|
||||
"mode": "librarian",
|
||||
"archived_messages": len(self.archived_messages),
|
||||
"topics_tracked": len(self.topics),
|
||||
}
|
||||
Reference in New Issue
Block a user