abstractcore 2.6.3__tar.gz → 2.6.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {abstractcore-2.6.3 → abstractcore-2.6.5}/PKG-INFO +44 -24
- {abstractcore-2.6.3 → abstractcore-2.6.5}/README.md +25 -15
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/__init__.py +4 -0
- abstractcore-2.6.5/abstractcore/providers/openai_compatible_provider.py +829 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/registry.py +37 -1
- abstractcore-2.6.5/abstractcore/providers/vllm_provider.py +823 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/server/app.py +22 -2
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/version.py +1 -1
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore.egg-info/PKG-INFO +44 -24
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore.egg-info/SOURCES.txt +2 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore.egg-info/requires.txt +21 -6
- {abstractcore-2.6.3 → abstractcore-2.6.5}/pyproject.toml +27 -6
- {abstractcore-2.6.3 → abstractcore-2.6.5}/LICENSE +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/__main__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/app_config_utils.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/deepsearch.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/extractor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/intent.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/judge.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/apps/summarizer.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/architectures/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/architectures/detection.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/architectures/enums.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/assets/architecture_formats.json +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/assets/model_capabilities.json +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/assets/session_schema.json +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/analytics.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/cache.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/config.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/exceptions.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/glyph_processor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/optimizer.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/orchestrator.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/pil_text_renderer.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/quality.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/text_formatter.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/compression/vision_compressor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/config/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/config/main.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/config/manager.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/config/vision_config.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/core/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/core/enums.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/core/factory.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/core/interface.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/core/retry.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/core/session.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/core/types.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/download.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/embeddings/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/embeddings/manager.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/embeddings/models.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/events/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/exceptions/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/auto_handler.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/base.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/capabilities.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/handlers/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/handlers/anthropic_handler.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/handlers/local_handler.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/handlers/openai_handler.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/processors/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/processors/direct_pdf_processor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/processors/glyph_pdf_processor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/processors/image_processor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/processors/office_processor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/processors/pdf_processor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/processors/text_processor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/types.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/utils/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/utils/image_scaler.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/media/vision_fallback.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/processing/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/processing/basic_deepsearch.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/processing/basic_extractor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/processing/basic_intent.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/processing/basic_judge.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/processing/basic_summarizer.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/anthropic_provider.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/base.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/huggingface_provider.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/lmstudio_provider.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/mlx_provider.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/model_capabilities.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/ollama_provider.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/openai_provider.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/providers/streaming.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/server/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/structured/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/structured/handler.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/structured/retry.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/common_tools.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/core.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/handler.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/parser.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/registry.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/syntax_rewriter.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/tools/tag_rewriter.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/__init__.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/cli.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/message_preprocessor.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/self_fixes.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/structured_logging.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/token_utils.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/trace_export.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore/utils/vlm_token_calculator.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore.egg-info/dependency_links.txt +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore.egg-info/entry_points.txt +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/abstractcore.egg-info/top_level.txt +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/setup.cfg +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_agentic_cli_compatibility.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_basic_session.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_complete_integration.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_comprehensive_events.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_core_components.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_enhanced_prompt.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_environment_variable_tool_call_tags.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_factory.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_final_accuracy.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_final_comprehensive.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_final_graceful_errors.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_graceful_fallback.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_import_debug.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_integrated_functionality.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_retry_observability.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_retry_strategy.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_seed_determinism.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_seed_temperature_basic.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_sensory_prompting.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_text_only_model_experience.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_unload_memory.py +0 -0
- {abstractcore-2.6.3 → abstractcore-2.6.5}/tests/test_user_scenario_validation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstractcore
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.5
|
|
4
4
|
Summary: Unified interface to all LLM providers with essential infrastructure for tool calling, streaming, and model management
|
|
5
5
|
Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
6
6
|
Maintainer-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
@@ -47,6 +47,8 @@ Provides-Extra: mlx
|
|
|
47
47
|
Requires-Dist: mlx<1.0.0,>=0.15.0; extra == "mlx"
|
|
48
48
|
Requires-Dist: mlx-lm<1.0.0,>=0.15.0; extra == "mlx"
|
|
49
49
|
Requires-Dist: outlines>=0.1.0; extra == "mlx"
|
|
50
|
+
Provides-Extra: vllm
|
|
51
|
+
Requires-Dist: vllm<1.0.0,>=0.6.0; extra == "vllm"
|
|
50
52
|
Provides-Extra: embeddings
|
|
51
53
|
Requires-Dist: sentence-transformers<6.0.0,>=5.1.0; extra == "embeddings"
|
|
52
54
|
Requires-Dist: numpy<2.0.0,>=1.20.0; extra == "embeddings"
|
|
@@ -67,18 +69,26 @@ Provides-Extra: api-providers
|
|
|
67
69
|
Requires-Dist: abstractcore[anthropic,openai]; extra == "api-providers"
|
|
68
70
|
Provides-Extra: local-providers
|
|
69
71
|
Requires-Dist: abstractcore[lmstudio,mlx,ollama]; extra == "local-providers"
|
|
70
|
-
Provides-Extra: local-providers-
|
|
71
|
-
Requires-Dist: abstractcore[lmstudio,ollama]; extra == "local-providers-
|
|
72
|
+
Provides-Extra: local-providers-apple
|
|
73
|
+
Requires-Dist: abstractcore[lmstudio,mlx,ollama]; extra == "local-providers-apple"
|
|
74
|
+
Provides-Extra: local-providers-gpu
|
|
75
|
+
Requires-Dist: abstractcore[lmstudio,ollama,vllm]; extra == "local-providers-gpu"
|
|
76
|
+
Provides-Extra: gpu-providers
|
|
77
|
+
Requires-Dist: abstractcore[huggingface,vllm]; extra == "gpu-providers"
|
|
72
78
|
Provides-Extra: heavy-providers
|
|
73
79
|
Requires-Dist: abstractcore[huggingface]; extra == "heavy-providers"
|
|
74
80
|
Provides-Extra: all-providers
|
|
75
|
-
Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai]; extra == "all-providers"
|
|
76
|
-
Provides-Extra: all-providers-
|
|
77
|
-
Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai]; extra == "all-providers-
|
|
81
|
+
Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai,vllm]; extra == "all-providers"
|
|
82
|
+
Provides-Extra: all-providers-apple
|
|
83
|
+
Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,mlx,ollama,openai]; extra == "all-providers-apple"
|
|
84
|
+
Provides-Extra: all-providers-gpu
|
|
85
|
+
Requires-Dist: abstractcore[anthropic,embeddings,huggingface,lmstudio,ollama,openai,vllm]; extra == "all-providers-gpu"
|
|
78
86
|
Provides-Extra: all
|
|
79
|
-
Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools]; extra == "all"
|
|
80
|
-
Provides-Extra: all-
|
|
81
|
-
Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools]; extra == "all-
|
|
87
|
+
Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools,vllm]; extra == "all"
|
|
88
|
+
Provides-Extra: all-apple
|
|
89
|
+
Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,mlx,ollama,openai,processing,server,test,tools]; extra == "all-apple"
|
|
90
|
+
Provides-Extra: all-gpu
|
|
91
|
+
Requires-Dist: abstractcore[anthropic,compression,dev,docs,embeddings,huggingface,lmstudio,media,ollama,openai,processing,server,test,tools,vllm]; extra == "all-gpu"
|
|
82
92
|
Provides-Extra: lightweight
|
|
83
93
|
Requires-Dist: abstractcore[anthropic,compression,embeddings,lmstudio,media,ollama,openai,processing,server,tools]; extra == "lightweight"
|
|
84
94
|
Provides-Extra: dev
|
|
@@ -480,8 +490,9 @@ if response.metadata and response.metadata.get('compression_used'):
|
|
|
480
490
|
## Key Features
|
|
481
491
|
|
|
482
492
|
- **Offline-First Design**: Built primarily for open source LLMs with full offline capability. Download once, run forever without internet access
|
|
483
|
-
- **Provider Agnostic**: Seamlessly switch between OpenAI, Anthropic, Ollama, LMStudio, MLX, HuggingFace
|
|
484
|
-
- **Async/Await Support** ⭐ NEW in v2.6.0: Native async support for concurrent requests with `asyncio.gather()` - works with all
|
|
493
|
+
- **Provider Agnostic**: Seamlessly switch between OpenAI, Anthropic, Ollama, LMStudio, MLX, HuggingFace, vLLM, and any OpenAI-compatible endpoint
|
|
494
|
+
- **Async/Await Support** ⭐ NEW in v2.6.0: Native async support for concurrent requests with `asyncio.gather()` - works with all providers
|
|
495
|
+
- **Dynamic Endpoint Configuration** ⭐ NEW in v2.6.5: Pass `base_url` in POST requests to connect to custom OpenAI-compatible endpoints without environment variables
|
|
485
496
|
- **Interaction Tracing**: Complete LLM observability with programmatic access to prompts, responses, tokens, timing, and trace correlation for debugging, trust, and compliance
|
|
486
497
|
- **Glyph Visual-Text Compression**: Revolutionary compression system that renders text as optimized images for 3-4x token compression and faster inference
|
|
487
498
|
- **Centralized Configuration**: Global defaults and app-specific preferences at `~/.abstractcore/config/abstractcore.json`
|
|
@@ -498,14 +509,16 @@ if response.metadata and response.metadata.get('compression_used'):
|
|
|
498
509
|
|
|
499
510
|
## Supported Providers
|
|
500
511
|
|
|
501
|
-
| Provider | Status | SEED Support | Setup |
|
|
502
|
-
|
|
503
|
-
| **OpenAI** | Full | Native | [Get API key](docs/prerequisites.md#openai-setup) |
|
|
504
|
-
| **Anthropic** | Full | Warning* | [Get API key](docs/prerequisites.md#anthropic-setup) |
|
|
505
|
-
| **Ollama** | Full | Native | [Install guide](docs/prerequisites.md#ollama-setup) |
|
|
506
|
-
| **LMStudio** | Full | Native | [Install guide](docs/prerequisites.md#lmstudio-setup) |
|
|
507
|
-
| **MLX** | Full | Native | [Setup guide](docs/prerequisites.md#mlx-setup) |
|
|
508
|
-
| **HuggingFace** | Full | Native | [Setup guide](docs/prerequisites.md#huggingface-setup) |
|
|
512
|
+
| Provider | Status | SEED Support | Hardware | Setup |
|
|
513
|
+
|----------|--------|-------------|----------|-------|
|
|
514
|
+
| **OpenAI** | Full | Native | Any | [Get API key](docs/prerequisites.md#openai-setup) |
|
|
515
|
+
| **Anthropic** | Full | Warning* | Any | [Get API key](docs/prerequisites.md#anthropic-setup) |
|
|
516
|
+
| **Ollama** | Full | Native | Any | [Install guide](docs/prerequisites.md#ollama-setup) |
|
|
517
|
+
| **LMStudio** | Full | Native | Any | [Install guide](docs/prerequisites.md#lmstudio-setup) |
|
|
518
|
+
| **MLX** | Full | Native | **Apple Silicon only** | [Setup guide](docs/prerequisites.md#mlx-setup) |
|
|
519
|
+
| **HuggingFace** | Full | Native | Any | [Setup guide](docs/prerequisites.md#huggingface-setup) |
|
|
520
|
+
| **vLLM** | Full | Native | **NVIDIA CUDA only** | [Setup guide](docs/prerequisites.md#vllm-setup) |
|
|
521
|
+
| **OpenAI-Compatible** ⭐ NEW | Full | Native | Any | Works with llama.cpp, text-generation-webui, LocalAI, etc. |
|
|
509
522
|
|
|
510
523
|
*Anthropic doesn't support seed parameters but issues a warning when provided. Use `temperature=0.0` for more consistent outputs.
|
|
511
524
|
|
|
@@ -1024,7 +1037,8 @@ pip install abstractcore[anthropic]
|
|
|
1024
1037
|
pip install abstractcore[ollama]
|
|
1025
1038
|
pip install abstractcore[lmstudio]
|
|
1026
1039
|
pip install abstractcore[huggingface]
|
|
1027
|
-
pip install abstractcore[mlx]
|
|
1040
|
+
pip install abstractcore[mlx] # macOS/Apple Silicon only
|
|
1041
|
+
pip install abstractcore[vllm] # NVIDIA CUDA only (Linux)
|
|
1028
1042
|
|
|
1029
1043
|
# With server support
|
|
1030
1044
|
pip install abstractcore[server]
|
|
@@ -1032,20 +1046,26 @@ pip install abstractcore[server]
|
|
|
1032
1046
|
# With embeddings
|
|
1033
1047
|
pip install abstractcore[embeddings]
|
|
1034
1048
|
|
|
1035
|
-
# Everything (recommended)
|
|
1049
|
+
# Everything (recommended for Apple Silicon)
|
|
1036
1050
|
pip install abstractcore[all]
|
|
1037
1051
|
|
|
1038
|
-
# Cross-platform (all except MLX - for Linux/Windows)
|
|
1052
|
+
# Cross-platform (all except MLX/vLLM - for Linux/Windows/Intel Mac)
|
|
1039
1053
|
pip install abstractcore[all-non-mlx]
|
|
1040
1054
|
|
|
1041
1055
|
# Provider groups
|
|
1042
|
-
pip install abstractcore[all-providers] # All providers (includes MLX)
|
|
1043
|
-
pip install abstractcore[all-providers-non-mlx] # All providers except MLX
|
|
1056
|
+
pip install abstractcore[all-providers] # All providers (includes MLX, excludes vLLM)
|
|
1057
|
+
pip install abstractcore[all-providers-non-mlx] # All providers except MLX (excludes vLLM)
|
|
1044
1058
|
pip install abstractcore[local-providers] # Ollama, LMStudio, MLX
|
|
1045
1059
|
pip install abstractcore[local-providers-non-mlx] # Ollama, LMStudio only
|
|
1046
1060
|
pip install abstractcore[api-providers] # OpenAI, Anthropic
|
|
1061
|
+
pip install abstractcore[gpu-providers] # vLLM (NVIDIA CUDA only)
|
|
1047
1062
|
```
|
|
1048
1063
|
|
|
1064
|
+
**Hardware-Specific Notes:**
|
|
1065
|
+
- **MLX**: Requires Apple Silicon (M1/M2/M3/M4). Will not work on Intel Macs or other platforms.
|
|
1066
|
+
- **vLLM**: Requires NVIDIA GPUs with CUDA support. Will not work on Apple Silicon, AMD GPUs, or Intel integrated graphics.
|
|
1067
|
+
- **All other providers** (OpenAI, Anthropic, Ollama, LMStudio, HuggingFace): Work on any hardware.
|
|
1068
|
+
|
|
1049
1069
|
**Media processing extras:**
|
|
1050
1070
|
```bash
|
|
1051
1071
|
# For PDF processing
|
|
@@ -368,8 +368,9 @@ if response.metadata and response.metadata.get('compression_used'):
|
|
|
368
368
|
## Key Features
|
|
369
369
|
|
|
370
370
|
- **Offline-First Design**: Built primarily for open source LLMs with full offline capability. Download once, run forever without internet access
|
|
371
|
-
- **Provider Agnostic**: Seamlessly switch between OpenAI, Anthropic, Ollama, LMStudio, MLX, HuggingFace
|
|
372
|
-
- **Async/Await Support** ⭐ NEW in v2.6.0: Native async support for concurrent requests with `asyncio.gather()` - works with all
|
|
371
|
+
- **Provider Agnostic**: Seamlessly switch between OpenAI, Anthropic, Ollama, LMStudio, MLX, HuggingFace, vLLM, and any OpenAI-compatible endpoint
|
|
372
|
+
- **Async/Await Support** ⭐ NEW in v2.6.0: Native async support for concurrent requests with `asyncio.gather()` - works with all providers
|
|
373
|
+
- **Dynamic Endpoint Configuration** ⭐ NEW in v2.6.5: Pass `base_url` in POST requests to connect to custom OpenAI-compatible endpoints without environment variables
|
|
373
374
|
- **Interaction Tracing**: Complete LLM observability with programmatic access to prompts, responses, tokens, timing, and trace correlation for debugging, trust, and compliance
|
|
374
375
|
- **Glyph Visual-Text Compression**: Revolutionary compression system that renders text as optimized images for 3-4x token compression and faster inference
|
|
375
376
|
- **Centralized Configuration**: Global defaults and app-specific preferences at `~/.abstractcore/config/abstractcore.json`
|
|
@@ -386,14 +387,16 @@ if response.metadata and response.metadata.get('compression_used'):
|
|
|
386
387
|
|
|
387
388
|
## Supported Providers
|
|
388
389
|
|
|
389
|
-
| Provider | Status | SEED Support | Setup |
|
|
390
|
-
|
|
391
|
-
| **OpenAI** | Full | Native | [Get API key](docs/prerequisites.md#openai-setup) |
|
|
392
|
-
| **Anthropic** | Full | Warning* | [Get API key](docs/prerequisites.md#anthropic-setup) |
|
|
393
|
-
| **Ollama** | Full | Native | [Install guide](docs/prerequisites.md#ollama-setup) |
|
|
394
|
-
| **LMStudio** | Full | Native | [Install guide](docs/prerequisites.md#lmstudio-setup) |
|
|
395
|
-
| **MLX** | Full | Native | [Setup guide](docs/prerequisites.md#mlx-setup) |
|
|
396
|
-
| **HuggingFace** | Full | Native | [Setup guide](docs/prerequisites.md#huggingface-setup) |
|
|
390
|
+
| Provider | Status | SEED Support | Hardware | Setup |
|
|
391
|
+
|----------|--------|-------------|----------|-------|
|
|
392
|
+
| **OpenAI** | Full | Native | Any | [Get API key](docs/prerequisites.md#openai-setup) |
|
|
393
|
+
| **Anthropic** | Full | Warning* | Any | [Get API key](docs/prerequisites.md#anthropic-setup) |
|
|
394
|
+
| **Ollama** | Full | Native | Any | [Install guide](docs/prerequisites.md#ollama-setup) |
|
|
395
|
+
| **LMStudio** | Full | Native | Any | [Install guide](docs/prerequisites.md#lmstudio-setup) |
|
|
396
|
+
| **MLX** | Full | Native | **Apple Silicon only** | [Setup guide](docs/prerequisites.md#mlx-setup) |
|
|
397
|
+
| **HuggingFace** | Full | Native | Any | [Setup guide](docs/prerequisites.md#huggingface-setup) |
|
|
398
|
+
| **vLLM** | Full | Native | **NVIDIA CUDA only** | [Setup guide](docs/prerequisites.md#vllm-setup) |
|
|
399
|
+
| **OpenAI-Compatible** ⭐ NEW | Full | Native | Any | Works with llama.cpp, text-generation-webui, LocalAI, etc. |
|
|
397
400
|
|
|
398
401
|
*Anthropic doesn't support seed parameters but issues a warning when provided. Use `temperature=0.0` for more consistent outputs.
|
|
399
402
|
|
|
@@ -912,7 +915,8 @@ pip install abstractcore[anthropic]
|
|
|
912
915
|
pip install abstractcore[ollama]
|
|
913
916
|
pip install abstractcore[lmstudio]
|
|
914
917
|
pip install abstractcore[huggingface]
|
|
915
|
-
pip install abstractcore[mlx]
|
|
918
|
+
pip install abstractcore[mlx] # macOS/Apple Silicon only
|
|
919
|
+
pip install abstractcore[vllm] # NVIDIA CUDA only (Linux)
|
|
916
920
|
|
|
917
921
|
# With server support
|
|
918
922
|
pip install abstractcore[server]
|
|
@@ -920,20 +924,26 @@ pip install abstractcore[server]
|
|
|
920
924
|
# With embeddings
|
|
921
925
|
pip install abstractcore[embeddings]
|
|
922
926
|
|
|
923
|
-
# Everything (recommended)
|
|
927
|
+
# Everything (recommended for Apple Silicon)
|
|
924
928
|
pip install abstractcore[all]
|
|
925
929
|
|
|
926
|
-
# Cross-platform (all except MLX - for Linux/Windows)
|
|
930
|
+
# Cross-platform (all except MLX/vLLM - for Linux/Windows/Intel Mac)
|
|
927
931
|
pip install abstractcore[all-non-mlx]
|
|
928
932
|
|
|
929
933
|
# Provider groups
|
|
930
|
-
pip install abstractcore[all-providers] # All providers (includes MLX)
|
|
931
|
-
pip install abstractcore[all-providers-non-mlx] # All providers except MLX
|
|
934
|
+
pip install abstractcore[all-providers] # All providers (includes MLX, excludes vLLM)
|
|
935
|
+
pip install abstractcore[all-providers-non-mlx] # All providers except MLX (excludes vLLM)
|
|
932
936
|
pip install abstractcore[local-providers] # Ollama, LMStudio, MLX
|
|
933
937
|
pip install abstractcore[local-providers-non-mlx] # Ollama, LMStudio only
|
|
934
938
|
pip install abstractcore[api-providers] # OpenAI, Anthropic
|
|
939
|
+
pip install abstractcore[gpu-providers] # vLLM (NVIDIA CUDA only)
|
|
935
940
|
```
|
|
936
941
|
|
|
942
|
+
**Hardware-Specific Notes:**
|
|
943
|
+
- **MLX**: Requires Apple Silicon (M1/M2/M3/M4). Will not work on Intel Macs or other platforms.
|
|
944
|
+
- **vLLM**: Requires NVIDIA GPUs with CUDA support. Will not work on Apple Silicon, AMD GPUs, or Intel integrated graphics.
|
|
945
|
+
- **All other providers** (OpenAI, Anthropic, Ollama, LMStudio, HuggingFace): Work on any hardware.
|
|
946
|
+
|
|
937
947
|
**Media processing extras:**
|
|
938
948
|
```bash
|
|
939
949
|
# For PDF processing
|
|
@@ -7,6 +7,8 @@ from .ollama_provider import OllamaProvider
|
|
|
7
7
|
from .lmstudio_provider import LMStudioProvider
|
|
8
8
|
from .huggingface_provider import HuggingFaceProvider
|
|
9
9
|
from .mlx_provider import MLXProvider
|
|
10
|
+
from .vllm_provider import VLLMProvider
|
|
11
|
+
from .openai_compatible_provider import OpenAICompatibleProvider
|
|
10
12
|
|
|
11
13
|
# Provider registry for centralized provider discovery and management
|
|
12
14
|
from .registry import (
|
|
@@ -41,6 +43,8 @@ __all__ = [
|
|
|
41
43
|
'LMStudioProvider',
|
|
42
44
|
'HuggingFaceProvider',
|
|
43
45
|
'MLXProvider',
|
|
46
|
+
'VLLMProvider',
|
|
47
|
+
'OpenAICompatibleProvider',
|
|
44
48
|
|
|
45
49
|
# Provider registry
|
|
46
50
|
'ProviderRegistry',
|