ErrorAI 1.8.0__tar.gz → 1.9.1__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.
- {errorai-1.8.0 → errorai-1.9.1}/ErrorAI.egg-info/PKG-INFO +1 -1
- {errorai-1.8.0 → errorai-1.9.1}/PKG-INFO +1 -1
- {errorai-1.8.0 → errorai-1.9.1}/errorai/bootstrap.py +5 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/config.py +9 -1
- {errorai-1.8.0 → errorai-1.9.1}/errorai/runtime.py +14 -3
- {errorai-1.8.0 → errorai-1.9.1}/pyproject.toml +1 -1
- {errorai-1.8.0 → errorai-1.9.1}/ErrorAI.egg-info/SOURCES.txt +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/ErrorAI.egg-info/dependency_links.txt +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/ErrorAI.egg-info/entry_points.txt +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/ErrorAI.egg-info/requires.txt +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/ErrorAI.egg-info/top_level.txt +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/README.md +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/__init__.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/__main__.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/cli.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/compat.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/environment.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/pipeline.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/providers.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/errorai/universal.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/setup.cfg +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/tests/test_bootstrap.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/tests/test_config.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/tests/test_runtime.py +0 -0
- {errorai-1.8.0 → errorai-1.9.1}/tests/test_safety.py +0 -0
|
@@ -38,6 +38,11 @@ def _download_onnx_model(config: ModelConfig, destination: Path) -> None:
|
|
|
38
38
|
snapshot_download(
|
|
39
39
|
repo_id=config.repo_id,
|
|
40
40
|
cache_dir=str(config.cache_dir / "hf_cache"),
|
|
41
|
+
allow_patterns=[
|
|
42
|
+
"*.json",
|
|
43
|
+
"*.txt",
|
|
44
|
+
"onnx/model_int8.onnx",
|
|
45
|
+
],
|
|
41
46
|
)
|
|
42
47
|
)
|
|
43
48
|
if destination.exists() or destination.is_symlink():
|
|
@@ -129,7 +129,7 @@ def _coerce_model(base: ModelConfig, values: Dict[str, Any]) -> ModelConfig:
|
|
|
129
129
|
|
|
130
130
|
|
|
131
131
|
def load_config(project_root: Path | None = None) -> ErrorAIConfig:
|
|
132
|
-
root = (project_root or
|
|
132
|
+
root = (project_root or _default_project_root()).resolve()
|
|
133
133
|
config = ErrorAIConfig(runtime=RuntimeConfig(project_root=root))
|
|
134
134
|
pyproject = _read_toml(root / "pyproject.toml")
|
|
135
135
|
pyproject_settings = pyproject.get("tool", {}).get("errorai", {})
|
|
@@ -160,6 +160,14 @@ name = "onnx-default-python-expert"
|
|
|
160
160
|
context_window = 4096
|
|
161
161
|
temperature = 0.1
|
|
162
162
|
auto_bootstrap = true
|
|
163
|
+
# To use a free, keyless hosted API instead of a local model, set:
|
|
164
|
+
# provider = "http_api"
|
|
165
|
+
# This sends the erroring line + message to http_api_base_url (default:
|
|
166
|
+
# OVHcloud AI Endpoints' anonymous tier -- no signup, no key, ~2 req/min).
|
|
167
|
+
# Only enable this if you're OK with that line leaving your machine.
|
|
168
|
+
# http_api_base_url = "https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/chat/completions"
|
|
169
|
+
# http_api_model = "qwen2.5-coder-32b-instruct"
|
|
170
|
+
# http_api_timeout = 8.0
|
|
163
171
|
"""
|
|
164
172
|
|
|
165
173
|
|
|
@@ -13,7 +13,7 @@ from .bootstrap import BootstrapStatus, ensure_model, model_status
|
|
|
13
13
|
from .config import ErrorAIConfig, autostart_enabled, load_config
|
|
14
14
|
from .environment import Capabilities, detect_capabilities
|
|
15
15
|
from .pipeline import Analyzer, Applier, Planner, Reporter, Watcher
|
|
16
|
-
from .providers import ModelProvider, RulesOnlyProvider
|
|
16
|
+
from .providers import ModelProvider, RulesOnlyProvider, HttpApiProvider
|
|
17
17
|
|
|
18
18
|
try:
|
|
19
19
|
from .providers import LlamaCppProvider
|
|
@@ -67,7 +67,12 @@ class RuntimeManager:
|
|
|
67
67
|
self.reporter = Reporter(self.config.runtime.project_root)
|
|
68
68
|
self.analyzer = Analyzer()
|
|
69
69
|
self.applier = Applier(self.config.runtime)
|
|
70
|
-
|
|
70
|
+
if self.config.model.provider in ("onnx", "llama_cpp"):
|
|
71
|
+
self.bootstrap_status = ensure_model(self.config.model, explicit=False)
|
|
72
|
+
else:
|
|
73
|
+
self.bootstrap_status = BootstrapStatus(
|
|
74
|
+
True, "remote", "Using remote HTTP API provider; no local model needed.", None
|
|
75
|
+
)
|
|
71
76
|
self.provider = self._select_provider(self.bootstrap_status)
|
|
72
77
|
self.planner = Planner(self.provider)
|
|
73
78
|
self.watcher = Watcher(self.capabilities, self.reporter)
|
|
@@ -91,11 +96,17 @@ class RuntimeManager:
|
|
|
91
96
|
return self
|
|
92
97
|
|
|
93
98
|
def _select_provider(self, status: BootstrapStatus) -> ModelProvider:
|
|
94
|
-
if
|
|
99
|
+
if self.config is None:
|
|
95
100
|
return RulesOnlyProvider()
|
|
96
101
|
|
|
97
102
|
provider_name = self.config.model.provider
|
|
98
103
|
|
|
104
|
+
if provider_name == "http_api":
|
|
105
|
+
return HttpApiProvider(self.config.model)
|
|
106
|
+
|
|
107
|
+
if not status.ready or status.model_path is None:
|
|
108
|
+
return RulesOnlyProvider()
|
|
109
|
+
|
|
99
110
|
if provider_name == "onnx":
|
|
100
111
|
if OnnxProvider is None:
|
|
101
112
|
return RulesOnlyProvider()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|