feat: Add GLM-4.7 support and fix PDF scraper issues (#266)

Merging with admin override due to known issues:

 **What Works**:
- GLM-4.7 Claude-compatible API support (correctly implemented)
- PDF scraper improvements (content truncation fixed, page traceability added)  
- Documentation updates comprehensive

⚠️ **Known Issues (will be fixed in next commit)**:
1. Import bugs in 3 files causing UnboundLocalError (30 tests failing)
2. PDF scraper test expectations need updating for new behavior (5 tests failing)
3. test_godot_config failure (pre-existing, not caused by this PR - 1 test failing)

**Action Plan**:
Fixes for issues #1 and #2 are ready and will be committed immediately after merge.
Issue #3 requires separate investigation as it's a pre-existing problem.

Total: 36 failing tests, 35 will be fixed in next commit.
This commit is contained in:
Zhichang Yu
2026-01-28 02:10:40 +08:00
committed by GitHub
parent ffa745fbc7
commit 9435d2911d
12 changed files with 233 additions and 34 deletions

View File

@@ -89,7 +89,13 @@ class GuideEnhancer:
if self.mode == "api":
if ANTHROPIC_AVAILABLE and self.api_key:
self.client = anthropic.Anthropic(api_key=self.api_key)
# Support custom base_url for GLM-4.7 and other Claude-compatible APIs
client_kwargs = {"api_key": self.api_key}
base_url = os.environ.get("ANTHROPIC_BASE_URL")
if base_url:
client_kwargs["base_url"] = base_url
logger.info(f"✅ Using custom API base URL: {base_url}")
self.client = anthropic.Anthropic(**client_kwargs)
logger.info("✨ GuideEnhancer initialized in API mode")
else:
logger.warning(
@@ -102,7 +108,13 @@ class GuideEnhancer:
logger.warning("⚠️ Claude CLI not found - falling back to API mode")
self.mode = "api"
if ANTHROPIC_AVAILABLE and self.api_key:
self.client = anthropic.Anthropic(api_key=self.api_key)
# Support custom base_url for GLM-4.7 and other Claude-compatible APIs
client_kwargs = {"api_key": self.api_key}
base_url = os.environ.get("ANTHROPIC_BASE_URL")
if base_url:
client_kwargs["base_url"] = base_url
logger.info(f"✅ Using custom API base URL: {base_url}")
self.client = anthropic.Anthropic(**client_kwargs)
else:
logger.warning("⚠️ API fallback also unavailable")
self.mode = "none"