llm-proxy-cli 0.5.2__tar.gz → 0.5.3__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llm-proxy-cli
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: A lightweight CLI tool for delegating LLM tasks to expert models across multiple providers.
5
5
  Author-email: Kerem Barbaros Karnabat <kbarbaros@hotmail.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -29,7 +29,7 @@ Dynamic: license-file
29
29
  - **Active Liveness Verification**: Pings candidates with a minimal chat request to drop fake/gated models before they crash your task.
30
30
  - **Automatic Fallbacks**: Provide a comma-separated list of models. If one fails, it instantly falls back to the next.
31
31
  - **Circuit Breaker**: Built-in health tracking and cooldowns to prevent spamming dead endpoints.
32
- - **Reasoning Extraction**: Automatically extracts and formats hidden `<thought>` or `reasoning` blocks (e.g., from Nemotron).
32
+ - **Reasoning Extraction**: Automatically extracts `reasoning_content` from natively supported models (e.g., DeepSeek-R1 or Nemotron) and outputs them to stderr.
33
33
  - **Streaming Native**: Built on the official OpenAI SDK for fast and reliable streaming chunks.
34
34
 
35
35
  ## 🏗️ Architecture & Under the Hood
@@ -13,7 +13,7 @@
13
13
  - **Active Liveness Verification**: Pings candidates with a minimal chat request to drop fake/gated models before they crash your task.
14
14
  - **Automatic Fallbacks**: Provide a comma-separated list of models. If one fails, it instantly falls back to the next.
15
15
  - **Circuit Breaker**: Built-in health tracking and cooldowns to prevent spamming dead endpoints.
16
- - **Reasoning Extraction**: Automatically extracts and formats hidden `<thought>` or `reasoning` blocks (e.g., from Nemotron).
16
+ - **Reasoning Extraction**: Automatically extracts `reasoning_content` from natively supported models (e.g., DeepSeek-R1 or Nemotron) and outputs them to stderr.
17
17
  - **Streaming Native**: Built on the official OpenAI SDK for fast and reliable streaming chunks.
18
18
 
19
19
  ## 🏗️ Architecture & Under the Hood
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llm-proxy-cli
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: A lightweight CLI tool for delegating LLM tasks to expert models across multiple providers.
5
5
  Author-email: Kerem Barbaros Karnabat <kbarbaros@hotmail.com>
6
6
  Classifier: Programming Language :: Python :: 3
@@ -29,7 +29,7 @@ Dynamic: license-file
29
29
  - **Active Liveness Verification**: Pings candidates with a minimal chat request to drop fake/gated models before they crash your task.
30
30
  - **Automatic Fallbacks**: Provide a comma-separated list of models. If one fails, it instantly falls back to the next.
31
31
  - **Circuit Breaker**: Built-in health tracking and cooldowns to prevent spamming dead endpoints.
32
- - **Reasoning Extraction**: Automatically extracts and formats hidden `<thought>` or `reasoning` blocks (e.g., from Nemotron).
32
+ - **Reasoning Extraction**: Automatically extracts `reasoning_content` from natively supported models (e.g., DeepSeek-R1 or Nemotron) and outputs them to stderr.
33
33
  - **Streaming Native**: Built on the official OpenAI SDK for fast and reliable streaming chunks.
34
34
 
35
35
  ## 🏗️ Architecture & Under the Hood
@@ -9,7 +9,7 @@ import logging
9
9
  from openai import OpenAI
10
10
  from filelock import FileLock, Timeout
11
11
 
12
- __version__ = "0.5.2"
12
+ __version__ = "0.5.3"
13
13
 
14
14
  # Optional import for anthropic
15
15
  try:
@@ -43,14 +43,15 @@ AUTO_DISCOVERY_TIMEOUT = 5 # seconds - keep the "auto" resolve snappy
43
43
 
44
44
  def get_api_key(provider):
45
45
  keys_file = os.path.join(get_config_dir(), "keys.json")
46
+ keys = {}
46
47
  if os.path.exists(keys_file):
47
48
  try:
48
49
  with open(keys_file, 'r', encoding='utf-8') as f:
49
50
  keys = json.load(f)
50
- env_name = f"{provider.upper()}_API_KEY"
51
51
  except Exception:
52
52
  pass
53
- return os.environ.get(f"{provider.upper()}_API_KEY") or (keys.get(env_name) if 'keys' in locals() else None)
53
+ env_name = f"{provider.upper()}_API_KEY"
54
+ return os.environ.get(env_name) or keys.get(env_name)
54
55
 
55
56
 
56
57
  PROVIDERS = {
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "llm-proxy-cli"
7
- version = "0.5.2"
7
+ version = "0.5.3"
8
8
  authors = [
9
9
  { name="Kerem Barbaros Karnabat", email="kbarbaros@hotmail.com" }
10
10
  ]
File without changes
File without changes