spiderforce4ai 2.5.2__tar.gz → 2.5.4__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/PKG-INFO +1 -1
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/pyproject.toml +1 -1
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/setup.py +1 -1
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai/__init__.py +8 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai/post_extraction_agent.py +11 -3
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai.egg-info/PKG-INFO +1 -1
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/README.md +0 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/setup.cfg +0 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai.egg-info/SOURCES.txt +0 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai.egg-info/dependency_links.txt +0 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai.egg-info/entry_points.txt +0 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai.egg-info/not-zip-safe +0 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai.egg-info/requires.txt +0 -0
- {spiderforce4ai-2.5.2 → spiderforce4ai-2.5.4}/spiderforce4ai.egg-info/top_level.txt +0 -0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "spiderforce4ai"
|
7
|
-
version = "2.5.
|
7
|
+
version = "2.5.4"
|
8
8
|
description = "Python wrapper for SpiderForce4AI HTML-to-Markdown conversion service with LLM post-processing"
|
9
9
|
readme = "README.md"
|
10
10
|
authors = [
|
@@ -7,7 +7,7 @@ with open("README.md", encoding="utf-8") as f:
|
|
7
7
|
|
8
8
|
setup(
|
9
9
|
name="spiderforce4ai",
|
10
|
-
version="2.5.
|
10
|
+
version="2.5.4",
|
11
11
|
author="Piotr Tamulewicz",
|
12
12
|
author_email="pt@petertam.pro",
|
13
13
|
description="Python wrapper for SpiderForce4AI HTML-to-Markdown conversion service with LLM post-processing",
|
@@ -890,6 +890,14 @@ class SpiderForce4AI:
|
|
890
890
|
if config.post_agent_transformer_function:
|
891
891
|
try:
|
892
892
|
result.extraction_result = config.post_agent_transformer_function(llm_response)
|
893
|
+
except KeyError as e:
|
894
|
+
# Log missing field but continue with transformation
|
895
|
+
missing_field = str(e).strip("'")
|
896
|
+
logger.warning(f"Missing field '{missing_field}' in LLM response for {result.url}")
|
897
|
+
# Add missing field with empty value
|
898
|
+
llm_response[missing_field] = ""
|
899
|
+
# Retry transformation with added field
|
900
|
+
result.extraction_result = config.post_agent_transformer_function(llm_response)
|
893
901
|
except Exception as e:
|
894
902
|
logger.error(f"Transformer error for {result.url}: {str(e)}")
|
895
903
|
result.extraction_result = llm_response # Use original response if transform fails
|
@@ -298,12 +298,20 @@ class PostExtractionAgent:
|
|
298
298
|
try:
|
299
299
|
# Add URL to result before transformation
|
300
300
|
result['url'] = url
|
301
|
+
|
302
|
+
# Check for required fields and set to None if missing
|
303
|
+
required_fields = ['ContactInformation', 'CallToAction', 'KeyPoints', 'Title', 'Description', 'CanonicalUrl']
|
304
|
+
for field in required_fields:
|
305
|
+
if field not in result:
|
306
|
+
logger.warning(f"Missing field '{field}' in LLM response for {url}, setting to None")
|
307
|
+
result[field] = None
|
308
|
+
|
301
309
|
result = self.config.custom_transform_function(result)
|
302
310
|
logger.info(f"Applied custom transformation for {url}")
|
303
311
|
except Exception as e:
|
304
|
-
error_msg = f"
|
305
|
-
logger.
|
306
|
-
console.print(f"[
|
312
|
+
error_msg = f"Warning: Issue in custom transform for {url}: {str(e)}"
|
313
|
+
logger.warning(error_msg)
|
314
|
+
console.print(f"[yellow]{error_msg}[/yellow]")
|
307
315
|
|
308
316
|
# Save result synchronously
|
309
317
|
try:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|