aiecs 1.5.1__py3-none-any.whl
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.
- aiecs/__init__.py +72 -0
- aiecs/__main__.py +41 -0
- aiecs/aiecs_client.py +469 -0
- aiecs/application/__init__.py +10 -0
- aiecs/application/executors/__init__.py +10 -0
- aiecs/application/executors/operation_executor.py +363 -0
- aiecs/application/knowledge_graph/__init__.py +7 -0
- aiecs/application/knowledge_graph/builder/__init__.py +37 -0
- aiecs/application/knowledge_graph/builder/document_builder.py +375 -0
- aiecs/application/knowledge_graph/builder/graph_builder.py +356 -0
- aiecs/application/knowledge_graph/builder/schema_mapping.py +531 -0
- aiecs/application/knowledge_graph/builder/structured_pipeline.py +443 -0
- aiecs/application/knowledge_graph/builder/text_chunker.py +319 -0
- aiecs/application/knowledge_graph/extractors/__init__.py +27 -0
- aiecs/application/knowledge_graph/extractors/base.py +100 -0
- aiecs/application/knowledge_graph/extractors/llm_entity_extractor.py +327 -0
- aiecs/application/knowledge_graph/extractors/llm_relation_extractor.py +349 -0
- aiecs/application/knowledge_graph/extractors/ner_entity_extractor.py +244 -0
- aiecs/application/knowledge_graph/fusion/__init__.py +23 -0
- aiecs/application/knowledge_graph/fusion/entity_deduplicator.py +387 -0
- aiecs/application/knowledge_graph/fusion/entity_linker.py +343 -0
- aiecs/application/knowledge_graph/fusion/knowledge_fusion.py +580 -0
- aiecs/application/knowledge_graph/fusion/relation_deduplicator.py +189 -0
- aiecs/application/knowledge_graph/pattern_matching/__init__.py +21 -0
- aiecs/application/knowledge_graph/pattern_matching/pattern_matcher.py +344 -0
- aiecs/application/knowledge_graph/pattern_matching/query_executor.py +378 -0
- aiecs/application/knowledge_graph/profiling/__init__.py +12 -0
- aiecs/application/knowledge_graph/profiling/query_plan_visualizer.py +199 -0
- aiecs/application/knowledge_graph/profiling/query_profiler.py +223 -0
- aiecs/application/knowledge_graph/reasoning/__init__.py +27 -0
- aiecs/application/knowledge_graph/reasoning/evidence_synthesis.py +347 -0
- aiecs/application/knowledge_graph/reasoning/inference_engine.py +504 -0
- aiecs/application/knowledge_graph/reasoning/logic_form_parser.py +167 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/__init__.py +79 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/ast_builder.py +513 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/ast_nodes.py +630 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/ast_validator.py +654 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/error_handler.py +477 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/parser.py +390 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/query_context.py +217 -0
- aiecs/application/knowledge_graph/reasoning/logic_query_integration.py +169 -0
- aiecs/application/knowledge_graph/reasoning/query_planner.py +872 -0
- aiecs/application/knowledge_graph/reasoning/reasoning_engine.py +554 -0
- aiecs/application/knowledge_graph/retrieval/__init__.py +19 -0
- aiecs/application/knowledge_graph/retrieval/retrieval_strategies.py +596 -0
- aiecs/application/knowledge_graph/search/__init__.py +59 -0
- aiecs/application/knowledge_graph/search/hybrid_search.py +423 -0
- aiecs/application/knowledge_graph/search/reranker.py +295 -0
- aiecs/application/knowledge_graph/search/reranker_strategies.py +553 -0
- aiecs/application/knowledge_graph/search/text_similarity.py +398 -0
- aiecs/application/knowledge_graph/traversal/__init__.py +15 -0
- aiecs/application/knowledge_graph/traversal/enhanced_traversal.py +329 -0
- aiecs/application/knowledge_graph/traversal/path_scorer.py +269 -0
- aiecs/application/knowledge_graph/validators/__init__.py +13 -0
- aiecs/application/knowledge_graph/validators/relation_validator.py +189 -0
- aiecs/application/knowledge_graph/visualization/__init__.py +11 -0
- aiecs/application/knowledge_graph/visualization/graph_visualizer.py +321 -0
- aiecs/common/__init__.py +9 -0
- aiecs/common/knowledge_graph/__init__.py +17 -0
- aiecs/common/knowledge_graph/runnable.py +484 -0
- aiecs/config/__init__.py +16 -0
- aiecs/config/config.py +498 -0
- aiecs/config/graph_config.py +137 -0
- aiecs/config/registry.py +23 -0
- aiecs/core/__init__.py +46 -0
- aiecs/core/interface/__init__.py +34 -0
- aiecs/core/interface/execution_interface.py +152 -0
- aiecs/core/interface/storage_interface.py +171 -0
- aiecs/domain/__init__.py +289 -0
- aiecs/domain/agent/__init__.py +189 -0
- aiecs/domain/agent/base_agent.py +697 -0
- aiecs/domain/agent/exceptions.py +103 -0
- aiecs/domain/agent/graph_aware_mixin.py +559 -0
- aiecs/domain/agent/hybrid_agent.py +490 -0
- aiecs/domain/agent/integration/__init__.py +26 -0
- aiecs/domain/agent/integration/context_compressor.py +222 -0
- aiecs/domain/agent/integration/context_engine_adapter.py +252 -0
- aiecs/domain/agent/integration/retry_policy.py +219 -0
- aiecs/domain/agent/integration/role_config.py +213 -0
- aiecs/domain/agent/knowledge_aware_agent.py +646 -0
- aiecs/domain/agent/lifecycle.py +296 -0
- aiecs/domain/agent/llm_agent.py +300 -0
- aiecs/domain/agent/memory/__init__.py +12 -0
- aiecs/domain/agent/memory/conversation.py +197 -0
- aiecs/domain/agent/migration/__init__.py +14 -0
- aiecs/domain/agent/migration/conversion.py +160 -0
- aiecs/domain/agent/migration/legacy_wrapper.py +90 -0
- aiecs/domain/agent/models.py +317 -0
- aiecs/domain/agent/observability.py +407 -0
- aiecs/domain/agent/persistence.py +289 -0
- aiecs/domain/agent/prompts/__init__.py +29 -0
- aiecs/domain/agent/prompts/builder.py +161 -0
- aiecs/domain/agent/prompts/formatters.py +189 -0
- aiecs/domain/agent/prompts/template.py +255 -0
- aiecs/domain/agent/registry.py +260 -0
- aiecs/domain/agent/tool_agent.py +257 -0
- aiecs/domain/agent/tools/__init__.py +12 -0
- aiecs/domain/agent/tools/schema_generator.py +221 -0
- aiecs/domain/community/__init__.py +155 -0
- aiecs/domain/community/agent_adapter.py +477 -0
- aiecs/domain/community/analytics.py +481 -0
- aiecs/domain/community/collaborative_workflow.py +642 -0
- aiecs/domain/community/communication_hub.py +645 -0
- aiecs/domain/community/community_builder.py +320 -0
- aiecs/domain/community/community_integration.py +800 -0
- aiecs/domain/community/community_manager.py +813 -0
- aiecs/domain/community/decision_engine.py +879 -0
- aiecs/domain/community/exceptions.py +225 -0
- aiecs/domain/community/models/__init__.py +33 -0
- aiecs/domain/community/models/community_models.py +268 -0
- aiecs/domain/community/resource_manager.py +457 -0
- aiecs/domain/community/shared_context_manager.py +603 -0
- aiecs/domain/context/__init__.py +58 -0
- aiecs/domain/context/context_engine.py +989 -0
- aiecs/domain/context/conversation_models.py +354 -0
- aiecs/domain/context/graph_memory.py +467 -0
- aiecs/domain/execution/__init__.py +12 -0
- aiecs/domain/execution/model.py +57 -0
- aiecs/domain/knowledge_graph/__init__.py +19 -0
- aiecs/domain/knowledge_graph/models/__init__.py +52 -0
- aiecs/domain/knowledge_graph/models/entity.py +130 -0
- aiecs/domain/knowledge_graph/models/evidence.py +194 -0
- aiecs/domain/knowledge_graph/models/inference_rule.py +186 -0
- aiecs/domain/knowledge_graph/models/path.py +179 -0
- aiecs/domain/knowledge_graph/models/path_pattern.py +173 -0
- aiecs/domain/knowledge_graph/models/query.py +272 -0
- aiecs/domain/knowledge_graph/models/query_plan.py +187 -0
- aiecs/domain/knowledge_graph/models/relation.py +136 -0
- aiecs/domain/knowledge_graph/schema/__init__.py +23 -0
- aiecs/domain/knowledge_graph/schema/entity_type.py +135 -0
- aiecs/domain/knowledge_graph/schema/graph_schema.py +271 -0
- aiecs/domain/knowledge_graph/schema/property_schema.py +155 -0
- aiecs/domain/knowledge_graph/schema/relation_type.py +171 -0
- aiecs/domain/knowledge_graph/schema/schema_manager.py +496 -0
- aiecs/domain/knowledge_graph/schema/type_enums.py +205 -0
- aiecs/domain/task/__init__.py +13 -0
- aiecs/domain/task/dsl_processor.py +613 -0
- aiecs/domain/task/model.py +62 -0
- aiecs/domain/task/task_context.py +268 -0
- aiecs/infrastructure/__init__.py +24 -0
- aiecs/infrastructure/graph_storage/__init__.py +11 -0
- aiecs/infrastructure/graph_storage/base.py +601 -0
- aiecs/infrastructure/graph_storage/batch_operations.py +449 -0
- aiecs/infrastructure/graph_storage/cache.py +429 -0
- aiecs/infrastructure/graph_storage/distributed.py +226 -0
- aiecs/infrastructure/graph_storage/error_handling.py +390 -0
- aiecs/infrastructure/graph_storage/graceful_degradation.py +306 -0
- aiecs/infrastructure/graph_storage/health_checks.py +378 -0
- aiecs/infrastructure/graph_storage/in_memory.py +514 -0
- aiecs/infrastructure/graph_storage/index_optimization.py +483 -0
- aiecs/infrastructure/graph_storage/lazy_loading.py +410 -0
- aiecs/infrastructure/graph_storage/metrics.py +357 -0
- aiecs/infrastructure/graph_storage/migration.py +413 -0
- aiecs/infrastructure/graph_storage/pagination.py +471 -0
- aiecs/infrastructure/graph_storage/performance_monitoring.py +466 -0
- aiecs/infrastructure/graph_storage/postgres.py +871 -0
- aiecs/infrastructure/graph_storage/query_optimizer.py +635 -0
- aiecs/infrastructure/graph_storage/schema_cache.py +290 -0
- aiecs/infrastructure/graph_storage/sqlite.py +623 -0
- aiecs/infrastructure/graph_storage/streaming.py +495 -0
- aiecs/infrastructure/messaging/__init__.py +13 -0
- aiecs/infrastructure/messaging/celery_task_manager.py +383 -0
- aiecs/infrastructure/messaging/websocket_manager.py +298 -0
- aiecs/infrastructure/monitoring/__init__.py +34 -0
- aiecs/infrastructure/monitoring/executor_metrics.py +174 -0
- aiecs/infrastructure/monitoring/global_metrics_manager.py +213 -0
- aiecs/infrastructure/monitoring/structured_logger.py +48 -0
- aiecs/infrastructure/monitoring/tracing_manager.py +410 -0
- aiecs/infrastructure/persistence/__init__.py +24 -0
- aiecs/infrastructure/persistence/context_engine_client.py +187 -0
- aiecs/infrastructure/persistence/database_manager.py +333 -0
- aiecs/infrastructure/persistence/file_storage.py +754 -0
- aiecs/infrastructure/persistence/redis_client.py +220 -0
- aiecs/llm/__init__.py +86 -0
- aiecs/llm/callbacks/__init__.py +11 -0
- aiecs/llm/callbacks/custom_callbacks.py +264 -0
- aiecs/llm/client_factory.py +420 -0
- aiecs/llm/clients/__init__.py +33 -0
- aiecs/llm/clients/base_client.py +193 -0
- aiecs/llm/clients/googleai_client.py +181 -0
- aiecs/llm/clients/openai_client.py +131 -0
- aiecs/llm/clients/vertex_client.py +437 -0
- aiecs/llm/clients/xai_client.py +184 -0
- aiecs/llm/config/__init__.py +51 -0
- aiecs/llm/config/config_loader.py +275 -0
- aiecs/llm/config/config_validator.py +236 -0
- aiecs/llm/config/model_config.py +151 -0
- aiecs/llm/utils/__init__.py +10 -0
- aiecs/llm/utils/validate_config.py +91 -0
- aiecs/main.py +363 -0
- aiecs/scripts/__init__.py +3 -0
- aiecs/scripts/aid/VERSION_MANAGEMENT.md +97 -0
- aiecs/scripts/aid/__init__.py +19 -0
- aiecs/scripts/aid/version_manager.py +215 -0
- aiecs/scripts/dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md +242 -0
- aiecs/scripts/dependance_check/README_DEPENDENCY_CHECKER.md +310 -0
- aiecs/scripts/dependance_check/__init__.py +17 -0
- aiecs/scripts/dependance_check/dependency_checker.py +938 -0
- aiecs/scripts/dependance_check/dependency_fixer.py +391 -0
- aiecs/scripts/dependance_check/download_nlp_data.py +396 -0
- aiecs/scripts/dependance_check/quick_dependency_check.py +270 -0
- aiecs/scripts/dependance_check/setup_nlp_data.sh +217 -0
- aiecs/scripts/dependance_patch/__init__.py +7 -0
- aiecs/scripts/dependance_patch/fix_weasel/README_WEASEL_PATCH.md +126 -0
- aiecs/scripts/dependance_patch/fix_weasel/__init__.py +11 -0
- aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.py +128 -0
- aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.sh +82 -0
- aiecs/scripts/dependance_patch/fix_weasel/patch_weasel_library.sh +188 -0
- aiecs/scripts/dependance_patch/fix_weasel/run_weasel_patch.sh +41 -0
- aiecs/scripts/tools_develop/README.md +449 -0
- aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +234 -0
- aiecs/scripts/tools_develop/__init__.py +21 -0
- aiecs/scripts/tools_develop/check_type_annotations.py +259 -0
- aiecs/scripts/tools_develop/validate_tool_schemas.py +422 -0
- aiecs/scripts/tools_develop/verify_tools.py +356 -0
- aiecs/tasks/__init__.py +1 -0
- aiecs/tasks/worker.py +172 -0
- aiecs/tools/__init__.py +299 -0
- aiecs/tools/apisource/__init__.py +99 -0
- aiecs/tools/apisource/intelligence/__init__.py +19 -0
- aiecs/tools/apisource/intelligence/data_fusion.py +381 -0
- aiecs/tools/apisource/intelligence/query_analyzer.py +413 -0
- aiecs/tools/apisource/intelligence/search_enhancer.py +388 -0
- aiecs/tools/apisource/monitoring/__init__.py +9 -0
- aiecs/tools/apisource/monitoring/metrics.py +303 -0
- aiecs/tools/apisource/providers/__init__.py +115 -0
- aiecs/tools/apisource/providers/base.py +664 -0
- aiecs/tools/apisource/providers/census.py +401 -0
- aiecs/tools/apisource/providers/fred.py +564 -0
- aiecs/tools/apisource/providers/newsapi.py +412 -0
- aiecs/tools/apisource/providers/worldbank.py +357 -0
- aiecs/tools/apisource/reliability/__init__.py +12 -0
- aiecs/tools/apisource/reliability/error_handler.py +375 -0
- aiecs/tools/apisource/reliability/fallback_strategy.py +391 -0
- aiecs/tools/apisource/tool.py +850 -0
- aiecs/tools/apisource/utils/__init__.py +9 -0
- aiecs/tools/apisource/utils/validators.py +338 -0
- aiecs/tools/base_tool.py +201 -0
- aiecs/tools/docs/__init__.py +121 -0
- aiecs/tools/docs/ai_document_orchestrator.py +599 -0
- aiecs/tools/docs/ai_document_writer_orchestrator.py +2403 -0
- aiecs/tools/docs/content_insertion_tool.py +1333 -0
- aiecs/tools/docs/document_creator_tool.py +1317 -0
- aiecs/tools/docs/document_layout_tool.py +1166 -0
- aiecs/tools/docs/document_parser_tool.py +994 -0
- aiecs/tools/docs/document_writer_tool.py +1818 -0
- aiecs/tools/knowledge_graph/__init__.py +17 -0
- aiecs/tools/knowledge_graph/graph_reasoning_tool.py +734 -0
- aiecs/tools/knowledge_graph/graph_search_tool.py +923 -0
- aiecs/tools/knowledge_graph/kg_builder_tool.py +476 -0
- aiecs/tools/langchain_adapter.py +542 -0
- aiecs/tools/schema_generator.py +275 -0
- aiecs/tools/search_tool/__init__.py +100 -0
- aiecs/tools/search_tool/analyzers.py +589 -0
- aiecs/tools/search_tool/cache.py +260 -0
- aiecs/tools/search_tool/constants.py +128 -0
- aiecs/tools/search_tool/context.py +216 -0
- aiecs/tools/search_tool/core.py +749 -0
- aiecs/tools/search_tool/deduplicator.py +123 -0
- aiecs/tools/search_tool/error_handler.py +271 -0
- aiecs/tools/search_tool/metrics.py +371 -0
- aiecs/tools/search_tool/rate_limiter.py +178 -0
- aiecs/tools/search_tool/schemas.py +277 -0
- aiecs/tools/statistics/__init__.py +80 -0
- aiecs/tools/statistics/ai_data_analysis_orchestrator.py +643 -0
- aiecs/tools/statistics/ai_insight_generator_tool.py +505 -0
- aiecs/tools/statistics/ai_report_orchestrator_tool.py +694 -0
- aiecs/tools/statistics/data_loader_tool.py +564 -0
- aiecs/tools/statistics/data_profiler_tool.py +658 -0
- aiecs/tools/statistics/data_transformer_tool.py +573 -0
- aiecs/tools/statistics/data_visualizer_tool.py +495 -0
- aiecs/tools/statistics/model_trainer_tool.py +487 -0
- aiecs/tools/statistics/statistical_analyzer_tool.py +459 -0
- aiecs/tools/task_tools/__init__.py +86 -0
- aiecs/tools/task_tools/chart_tool.py +732 -0
- aiecs/tools/task_tools/classfire_tool.py +922 -0
- aiecs/tools/task_tools/image_tool.py +447 -0
- aiecs/tools/task_tools/office_tool.py +684 -0
- aiecs/tools/task_tools/pandas_tool.py +635 -0
- aiecs/tools/task_tools/report_tool.py +635 -0
- aiecs/tools/task_tools/research_tool.py +392 -0
- aiecs/tools/task_tools/scraper_tool.py +715 -0
- aiecs/tools/task_tools/stats_tool.py +688 -0
- aiecs/tools/temp_file_manager.py +130 -0
- aiecs/tools/tool_executor/__init__.py +37 -0
- aiecs/tools/tool_executor/tool_executor.py +881 -0
- aiecs/utils/LLM_output_structor.py +445 -0
- aiecs/utils/__init__.py +34 -0
- aiecs/utils/base_callback.py +47 -0
- aiecs/utils/cache_provider.py +695 -0
- aiecs/utils/execution_utils.py +184 -0
- aiecs/utils/logging.py +1 -0
- aiecs/utils/prompt_loader.py +14 -0
- aiecs/utils/token_usage_repository.py +323 -0
- aiecs/ws/__init__.py +0 -0
- aiecs/ws/socket_server.py +52 -0
- aiecs-1.5.1.dist-info/METADATA +608 -0
- aiecs-1.5.1.dist-info/RECORD +302 -0
- aiecs-1.5.1.dist-info/WHEEL +5 -0
- aiecs-1.5.1.dist-info/entry_points.txt +10 -0
- aiecs-1.5.1.dist-info/licenses/LICENSE +225 -0
- aiecs-1.5.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Pydantic Schema Definitions for SearchTool Operations
|
|
3
|
+
|
|
4
|
+
Provides input validation, type safety, and automatic documentation
|
|
5
|
+
for all SearchTool operations.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import Optional, List
|
|
9
|
+
from pydantic import BaseModel, Field, field_validator
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SearchWebSchema(BaseModel):
|
|
13
|
+
"""Schema for search_web operation"""
|
|
14
|
+
|
|
15
|
+
query: str = Field(description="Search query string")
|
|
16
|
+
num_results: int = Field(
|
|
17
|
+
default=10,
|
|
18
|
+
ge=1,
|
|
19
|
+
le=100,
|
|
20
|
+
description="Number of results to return (1-100)",
|
|
21
|
+
)
|
|
22
|
+
start_index: int = Field(
|
|
23
|
+
default=1,
|
|
24
|
+
ge=1,
|
|
25
|
+
le=91,
|
|
26
|
+
description="Starting index for pagination (1-91)",
|
|
27
|
+
)
|
|
28
|
+
language: str = Field(
|
|
29
|
+
default="en",
|
|
30
|
+
description="Language code for results (e.g., 'en', 'zh-CN', 'es')",
|
|
31
|
+
)
|
|
32
|
+
country: str = Field(
|
|
33
|
+
default="us",
|
|
34
|
+
description="Country code for geolocation (e.g., 'us', 'cn', 'uk')",
|
|
35
|
+
)
|
|
36
|
+
safe_search: str = Field(
|
|
37
|
+
default="medium",
|
|
38
|
+
description="Safe search level: 'off', 'medium', or 'high'",
|
|
39
|
+
)
|
|
40
|
+
date_restrict: Optional[str] = Field(
|
|
41
|
+
default=None,
|
|
42
|
+
description="Date restriction (e.g., 'd7' for last 7 days, 'm3' for last 3 months)",
|
|
43
|
+
)
|
|
44
|
+
file_type: Optional[str] = Field(
|
|
45
|
+
default=None,
|
|
46
|
+
description="File type filter (e.g., 'pdf', 'doc', 'xls')",
|
|
47
|
+
)
|
|
48
|
+
exclude_terms: Optional[List[str]] = Field(
|
|
49
|
+
default=None, description="Terms to exclude from search results"
|
|
50
|
+
)
|
|
51
|
+
auto_enhance: bool = Field(
|
|
52
|
+
default=True,
|
|
53
|
+
description="Whether to automatically enhance query based on detected intent",
|
|
54
|
+
)
|
|
55
|
+
return_summary: bool = Field(
|
|
56
|
+
default=False,
|
|
57
|
+
description="Whether to return a structured summary of results",
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
@field_validator("safe_search")
|
|
61
|
+
@classmethod
|
|
62
|
+
def validate_safe_search(cls, v: str) -> str:
|
|
63
|
+
"""Validate safe search level"""
|
|
64
|
+
allowed = ["off", "medium", "high"]
|
|
65
|
+
if v not in allowed:
|
|
66
|
+
raise ValueError(f"safe_search must be one of {allowed}")
|
|
67
|
+
return v
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class SearchImagesSchema(BaseModel):
|
|
71
|
+
"""Schema for search_images operation"""
|
|
72
|
+
|
|
73
|
+
query: str = Field(description="Image search query string")
|
|
74
|
+
num_results: int = Field(
|
|
75
|
+
default=10,
|
|
76
|
+
ge=1,
|
|
77
|
+
le=100,
|
|
78
|
+
description="Number of image results to return (1-100)",
|
|
79
|
+
)
|
|
80
|
+
image_size: Optional[str] = Field(
|
|
81
|
+
default=None,
|
|
82
|
+
description="Image size filter: 'icon', 'small', 'medium', 'large', 'xlarge', 'xxlarge', 'huge'",
|
|
83
|
+
)
|
|
84
|
+
image_type: Optional[str] = Field(
|
|
85
|
+
default=None,
|
|
86
|
+
description="Image type filter: 'clipart', 'face', 'lineart', 'stock', 'photo', 'animated'",
|
|
87
|
+
)
|
|
88
|
+
image_color_type: Optional[str] = Field(
|
|
89
|
+
default=None,
|
|
90
|
+
description="Color type filter: 'color', 'gray', 'mono', 'trans'",
|
|
91
|
+
)
|
|
92
|
+
safe_search: str = Field(
|
|
93
|
+
default="medium",
|
|
94
|
+
description="Safe search level: 'off', 'medium', or 'high'",
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
@field_validator("safe_search")
|
|
98
|
+
@classmethod
|
|
99
|
+
def validate_safe_search(cls, v: str) -> str:
|
|
100
|
+
"""Validate safe search level"""
|
|
101
|
+
allowed = ["off", "medium", "high"]
|
|
102
|
+
if v not in allowed:
|
|
103
|
+
raise ValueError(f"safe_search must be one of {allowed}")
|
|
104
|
+
return v
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class SearchNewsSchema(BaseModel):
|
|
108
|
+
"""Schema for search_news operation"""
|
|
109
|
+
|
|
110
|
+
query: str = Field(description="News search query string")
|
|
111
|
+
num_results: int = Field(
|
|
112
|
+
default=10,
|
|
113
|
+
ge=1,
|
|
114
|
+
le=100,
|
|
115
|
+
description="Number of news results to return (1-100)",
|
|
116
|
+
)
|
|
117
|
+
start_index: int = Field(
|
|
118
|
+
default=1,
|
|
119
|
+
ge=1,
|
|
120
|
+
le=91,
|
|
121
|
+
description="Starting index for pagination (1-91)",
|
|
122
|
+
)
|
|
123
|
+
language: str = Field(
|
|
124
|
+
default="en",
|
|
125
|
+
description="Language code for news articles (e.g., 'en', 'zh-CN', 'es')",
|
|
126
|
+
)
|
|
127
|
+
date_restrict: Optional[str] = Field(
|
|
128
|
+
default=None,
|
|
129
|
+
description="Date restriction (e.g., 'd7' for last 7 days, 'm1' for last month)",
|
|
130
|
+
)
|
|
131
|
+
sort_by: str = Field(
|
|
132
|
+
default="date",
|
|
133
|
+
description="Sort order: 'date' for newest first, 'relevance' for most relevant",
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
@field_validator("sort_by")
|
|
137
|
+
@classmethod
|
|
138
|
+
def validate_sort_by(cls, v: str) -> str:
|
|
139
|
+
"""Validate sort order"""
|
|
140
|
+
allowed = ["date", "relevance"]
|
|
141
|
+
if v not in allowed:
|
|
142
|
+
raise ValueError(f"sort_by must be one of {allowed}")
|
|
143
|
+
return v
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class SearchVideosSchema(BaseModel):
|
|
147
|
+
"""Schema for search_videos operation"""
|
|
148
|
+
|
|
149
|
+
query: str = Field(description="Video search query string")
|
|
150
|
+
num_results: int = Field(
|
|
151
|
+
default=10,
|
|
152
|
+
ge=1,
|
|
153
|
+
le=100,
|
|
154
|
+
description="Number of video results to return (1-100)",
|
|
155
|
+
)
|
|
156
|
+
start_index: int = Field(
|
|
157
|
+
default=1,
|
|
158
|
+
ge=1,
|
|
159
|
+
le=91,
|
|
160
|
+
description="Starting index for pagination (1-91)",
|
|
161
|
+
)
|
|
162
|
+
language: str = Field(
|
|
163
|
+
default="en",
|
|
164
|
+
description="Language code for videos (e.g., 'en', 'zh-CN', 'es')",
|
|
165
|
+
)
|
|
166
|
+
safe_search: str = Field(
|
|
167
|
+
default="medium",
|
|
168
|
+
description="Safe search level: 'off', 'medium', or 'high'",
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
@field_validator("safe_search")
|
|
172
|
+
@classmethod
|
|
173
|
+
def validate_safe_search(cls, v: str) -> str:
|
|
174
|
+
"""Validate safe search level"""
|
|
175
|
+
allowed = ["off", "medium", "high"]
|
|
176
|
+
if v not in allowed:
|
|
177
|
+
raise ValueError(f"safe_search must be one of {allowed}")
|
|
178
|
+
return v
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
class SearchPaginatedSchema(BaseModel):
|
|
182
|
+
"""Schema for search_paginated operation"""
|
|
183
|
+
|
|
184
|
+
query: str = Field(description="Search query string")
|
|
185
|
+
total_results: int = Field(
|
|
186
|
+
ge=1,
|
|
187
|
+
le=1000,
|
|
188
|
+
description="Total number of results to retrieve (1-1000)",
|
|
189
|
+
)
|
|
190
|
+
search_type: str = Field(
|
|
191
|
+
default="web",
|
|
192
|
+
description="Type of search: 'web', 'images', 'news', or 'videos'",
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
@field_validator("search_type")
|
|
196
|
+
@classmethod
|
|
197
|
+
def validate_search_type(cls, v: str) -> str:
|
|
198
|
+
"""Validate search type"""
|
|
199
|
+
allowed = ["web", "images", "news", "videos"]
|
|
200
|
+
if v not in allowed:
|
|
201
|
+
raise ValueError(f"search_type must be one of {allowed}")
|
|
202
|
+
return v
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class SearchBatchSchema(BaseModel):
|
|
206
|
+
"""Schema for search_batch operation"""
|
|
207
|
+
|
|
208
|
+
queries: List[str] = Field(description="List of search queries to execute in batch")
|
|
209
|
+
search_type: str = Field(
|
|
210
|
+
default="web",
|
|
211
|
+
description="Type of search: 'web', 'images', 'news', or 'videos'",
|
|
212
|
+
)
|
|
213
|
+
num_results: int = Field(
|
|
214
|
+
default=10,
|
|
215
|
+
ge=1,
|
|
216
|
+
le=100,
|
|
217
|
+
description="Number of results per query (1-100)",
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
@field_validator("queries")
|
|
221
|
+
@classmethod
|
|
222
|
+
def validate_queries(cls, v: List[str]) -> List[str]:
|
|
223
|
+
"""Validate queries list"""
|
|
224
|
+
if not v:
|
|
225
|
+
raise ValueError("queries list cannot be empty")
|
|
226
|
+
if len(v) > 50:
|
|
227
|
+
raise ValueError("Maximum 50 queries allowed in batch")
|
|
228
|
+
return v
|
|
229
|
+
|
|
230
|
+
@field_validator("search_type")
|
|
231
|
+
@classmethod
|
|
232
|
+
def validate_search_type(cls, v: str) -> str:
|
|
233
|
+
"""Validate search type"""
|
|
234
|
+
allowed = ["web", "images", "news", "videos"]
|
|
235
|
+
if v not in allowed:
|
|
236
|
+
raise ValueError(f"search_type must be one of {allowed}")
|
|
237
|
+
return v
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
class ValidateCredentialsSchema(BaseModel):
|
|
241
|
+
"""Schema for validate_credentials operation (no parameters required)"""
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class GetQuotaStatusSchema(BaseModel):
|
|
245
|
+
"""Schema for get_quota_status operation (no parameters required)"""
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
class GetMetricsSchema(BaseModel):
|
|
249
|
+
"""Schema for get_metrics operation (no parameters required)"""
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
class GetMetricsReportSchema(BaseModel):
|
|
253
|
+
"""Schema for get_metrics_report operation (no parameters required)"""
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
class GetHealthScoreSchema(BaseModel):
|
|
257
|
+
"""Schema for get_health_score operation (no parameters required)"""
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
class GetSearchContextSchema(BaseModel):
|
|
261
|
+
"""Schema for get_search_context operation (no parameters required)"""
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
__all__ = [
|
|
265
|
+
"SearchWebSchema",
|
|
266
|
+
"SearchImagesSchema",
|
|
267
|
+
"SearchNewsSchema",
|
|
268
|
+
"SearchVideosSchema",
|
|
269
|
+
"SearchPaginatedSchema",
|
|
270
|
+
"SearchBatchSchema",
|
|
271
|
+
"ValidateCredentialsSchema",
|
|
272
|
+
"GetQuotaStatusSchema",
|
|
273
|
+
"GetMetricsSchema",
|
|
274
|
+
"GetMetricsReportSchema",
|
|
275
|
+
"GetHealthScoreSchema",
|
|
276
|
+
"GetSearchContextSchema",
|
|
277
|
+
]
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Statistics and Data Analysis Tools Module
|
|
3
|
+
|
|
4
|
+
This module contains specialized tools for data analysis and statistical operations:
|
|
5
|
+
- data_loader: Universal data loading from multiple file formats
|
|
6
|
+
- data_profiler: Comprehensive data profiling and quality assessment
|
|
7
|
+
- data_transformer: Data cleaning, transformation, and feature engineering
|
|
8
|
+
- data_visualizer: Smart data visualization and chart generation
|
|
9
|
+
- statistical_analyzer: Advanced statistical analysis and hypothesis testing
|
|
10
|
+
- model_trainer: AutoML and machine learning model training
|
|
11
|
+
- ai_data_analysis_orchestrator: AI-powered end-to-end analysis orchestration
|
|
12
|
+
- ai_insight_generator: AI-driven insight discovery and pattern detection
|
|
13
|
+
- ai_report_orchestrator: AI-powered comprehensive report generation
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
# Lazy import strategy to avoid heavy dependencies at import time
|
|
17
|
+
import logging
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
# Define available tools for lazy loading
|
|
22
|
+
_AVAILABLE_STATISTICS_TOOLS = [
|
|
23
|
+
"data_loader_tool",
|
|
24
|
+
"data_profiler_tool",
|
|
25
|
+
"data_transformer_tool",
|
|
26
|
+
"data_visualizer_tool",
|
|
27
|
+
"statistical_analyzer_tool",
|
|
28
|
+
"model_trainer_tool",
|
|
29
|
+
"ai_data_analysis_orchestrator",
|
|
30
|
+
"ai_insight_generator_tool",
|
|
31
|
+
"ai_report_orchestrator_tool",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
# Track which tools have been loaded
|
|
35
|
+
_LOADED_STATISTICS_TOOLS = set()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _lazy_load_statistics_tool(tool_name: str):
|
|
39
|
+
"""Lazy load a specific statistics tool module"""
|
|
40
|
+
if tool_name in _LOADED_STATISTICS_TOOLS:
|
|
41
|
+
return
|
|
42
|
+
|
|
43
|
+
try:
|
|
44
|
+
if tool_name == "data_loader_tool":
|
|
45
|
+
pass
|
|
46
|
+
elif tool_name == "data_profiler_tool":
|
|
47
|
+
pass
|
|
48
|
+
elif tool_name == "data_transformer_tool":
|
|
49
|
+
pass
|
|
50
|
+
elif tool_name == "data_visualizer_tool":
|
|
51
|
+
pass
|
|
52
|
+
elif tool_name == "statistical_analyzer_tool":
|
|
53
|
+
pass
|
|
54
|
+
elif tool_name == "model_trainer_tool":
|
|
55
|
+
pass
|
|
56
|
+
elif tool_name == "ai_data_analysis_orchestrator":
|
|
57
|
+
pass
|
|
58
|
+
elif tool_name == "ai_insight_generator_tool":
|
|
59
|
+
pass
|
|
60
|
+
elif tool_name == "ai_report_orchestrator_tool":
|
|
61
|
+
pass
|
|
62
|
+
|
|
63
|
+
_LOADED_STATISTICS_TOOLS.add(tool_name)
|
|
64
|
+
logger.info(f"Successfully loaded statistics tool: {tool_name}")
|
|
65
|
+
|
|
66
|
+
except Exception as e:
|
|
67
|
+
logger.warning(f"Failed to load statistics tool {tool_name}: {e}")
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def load_all_statistics_tools():
|
|
71
|
+
"""Load all available statistics tools"""
|
|
72
|
+
for tool_name in _AVAILABLE_STATISTICS_TOOLS:
|
|
73
|
+
_lazy_load_statistics_tool(tool_name)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
# Auto-load all tools when module is imported
|
|
77
|
+
# This ensures all tools are registered
|
|
78
|
+
load_all_statistics_tools()
|
|
79
|
+
|
|
80
|
+
__all__ = ["load_all_statistics_tools", "_lazy_load_statistics_tool"]
|