Return a list of locally installed Ollama models and supported HuggingFace models, grouped by capability.
(self)
| 690 | self.send_json_response({"error": f"Failed to start indexing: {str(e)}"}, status_code=500) |
| 691 | |
| 692 | def handle_models(self): |
| 693 | """Return a list of locally installed Ollama models and supported HuggingFace models, grouped by capability.""" |
| 694 | try: |
| 695 | generation_models = [] |
| 696 | embedding_models = [] |
| 697 | |
| 698 | # Get Ollama models if available |
| 699 | try: |
| 700 | resp = requests.get(f"{RAG_AGENT.ollama_config['host']}/api/tags", timeout=5) |
| 701 | resp.raise_for_status() |
| 702 | data = resp.json() |
| 703 | |
| 704 | all_ollama_models = [m.get('name') for m in data.get('models', [])] |
| 705 | |
| 706 | # Very naive classification |
| 707 | ollama_embedding_models = [m for m in all_ollama_models if any(k in m for k in ['embed','bge','embedding','text'])] |
| 708 | ollama_generation_models = [m for m in all_ollama_models if m not in ollama_embedding_models] |
| 709 | |
| 710 | generation_models.extend(ollama_generation_models) |
| 711 | embedding_models.extend(ollama_embedding_models) |
| 712 | except Exception as e: |
| 713 | print(f"⚠️ Could not get Ollama models: {e}") |
| 714 | |
| 715 | # Add supported HuggingFace embedding models |
| 716 | huggingface_embedding_models = [ |
| 717 | "Qwen/Qwen3-Embedding-0.6B", |
| 718 | "Qwen/Qwen3-Embedding-4B", |
| 719 | "Qwen/Qwen3-Embedding-8B" |
| 720 | ] |
| 721 | embedding_models.extend(huggingface_embedding_models) |
| 722 | |
| 723 | # Sort models for consistent ordering |
| 724 | generation_models.sort() |
| 725 | embedding_models.sort() |
| 726 | |
| 727 | self.send_json_response({ |
| 728 | "generation_models": generation_models, |
| 729 | "embedding_models": embedding_models |
| 730 | }) |
| 731 | except Exception as e: |
| 732 | self.send_json_response({"error": f"Could not list models: {e}"}, status_code=500) |
| 733 | |
| 734 | def send_json_response(self, data, status_code=200): |
| 735 | """Utility to send a JSON response with CORS headers.""" |
no test coverage detected