--- pipeline_tag: sentence-similarity tags: - sentence-transformers - feature-extraction - sentence-similarity - transformers - agent-routing - conversation-matching language: en license: apache-2.0 datasets: - custom metrics: - cosine_similarity base_model: sentence-transformers/all-MiniLM-L12-v2 --- # Gatekeeper Agent Responding Model This is a fine-tuned [sentence-transformers](https://www.SBERT.net) model based on **all-MiniLM-L12-v2** that has been specifically trained for **agent routing and conversation matching**. The model determines whether agents should respond to conversations based on semantic similarity. ## Model Details ### Base Model - **Base Model**: [sentence-transformers/all-MiniLM-L12-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L12-v2) - **Model Architecture**: MiniLM-L12 (Microsoft) - **Embedding Dimensions**: 384 - **Max Sequence Length**: 256 tokens ### Training Data The model was fine-tuned on two custom datasets using triplet training: - **semantic_triplet_training_data_round1.pkl**: 469 samples - **inverse_semantic_triplet_training_data.pkl**: 475 samples Each sample contains: - `anchor`: Conversation text or agent description - `positive`: Similar/relevant text to the anchor - `negative`: Dissimilar/irrelevant text to the anchor ### Training Configuration - **Loss Function**: MultipleNegativesRankingLoss - **Batch Size**: 16 - **Learning Rate**: 2e-5 - **Epochs**: 1 - **Warmup Ratio**: 0.1 - **Training Framework**: sentence-transformers v2.7.0+ ### Performance Evaluation results on held-out test sets: - **Semantic Triplets Accuracy**: 97.87% - **Inverse Semantic Triplets Accuracy**: 100.00% ## Usage ### Direct Usage (Sentence Transformers) ```python from sentence_transformers import SentenceTransformer # Load the model model = SentenceTransformer('msugimura/gatekeeper_agent_responding') # Example: Agent routing for conversation conversation = "I've been feeling anxious and need help with stress management" agent_descriptions = [ "Licensed therapist specializing in anxiety and stress management", "Fitness trainer who creates workout routines for stress relief", "Financial advisor who helps with investment planning" ] # Get embeddings conversation_embedding = model.encode(conversation) agent_embeddings = model.encode(agent_descriptions) # Calculate similarities from sentence_transformers.util import cos_sim similarities = cos_sim(conversation_embedding, agent_embeddings) print("Similarity scores:", similarities) # Expected: Highest similarity with the therapist ``` ### API Usage (Portcullis Service) ```python import requests # Example API call to Portcullis service response = requests.post("http://localhost:8000/should_agents_respond", json={ "conversation": "I've been feeling anxious and need help", "agent_descriptions": [ "Licensed therapist specializing in anxiety treatment", "Fitness trainer for workout routines", "Financial advisor for investments" ], "threshold": 0.4 }) result = response.json() print("Qualified agents:", result["qualified_agents"]) ``` ## Intended Use Cases 1. **Agent Routing**: Automatically route conversations to appropriate specialist agents 2. **Conversation Matching**: Match user queries with relevant service providers 3. **Semantic Search**: Find similar conversations or agent descriptions 4. **Content Recommendation**: Recommend agents based on conversation context ## Limitations - **Domain Specific**: Optimized for agent-conversation matching scenarios - **English Only**: Trained primarily on English text - **Context Length**: Limited to 256 tokens per input - **Training Data**: Performance depends on similarity to training domain ## Technical Details ### Model Architecture ``` SentenceTransformer( (0): Transformer({'max_seq_length': 256, 'do_lower_case': False}) with Transformer model: BertModel (1): Pooling({'word_embedding_dimension': 384, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False}) (2): Normalize() ) ``` ### Training Process 1. **Data Preprocessing**: Cleaned triplet datasets, removed extraneous columns 2. **Multi-Dataset Training**: Combined training on both semantic and inverse semantic data 3. **Loss Function**: MultipleNegativesRankingLoss with in-batch negatives 4. **Evaluation**: TripletEvaluator on held-out validation sets ## Citation If you use this model, please cite: ```bibtex @misc{gatekeeper_agent_responding_2024, title={Gatekeeper Agent Responding Model}, author={Michael Sugimura}, year={2024}, publisher={Hugging Face}, url={https://huggingface.co/msugimura/gatekeeper_agent_responding} } ``` ## Contact For questions or issues, please contact [your-email] or open an issue in the model repository.