Skip to content

Latest commit

 

History

History
153 lines (118 loc) · 5.15 KB

File metadata and controls

153 lines (118 loc) · 5.15 KB

Message Context Display Implementation

Date: 2025-06-16
Status: ✅ Complete
Files Modified: 3

Overview

Implemented rich message context display in the chat interface to provide full transparency into AI agent decision-making processes. Users can now see exactly what context was assembled and sent to LLMs for each assistant message.

Features Added

1. Enhanced Context Assembly (ContextAssembler)

  • New Function: assemble_with_context/1
  • Returns: Both assembled messages AND detailed context breakdown
  • Captures: Component types, priorities, metadata, assembly timestamp
  • Preserves: Original assemble/1 function for backward compatibility

2. Context Storage (ChatAgent)

  • Enhanced Metadata: Now stores both request_payload and context_breakdown
  • Full Context Preservation: Complete LLM request including messages, model, settings
  • Component Tracking: Individual context components with their sources and priorities

3. Rich UI Display (Components)

  • Message Basic Info: Role, timestamp, agent name, token count
  • Context Composition: Component breakdown with types and priorities
  • Full Context View: Complete LLM request with all messages formatted
  • Interactive Sidebar: Click any assistant message to view details

Technical Implementation

ContextAssembler Enhancement

def assemble_with_context(%__MODULE__{} = assembler) do
  sorted_components = assembler.components |> Enum.sort_by(& &1.priority)
  
  %{
    messages: convert_to_messages(sorted_components),
    context_breakdown: %{
      components: sorted_components,
      total_components: length(sorted_components),
      metadata: assembler.metadata,
      assembled_at: DateTime.utc_now()
    }
  }
end

Metadata Storage

enhanced_metadata = %{
  "request_payload" => request_payload,      # Full LLM request
  "context_breakdown" => context_breakdown,  # Component details
  "response_timestamp" => DateTime.utc_now(),
  "agent_name" => persona.name,
  "persona_id" => persona.id,
  "token_count" => count_tokens(response)
}

UI Components

  • message_basic_info/1: Basic message metadata display
  • message_context_breakdown/1: Context component visualization
  • message_full_context/1: Complete LLM request display
  • format_metadata_value/1: Smart metadata formatting

Context Components Displayed

  1. System Message (priority 10)

    • Agent persona system prompt
    • Source: PromptComposition system
  2. Room Context (priority 20)

    • Room metadata and participants
    • Source: Room information
  3. Conversation History (priority 30)

    • Recent message history
    • Source: Message database
  4. User Message (priority 40)

    • Current triggering message
    • Source: User input
  5. Enhanced Components (various priorities)

    • Recent events, known patterns, multi-agent context
    • Source: Context improvements

Usage Instructions

  1. View Context: Click any assistant message in chat
  2. Message Details Sidebar: Opens on right side
  3. Basic Info: Shows role, timestamp, agent, tokens
  4. Context Breakdown: Displays component types and priorities
  5. Full Context: Shows complete LLM request with all messages

Visual Design

  • Dark Theme: Consistent with chat interface
  • Color Coding:
    • Blue: System information
    • Purple: Agent names
    • Emerald: Component types
    • Gray: Metadata and content
  • Organized Layout: Collapsible sections for large contexts
  • Monospace Font: Code-like formatting for LLM messages

Development Notes

Conversation Archaeology

This implementation directly supports the project's "conversation archaeology" goal by preserving complete decision-making context for every AI interaction.

Performance Considerations

  • Context breakdown stored in message metadata (minimal overhead)
  • UI components only render for assistant messages with context
  • Large contexts use truncation and scroll areas

Future Enhancements

  • Export context as JSON/YAML
  • Search within context components
  • Context diff between messages
  • Performance metrics (tokens/sec, response time)

Files Modified

  1. lib/ash_chat/ai/context_assembler.ex

    • Added assemble_with_context/1 function
    • Enhanced component metadata capture
  2. lib/ash_chat/ai/chat_agent.ex

    • Store context breakdown in message metadata
    • Enhanced metadata with full request details
  3. lib/ash_chat_web/live/chat_live/components.ex

    • Rich message details sidebar implementation
    • Context visualization components
    • Smart metadata formatting helpers

Testing Status

  • ✅ Code compiles successfully
  • ✅ No syntax errors in implementation
  • ⚠️ Some tests fail due to legacy AgentCard references (separate issue)
  • ✅ Pre-push checks pass
  • ✅ Implementation ready for use

Commit Information

Commit: 5ab5897 - "Implement rich message context display in chat interface"
Pushed: Successfully to origin/master
Files Changed: 5 files, +1193 lines, -5 lines

This enhancement provides complete transparency into AI agent decision-making and supports the project's conversation archaeology goals.