--- id: specialists title: Understanding Specialists - Introduction description: Learn how specialists use Evie's Library to execute specific tasks sidebar_label: Specialists Intro sidebar_position: 1 --- # Understanding Specialists - Introduction ## Overview Specialists are powerful components in Evie's ecosystem that perform specific activities using information from Evie's Library. Think of specialists as expert assistants, each trained for particular tasks - from answering questions to filling templates or providing specialized support. ## How Specialists Work Every specialist follows a structured approach: 1. **Information Gathering**: Using one or more retrievers, specialists search Evie's Library for relevant information 2. **Information Processing**: Retrieved information is processed according to the specialist's specific algorithm 3. **Task Execution**: The specialist performs its designated task using: - Retrieved information - Its configuration settings - Provided arguments ```mermaid flowchart TD A[User Request] --> B[Specialist] B --> C{Process Arguments} C --> D[Evaluate Specialist Arguments] D --> E[Push Arguments to Retrievers] E --> F[Search Library using Retrievers] F --> G[Combine Retrieved Information] G --> H[Execute Specialist Algorithm] H --> I[Return Results] style A fill:#9c2d66,stroke:#333,stroke-width:2px style B fill:#423372,stroke:#333,stroke-width:2px style I fill:#9c2d66,stroke:#333,stroke-width:2px ``` ### Key Components The relationship between specialists and other components is shown in this diagram: ```mermaid classDiagram class Specialist { +id: Integer +name: String +description: Text +type: String +configuration: JSON +arguments: JSON +results: JSON } class Retriever { +id: Integer +name: String +catalog_id: Integer +type: String +configuration: JSON } Specialist "*" -- "*" Retriever : uses note for Specialist "Each specialist can use multiple retrievers" note for Retriever "Each retriever can be used by multiple specialists" ``` ### Sessions and Interactions Each specialist operates within sessions, managing interactions as shown here: ```mermaid classDiagram class ChatSession { +id: Integer +session_id: String +session_start: DateTime +session_end: DateTime } class Interaction { +id: Integer +chat_session_id: Integer +specialist_id: Integer +specialist_arguments: JSON +specialist_results: JSON +question_at: DateTime +answer_at: DateTime } class Specialist { +id: Integer +name: String +type: String } ChatSession "1" -- "*" Interaction Specialist "1" -- "*" Interaction ``` ## Working with Specialists ### Configuration & Arguments Specialists use three key data structures: 1. **Configuration** - Fixed parameters that remain constant during all interactions - Defines core behavior settings (e.g., inference parameters) - Set during specialist creation 2. **Arguments** - Variable parameters passed during each interaction - Can change between interactions within a session - Example: questions or specific task parameters 3. **Results** - Output structure returned after each interaction - Contains the specialist's response or task output - Format depends on specialist type ### Sessions - Each session is dedicated to one specialist - Sessions maintain context across multiple interactions - Session boundaries are specialist-specific - For Q&A specialists: typically aligned with client communication sessions - For task-based specialists: may be bound by task completion ### Argument Inheritance Specialists implement an intelligent argument inheritance mechanism: 1. Arguments can be defined at both specialist and retriever levels 2. When argument names match: - Specialist arguments take precedence - Retriever-specific values can override this if explicitly set 3. This allows for: - Consistent argument handling across retrievers - Flexibility when needed for specific retrievers ## Current Specialist Types Currently, the main specialist type is the RAG (Retrieval-Augmented Generation) Specialist, focused on question-answering using library content. Additional specialist types are being developed for: - Sales support - Template filling - Specialized customer support - Document analysis - And more... Detailed documentation for each specialist type is available in their respective sections.