Get available models from both Ollama and HuggingFace, grouped by capability
(self)
| 744 | }, status_code=410) # 410 Gone |
| 745 | |
| 746 | def handle_get_models(self): |
| 747 | """Get available models from both Ollama and HuggingFace, grouped by capability""" |
| 748 | try: |
| 749 | generation_models = [] |
| 750 | embedding_models = [] |
| 751 | |
| 752 | # Get Ollama models if available |
| 753 | if self.ollama_client.is_ollama_running(): |
| 754 | all_ollama_models = self.ollama_client.list_models() |
| 755 | |
| 756 | # Very naive classification - same logic as RAG API server |
| 757 | ollama_embedding_models = [m for m in all_ollama_models if any(k in m for k in ['embed','bge','embedding','text'])] |
| 758 | ollama_generation_models = [m for m in all_ollama_models if m not in ollama_embedding_models] |
| 759 | |
| 760 | generation_models.extend(ollama_generation_models) |
| 761 | embedding_models.extend(ollama_embedding_models) |
| 762 | |
| 763 | # Add supported HuggingFace embedding models |
| 764 | huggingface_embedding_models = [ |
| 765 | "Qwen/Qwen3-Embedding-0.6B", |
| 766 | "Qwen/Qwen3-Embedding-4B", |
| 767 | "Qwen/Qwen3-Embedding-8B" |
| 768 | ] |
| 769 | embedding_models.extend(huggingface_embedding_models) |
| 770 | |
| 771 | # Sort models for consistent ordering |
| 772 | generation_models.sort() |
| 773 | embedding_models.sort() |
| 774 | |
| 775 | self.send_json_response({ |
| 776 | "generation_models": generation_models, |
| 777 | "embedding_models": embedding_models |
| 778 | }) |
| 779 | except Exception as e: |
| 780 | self.send_json_response({ |
| 781 | "error": f"Could not list models: {str(e)}" |
| 782 | }, status_code=500) |
| 783 | |
| 784 | def handle_get_indexes(self): |
| 785 | try: |
no test coverage detected