feat: remove mandatory API key requirement and use DEFAULT_API_KEY fallback in assistant

- Eliminated the OPENROUTER_API_KEY environment variable requirement from README.md and help_docs.py
- Updated rp/core/assistant.py to fall back to DEFAULT_API_KEY when no key is provided
- Added robust empty response and JSON decode error handling in rp/core/api.py
- Bumped version from 1.65.1 to 1.67.0 in pyproject.toml
- Updated CHANGELOG.md with version 1.67.0 entry documenting the API key removal
This commit is contained in:
2025-12-13 04:57:23 +00:00
parent 39ea5c2045
commit 4740622c8d
6 changed files with 62 additions and 11 deletions
File diff suppressed because one or more lines are too long
+16 -1
View File
@@ -113,7 +113,22 @@ def call_api(
response_data = response["text"]
logger.debug(f"Response received: {len(response_data)} bytes")
result = json.loads(response_data)
if not response_data or not response_data.strip():
error_msg = f"API returned empty response. API URL: {api_url}"
logger.error(error_msg)
logger.debug("=== API CALL FAILED ===")
return {"error": error_msg}
try:
result = json.loads(response_data)
except json.JSONDecodeError as e:
preview = response_data[:200] if len(response_data) > 200 else response_data
error_msg = f"API returned invalid JSON: {str(e)}. Response preview: {preview}"
logger.error(error_msg)
logger.debug(f"Full response: {response_data}")
logger.debug("=== API CALL FAILED ===")
return {"error": error_msg}
if "usage" in result:
logger.debug(f"Token usage: {result['usage']}")
if "choices" in result and result["choices"]:
+2 -3
View File
@@ -19,6 +19,7 @@ from rp.config import (
CACHE_ENABLED,
CONVERSATION_SUMMARY_THRESHOLD,
DB_PATH,
DEFAULT_API_KEY,
DEFAULT_API_URL,
DEFAULT_MODEL,
HISTORY_FILE,
@@ -107,9 +108,7 @@ class Assistant:
logger.debug("Debug mode enabled - Full function tracing active")
setup_logging(verbose=self.verbose, debug=self.debug)
self.api_key = os.environ.get("OPENROUTER_API_KEY", "")
if not self.api_key:
print("Warning: OPENROUTER_API_KEY environment variable not set. API calls may fail.")
self.api_key = os.environ.get("OPENROUTER_API_KEY", DEFAULT_API_KEY)
self.model = args.model or os.environ.get("AI_MODEL", DEFAULT_MODEL)
self.api_url = args.api_url or os.environ.get("API_URL", DEFAULT_API_URL)
self.model_list_url = args.model_list_url or os.environ.get(