unique-web-search 1.8.3__tar.gz → 1.9.1__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.
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/PKG-INFO +1 -1
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/pyproject.toml +1 -1
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/service.py +0 -1
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/__init__.py +2 -4
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/bing.py +16 -4
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/custom_api.py +5 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/README.md +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/__init__.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/client_settings.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/config.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/prompts.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/schema.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/client/proxy_config.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/content_processing/__init__.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/content_processing/config.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/content_processing/service.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/README.md +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/__init__.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/base.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/basic.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/crawl4ai.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/firecrawl.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/jina.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/tavily.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/README.md +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/__init__.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/base_executor.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/configs/__init__.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/configs/base.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/configs/prompts.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/configs/v1_config.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/configs/v2_config.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/web_search_v1_executor.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/executors/web_search_v2_executor.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/helpers.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/README.md +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/base.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/brave.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/firecrawl.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/google.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/jina.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/schema.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/tavily.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/bing/__init__.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/bing/identity.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/bing/project.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/google/schema.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/vertexai/__init__.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/vertexai/client.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/vertexai/config.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/vertexai/exceptions.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/vertexai/gemini.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/vertexai/prompts.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/utils/vertexai/response_handler.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/search_engine/vertexai.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/settings.py +0 -0
- {unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: unique-web-search
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.9.1
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Andreas Hauri, Gustav Hartz, Rami Azouz
|
|
6
6
|
Author-email: Andreas Hauri <andreas@unique.ch>, Gustav Hartz <gustav.hartz.ext@unique.ch>, Rami Azouz <rami.ext@unique.ch>
|
|
@@ -46,7 +46,6 @@ class WebSearchTool(Tool[WebSearchConfig]):
|
|
|
46
46
|
self.search_engine_service = get_search_engine_service(
|
|
47
47
|
self.config.search_engine_config,
|
|
48
48
|
self.language_model_service,
|
|
49
|
-
self.language_model,
|
|
50
49
|
)
|
|
51
50
|
self.crawler_service = get_crawler_service(self.config.crawler_config)
|
|
52
51
|
self.chunk_relevancy_sorter = ChunkRelevancySorter(self.event)
|
|
@@ -3,7 +3,6 @@ from functools import reduce
|
|
|
3
3
|
from typing import TypeAlias
|
|
4
4
|
|
|
5
5
|
from unique_toolkit import LanguageModelService
|
|
6
|
-
from unique_toolkit._common.validators import LMI
|
|
7
6
|
|
|
8
7
|
from unique_web_search.services.search_engine.base import (
|
|
9
8
|
BaseSearchEngineConfig,
|
|
@@ -79,7 +78,6 @@ ENGINE_NAME_TO_CONFIG = {
|
|
|
79
78
|
def get_search_engine_service(
|
|
80
79
|
search_engine_config: SearchEngineConfigTypes,
|
|
81
80
|
language_model_service: LanguageModelService,
|
|
82
|
-
lmi: LMI,
|
|
83
81
|
):
|
|
84
82
|
match search_engine_config.search_engine_name:
|
|
85
83
|
case SearchEngineType.FIRECRAWL:
|
|
@@ -91,9 +89,9 @@ def get_search_engine_service(
|
|
|
91
89
|
case SearchEngineType.TAVILY:
|
|
92
90
|
return TavilySearch(search_engine_config)
|
|
93
91
|
case SearchEngineType.BING:
|
|
94
|
-
return BingSearch(search_engine_config, language_model_service
|
|
92
|
+
return BingSearch(search_engine_config, language_model_service)
|
|
95
93
|
case SearchEngineType.BRAVE:
|
|
96
|
-
return BraveSearch(search_engine_config
|
|
94
|
+
return BraveSearch(search_engine_config)
|
|
97
95
|
case SearchEngineType.VERTEXAI:
|
|
98
96
|
return VertexAI(search_engine_config)
|
|
99
97
|
case SearchEngineType.CUSTOM_API:
|
|
@@ -2,11 +2,13 @@ import logging
|
|
|
2
2
|
from typing import Literal
|
|
3
3
|
|
|
4
4
|
from azure.ai.agents.models import ListSortOrder
|
|
5
|
-
from pydantic import BaseModel, Field
|
|
5
|
+
from pydantic import BaseModel, Field, field_validator
|
|
6
6
|
from unique_toolkit import LanguageModelService
|
|
7
|
-
from unique_toolkit._common.validators import LMI
|
|
7
|
+
from unique_toolkit._common.validators import LMI, get_LMI_default_field
|
|
8
8
|
from unique_toolkit.agentic.tools.config import get_configuration_dict
|
|
9
9
|
from unique_toolkit.language_model.builder import MessagesBuilder
|
|
10
|
+
from unique_toolkit.language_model.default_language_model import DEFAULT_GPT_4o
|
|
11
|
+
from unique_toolkit.language_model.infos import ModelCapabilities
|
|
10
12
|
|
|
11
13
|
from unique_web_search.services.search_engine.base import (
|
|
12
14
|
BaseSearchEngineConfig,
|
|
@@ -47,6 +49,17 @@ class BingSearchConfig(
|
|
|
47
49
|
BaseSearchEngineConfig[SearchEngineType.BING], BingSearchOptionalQueryParams
|
|
48
50
|
):
|
|
49
51
|
search_engine_name: Literal[SearchEngineType.BING] = SearchEngineType.BING
|
|
52
|
+
language_model: LMI = get_LMI_default_field(DEFAULT_GPT_4o)
|
|
53
|
+
|
|
54
|
+
@field_validator("language_model", mode="after")
|
|
55
|
+
@classmethod
|
|
56
|
+
def validate_language_model(cls, v: LMI) -> LMI:
|
|
57
|
+
if ModelCapabilities.STRUCTURED_OUTPUT not in v.capabilities:
|
|
58
|
+
raise ValueError(
|
|
59
|
+
f"Language model '{v.name}' does not support structured output. "
|
|
60
|
+
f"BingSearch requires a model with structured output capability."
|
|
61
|
+
)
|
|
62
|
+
return v
|
|
50
63
|
|
|
51
64
|
|
|
52
65
|
class BingSearch(SearchEngine[BingSearchConfig]):
|
|
@@ -54,11 +67,10 @@ class BingSearch(SearchEngine[BingSearchConfig]):
|
|
|
54
67
|
self,
|
|
55
68
|
config: BingSearchConfig,
|
|
56
69
|
language_model_service: LanguageModelService,
|
|
57
|
-
lmi: LMI,
|
|
58
70
|
):
|
|
59
71
|
super().__init__(config)
|
|
60
72
|
self.language_model_service = language_model_service
|
|
61
|
-
self.lmi =
|
|
73
|
+
self.lmi = config.language_model
|
|
62
74
|
self.credentials = get_crendentials()
|
|
63
75
|
self.is_configured = credentials_are_valid(self.credentials)
|
|
64
76
|
|
|
@@ -98,6 +98,11 @@ class CustomAPI(SearchEngine[CustomAPIConfig]):
|
|
|
98
98
|
json=body,
|
|
99
99
|
)
|
|
100
100
|
|
|
101
|
+
if not response.is_success:
|
|
102
|
+
raise ValueError(
|
|
103
|
+
f"Search engine request failed with status {response.status_code}: {response.text}"
|
|
104
|
+
)
|
|
105
|
+
|
|
101
106
|
validated_response = WebSearchResults.model_validate(response.json())
|
|
102
107
|
return validated_response.results
|
|
103
108
|
|
|
File without changes
|
|
File without changes
|
{unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/client_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/base.py
RENAMED
|
File without changes
|
{unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/basic.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/crawlers/jina.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{unique_web_search-1.8.3 → unique_web_search-1.9.1}/src/unique_web_search/services/helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|