@1mancompany/onemancompany 0.7.71 → 0.7.72
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.
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -59,6 +59,7 @@ _TC_NAME_KEY = "name" # tool_call dict key
|
|
|
59
59
|
_TC_ATTR = "tool_calls" # AIMessage attribute name
|
|
60
60
|
_UNKNOWN_TOOL = "unknown"
|
|
61
61
|
_NO_OUTPUT = "(no output)"
|
|
62
|
+
_MISSING_API_KEY_SENTINEL = "missing-api-key"
|
|
62
63
|
|
|
63
64
|
|
|
64
65
|
def _extract_text(content) -> str:
|
|
@@ -244,7 +245,14 @@ def make_llm(employee_id: str = "", temperature: float | None = None) -> BaseCha
|
|
|
244
245
|
|
|
245
246
|
fallback_key = settings.openrouter_api_key
|
|
246
247
|
if not fallback_key:
|
|
247
|
-
logger.warning(
|
|
248
|
+
logger.warning(
|
|
249
|
+
"make_llm: no API key for provider '{}' and no OpenRouter fallback key; "
|
|
250
|
+
"LLM calls will fail. Set DEFAULT_API_PROVIDER with the matching provider API key in {}, "
|
|
251
|
+
"or set OPENROUTER_API_KEY for fallback.",
|
|
252
|
+
api_provider,
|
|
253
|
+
_cfg.DATA_ROOT / _cfg.DOT_ENV_FILENAME,
|
|
254
|
+
)
|
|
255
|
+
fallback_key = _MISSING_API_KEY_SENTINEL
|
|
248
256
|
|
|
249
257
|
return ChatOpenAI(
|
|
250
258
|
model=model,
|
|
@@ -384,21 +384,15 @@ def _step_llm(console: Console) -> tuple[str, str, str, str]:
|
|
|
384
384
|
if not base_url:
|
|
385
385
|
console.print(" [red]Base URL is required for custom providers.[/red]")
|
|
386
386
|
base_url = _inq.text(message="Base URL:", style=INQ_STYLE).execute().strip()
|
|
387
|
-
elif provider != PROVIDER_OPENROUTER:
|
|
388
|
-
console.print(
|
|
389
|
-
f" [dim]Custom API base URL (press Enter to keep default).[/dim]\n"
|
|
390
|
-
f" [dim]Examples: https://api.openai.com/v1, https://your-server.com/v1[/dim]"
|
|
391
|
-
)
|
|
392
|
-
from onemancompany.core.config import PROVIDER_REGISTRY
|
|
393
|
-
default_url = PROVIDER_REGISTRY.get(provider, None)
|
|
394
|
-
default_url = default_url.base_url if default_url else ""
|
|
395
|
-
base_url = _inq.text(
|
|
396
|
-
message="Base URL:",
|
|
397
|
-
default=default_url,
|
|
398
|
-
style=INQ_STYLE,
|
|
399
|
-
).execute().strip()
|
|
400
387
|
|
|
401
388
|
# 4. Select model — try fetching from provider, fall back to manual input
|
|
389
|
+
model = _select_or_enter_model(console, provider, api_key)
|
|
390
|
+
return provider, api_key.strip(), model, base_url, custom_chat_class
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
def _select_or_enter_model(console: Console, provider: str, api_key: str) -> str:
|
|
394
|
+
from InquirerPy import inquirer as _inq
|
|
395
|
+
|
|
402
396
|
console.print()
|
|
403
397
|
all_models = _fetch_provider_models(console, provider, api_key)
|
|
404
398
|
if all_models:
|
|
@@ -412,8 +406,7 @@ def _step_llm(console: Console) -> tuple[str, str, str, str]:
|
|
|
412
406
|
default=default_model,
|
|
413
407
|
style=INQ_STYLE,
|
|
414
408
|
).execute().strip()
|
|
415
|
-
|
|
416
|
-
return provider, api_key.strip(), model, base_url, custom_chat_class
|
|
409
|
+
return model
|
|
417
410
|
|
|
418
411
|
|
|
419
412
|
def _step_server(console: Console) -> tuple[str, int]:
|