ag2 0.9.6__py3-none-any.whl → 0.9.8.post1__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.
Potentially problematic release.
This version of ag2 might be problematic. Click here for more details.
- {ag2-0.9.6.dist-info → ag2-0.9.8.post1.dist-info}/METADATA +102 -75
- ag2-0.9.8.post1.dist-info/RECORD +387 -0
- autogen/__init__.py +1 -2
- autogen/_website/generate_api_references.py +4 -5
- autogen/_website/generate_mkdocs.py +9 -15
- autogen/_website/notebook_processor.py +13 -14
- autogen/_website/process_notebooks.py +10 -10
- autogen/_website/utils.py +5 -4
- autogen/agentchat/agent.py +13 -13
- autogen/agentchat/assistant_agent.py +7 -6
- autogen/agentchat/contrib/agent_eval/agent_eval.py +3 -3
- autogen/agentchat/contrib/agent_eval/critic_agent.py +3 -3
- autogen/agentchat/contrib/agent_eval/quantifier_agent.py +3 -3
- autogen/agentchat/contrib/agent_eval/subcritic_agent.py +3 -3
- autogen/agentchat/contrib/agent_optimizer.py +3 -3
- autogen/agentchat/contrib/capabilities/generate_images.py +11 -11
- autogen/agentchat/contrib/capabilities/teachability.py +15 -15
- autogen/agentchat/contrib/capabilities/transforms.py +17 -18
- autogen/agentchat/contrib/capabilities/transforms_util.py +5 -5
- autogen/agentchat/contrib/capabilities/vision_capability.py +4 -3
- autogen/agentchat/contrib/captainagent/agent_builder.py +30 -30
- autogen/agentchat/contrib/captainagent/captainagent.py +22 -21
- autogen/agentchat/contrib/captainagent/tool_retriever.py +2 -3
- autogen/agentchat/contrib/gpt_assistant_agent.py +9 -9
- autogen/agentchat/contrib/graph_rag/document.py +3 -3
- autogen/agentchat/contrib/graph_rag/falkor_graph_query_engine.py +3 -3
- autogen/agentchat/contrib/graph_rag/falkor_graph_rag_capability.py +6 -6
- autogen/agentchat/contrib/graph_rag/graph_query_engine.py +3 -3
- autogen/agentchat/contrib/graph_rag/neo4j_graph_query_engine.py +5 -11
- autogen/agentchat/contrib/graph_rag/neo4j_graph_rag_capability.py +6 -6
- autogen/agentchat/contrib/graph_rag/neo4j_native_graph_query_engine.py +7 -7
- autogen/agentchat/contrib/graph_rag/neo4j_native_graph_rag_capability.py +6 -6
- autogen/agentchat/contrib/img_utils.py +1 -1
- autogen/agentchat/contrib/llamaindex_conversable_agent.py +11 -11
- autogen/agentchat/contrib/llava_agent.py +18 -4
- autogen/agentchat/contrib/math_user_proxy_agent.py +11 -11
- autogen/agentchat/contrib/multimodal_conversable_agent.py +8 -8
- autogen/agentchat/contrib/qdrant_retrieve_user_proxy_agent.py +6 -5
- autogen/agentchat/contrib/rag/chromadb_query_engine.py +22 -26
- autogen/agentchat/contrib/rag/llamaindex_query_engine.py +14 -17
- autogen/agentchat/contrib/rag/mongodb_query_engine.py +27 -37
- autogen/agentchat/contrib/rag/query_engine.py +7 -5
- autogen/agentchat/contrib/retrieve_assistant_agent.py +5 -5
- autogen/agentchat/contrib/retrieve_user_proxy_agent.py +8 -7
- autogen/agentchat/contrib/society_of_mind_agent.py +15 -14
- autogen/agentchat/contrib/swarm_agent.py +76 -98
- autogen/agentchat/contrib/text_analyzer_agent.py +7 -7
- autogen/agentchat/contrib/vectordb/base.py +10 -18
- autogen/agentchat/contrib/vectordb/chromadb.py +2 -1
- autogen/agentchat/contrib/vectordb/couchbase.py +18 -20
- autogen/agentchat/contrib/vectordb/mongodb.py +6 -5
- autogen/agentchat/contrib/vectordb/pgvectordb.py +40 -41
- autogen/agentchat/contrib/vectordb/qdrant.py +5 -5
- autogen/agentchat/contrib/web_surfer.py +20 -19
- autogen/agentchat/conversable_agent.py +311 -295
- autogen/agentchat/group/context_str.py +1 -3
- autogen/agentchat/group/context_variables.py +15 -25
- autogen/agentchat/group/group_tool_executor.py +10 -10
- autogen/agentchat/group/group_utils.py +15 -15
- autogen/agentchat/group/guardrails.py +7 -7
- autogen/agentchat/group/handoffs.py +19 -36
- autogen/agentchat/group/multi_agent_chat.py +7 -7
- autogen/agentchat/group/on_condition.py +4 -7
- autogen/agentchat/group/on_context_condition.py +4 -7
- autogen/agentchat/group/patterns/auto.py +8 -7
- autogen/agentchat/group/patterns/manual.py +7 -6
- autogen/agentchat/group/patterns/pattern.py +13 -12
- autogen/agentchat/group/patterns/random.py +3 -3
- autogen/agentchat/group/patterns/round_robin.py +3 -3
- autogen/agentchat/group/reply_result.py +2 -4
- autogen/agentchat/group/speaker_selection_result.py +5 -5
- autogen/agentchat/group/targets/group_chat_target.py +7 -6
- autogen/agentchat/group/targets/group_manager_target.py +4 -4
- autogen/agentchat/group/targets/transition_target.py +2 -1
- autogen/agentchat/groupchat.py +58 -61
- autogen/agentchat/realtime/experimental/audio_adapters/twilio_audio_adapter.py +4 -4
- autogen/agentchat/realtime/experimental/audio_adapters/websocket_audio_adapter.py +4 -4
- autogen/agentchat/realtime/experimental/clients/gemini/client.py +7 -7
- autogen/agentchat/realtime/experimental/clients/oai/base_client.py +8 -8
- autogen/agentchat/realtime/experimental/clients/oai/rtc_client.py +6 -6
- autogen/agentchat/realtime/experimental/clients/realtime_client.py +10 -9
- autogen/agentchat/realtime/experimental/realtime_agent.py +10 -9
- autogen/agentchat/realtime/experimental/realtime_observer.py +3 -3
- autogen/agentchat/realtime/experimental/realtime_swarm.py +44 -44
- autogen/agentchat/user_proxy_agent.py +10 -9
- autogen/agentchat/utils.py +3 -3
- autogen/agents/contrib/time/time_reply_agent.py +6 -5
- autogen/agents/contrib/time/time_tool_agent.py +2 -1
- autogen/agents/experimental/deep_research/deep_research.py +3 -3
- autogen/agents/experimental/discord/discord.py +2 -2
- autogen/agents/experimental/document_agent/chroma_query_engine.py +29 -44
- autogen/agents/experimental/document_agent/docling_doc_ingest_agent.py +9 -14
- autogen/agents/experimental/document_agent/document_agent.py +15 -16
- autogen/agents/experimental/document_agent/document_conditions.py +3 -3
- autogen/agents/experimental/document_agent/document_utils.py +5 -9
- autogen/agents/experimental/document_agent/inmemory_query_engine.py +14 -20
- autogen/agents/experimental/document_agent/parser_utils.py +4 -4
- autogen/agents/experimental/document_agent/url_utils.py +14 -23
- autogen/agents/experimental/reasoning/reasoning_agent.py +33 -33
- autogen/agents/experimental/slack/slack.py +2 -2
- autogen/agents/experimental/telegram/telegram.py +2 -3
- autogen/agents/experimental/websurfer/websurfer.py +4 -4
- autogen/agents/experimental/wikipedia/wikipedia.py +5 -7
- autogen/browser_utils.py +8 -8
- autogen/cache/abstract_cache_base.py +5 -5
- autogen/cache/cache.py +12 -12
- autogen/cache/cache_factory.py +4 -4
- autogen/cache/cosmos_db_cache.py +9 -9
- autogen/cache/disk_cache.py +6 -6
- autogen/cache/in_memory_cache.py +4 -4
- autogen/cache/redis_cache.py +4 -4
- autogen/code_utils.py +18 -18
- autogen/coding/base.py +6 -6
- autogen/coding/docker_commandline_code_executor.py +9 -9
- autogen/coding/func_with_reqs.py +7 -6
- autogen/coding/jupyter/base.py +3 -3
- autogen/coding/jupyter/docker_jupyter_server.py +3 -4
- autogen/coding/jupyter/import_utils.py +3 -3
- autogen/coding/jupyter/jupyter_client.py +5 -5
- autogen/coding/jupyter/jupyter_code_executor.py +3 -4
- autogen/coding/jupyter/local_jupyter_server.py +2 -6
- autogen/coding/local_commandline_code_executor.py +8 -7
- autogen/coding/markdown_code_extractor.py +1 -2
- autogen/coding/utils.py +1 -2
- autogen/doc_utils.py +3 -2
- autogen/environments/docker_python_environment.py +19 -29
- autogen/environments/python_environment.py +8 -17
- autogen/environments/system_python_environment.py +3 -4
- autogen/environments/venv_python_environment.py +8 -12
- autogen/environments/working_directory.py +1 -2
- autogen/events/agent_events.py +106 -109
- autogen/events/base_event.py +6 -5
- autogen/events/client_events.py +15 -14
- autogen/events/helpers.py +1 -1
- autogen/events/print_event.py +4 -5
- autogen/fast_depends/_compat.py +10 -15
- autogen/fast_depends/core/build.py +17 -36
- autogen/fast_depends/core/model.py +64 -113
- autogen/fast_depends/dependencies/model.py +2 -1
- autogen/fast_depends/dependencies/provider.py +3 -2
- autogen/fast_depends/library/model.py +4 -4
- autogen/fast_depends/schema.py +7 -7
- autogen/fast_depends/use.py +17 -25
- autogen/fast_depends/utils.py +10 -30
- autogen/formatting_utils.py +6 -6
- autogen/graph_utils.py +1 -4
- autogen/import_utils.py +13 -13
- autogen/interop/crewai/crewai.py +2 -2
- autogen/interop/interoperable.py +2 -2
- autogen/interop/langchain/langchain_chat_model_factory.py +3 -2
- autogen/interop/langchain/langchain_tool.py +2 -6
- autogen/interop/litellm/litellm_config_factory.py +6 -7
- autogen/interop/pydantic_ai/pydantic_ai.py +4 -7
- autogen/interop/registry.py +2 -1
- autogen/io/base.py +5 -5
- autogen/io/run_response.py +33 -32
- autogen/io/websockets.py +6 -5
- autogen/json_utils.py +1 -2
- autogen/llm_config/__init__.py +11 -0
- autogen/llm_config/client.py +58 -0
- autogen/llm_config/config.py +384 -0
- autogen/llm_config/entry.py +154 -0
- autogen/logger/base_logger.py +4 -3
- autogen/logger/file_logger.py +2 -1
- autogen/logger/logger_factory.py +2 -2
- autogen/logger/logger_utils.py +2 -2
- autogen/logger/sqlite_logger.py +3 -2
- autogen/math_utils.py +4 -5
- autogen/mcp/__main__.py +6 -6
- autogen/mcp/helpers.py +4 -4
- autogen/mcp/mcp_client.py +170 -29
- autogen/mcp/mcp_proxy/fastapi_code_generator_helpers.py +3 -4
- autogen/mcp/mcp_proxy/mcp_proxy.py +23 -26
- autogen/mcp/mcp_proxy/operation_grouping.py +4 -5
- autogen/mcp/mcp_proxy/operation_renaming.py +6 -10
- autogen/mcp/mcp_proxy/security.py +2 -3
- autogen/messages/agent_messages.py +96 -98
- autogen/messages/base_message.py +6 -5
- autogen/messages/client_messages.py +15 -14
- autogen/messages/print_message.py +4 -5
- autogen/oai/__init__.py +1 -2
- autogen/oai/anthropic.py +42 -41
- autogen/oai/bedrock.py +68 -57
- autogen/oai/cerebras.py +26 -25
- autogen/oai/client.py +118 -138
- autogen/oai/client_utils.py +3 -3
- autogen/oai/cohere.py +34 -11
- autogen/oai/gemini.py +40 -17
- autogen/oai/gemini_types.py +11 -12
- autogen/oai/groq.py +22 -10
- autogen/oai/mistral.py +17 -11
- autogen/oai/oai_models/__init__.py +14 -2
- autogen/oai/oai_models/_models.py +2 -2
- autogen/oai/oai_models/chat_completion.py +13 -14
- autogen/oai/oai_models/chat_completion_message.py +11 -9
- autogen/oai/oai_models/chat_completion_message_tool_call.py +26 -3
- autogen/oai/oai_models/chat_completion_token_logprob.py +3 -4
- autogen/oai/oai_models/completion_usage.py +8 -9
- autogen/oai/ollama.py +22 -10
- autogen/oai/openai_responses.py +40 -17
- autogen/oai/openai_utils.py +159 -85
- autogen/oai/together.py +29 -14
- autogen/retrieve_utils.py +6 -7
- autogen/runtime_logging.py +5 -4
- autogen/token_count_utils.py +7 -4
- autogen/tools/contrib/time/time.py +0 -1
- autogen/tools/dependency_injection.py +5 -6
- autogen/tools/experimental/browser_use/browser_use.py +10 -10
- autogen/tools/experimental/code_execution/python_code_execution.py +5 -7
- autogen/tools/experimental/crawl4ai/crawl4ai.py +12 -15
- autogen/tools/experimental/deep_research/deep_research.py +9 -8
- autogen/tools/experimental/duckduckgo/duckduckgo_search.py +5 -11
- autogen/tools/experimental/firecrawl/firecrawl_tool.py +98 -115
- autogen/tools/experimental/google/authentication/credentials_local_provider.py +1 -1
- autogen/tools/experimental/google/drive/drive_functions.py +4 -4
- autogen/tools/experimental/google/drive/toolkit.py +5 -5
- autogen/tools/experimental/google_search/google_search.py +5 -5
- autogen/tools/experimental/google_search/youtube_search.py +5 -5
- autogen/tools/experimental/messageplatform/discord/discord.py +8 -12
- autogen/tools/experimental/messageplatform/slack/slack.py +14 -20
- autogen/tools/experimental/messageplatform/telegram/telegram.py +8 -12
- autogen/tools/experimental/perplexity/perplexity_search.py +18 -29
- autogen/tools/experimental/reliable/reliable.py +68 -74
- autogen/tools/experimental/searxng/searxng_search.py +20 -19
- autogen/tools/experimental/tavily/tavily_search.py +12 -19
- autogen/tools/experimental/web_search_preview/web_search_preview.py +13 -7
- autogen/tools/experimental/wikipedia/wikipedia.py +7 -10
- autogen/tools/function_utils.py +7 -7
- autogen/tools/tool.py +6 -5
- autogen/types.py +2 -2
- autogen/version.py +1 -1
- ag2-0.9.6.dist-info/RECORD +0 -421
- autogen/llm_config.py +0 -385
- {ag2-0.9.6.dist-info → ag2-0.9.8.post1.dist-info}/WHEEL +0 -0
- {ag2-0.9.6.dist-info → ag2-0.9.8.post1.dist-info}/licenses/LICENSE +0 -0
- {ag2-0.9.6.dist-info → ag2-0.9.8.post1.dist-info}/licenses/NOTICE.md +0 -0
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# Copyright (c) 2023 - 2025, AG2ai, Inc., AG2ai open-source projects maintainers and core contributors
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
"""
|
|
5
|
-
SearxNG Search Tool
|
|
4
|
+
"""SearxNG Search Tool
|
|
6
5
|
A simple tool to perform web searches using a SearxNG instance.
|
|
7
6
|
"""
|
|
8
7
|
|
|
9
8
|
import logging
|
|
10
|
-
from typing import Annotated, Any
|
|
9
|
+
from typing import Annotated, Any
|
|
11
10
|
|
|
12
11
|
import requests
|
|
13
12
|
|
|
@@ -20,18 +19,19 @@ logger = logging.getLogger(__name__)
|
|
|
20
19
|
def _execute_searxng_query(
|
|
21
20
|
query: str,
|
|
22
21
|
max_results: int = 5,
|
|
23
|
-
categories:
|
|
24
|
-
language:
|
|
22
|
+
categories: list[str] | None = None,
|
|
23
|
+
language: str | None = None,
|
|
25
24
|
base_url: str = "https://searxng.site/search",
|
|
26
25
|
) -> list[dict[str, Any]]:
|
|
27
|
-
"""
|
|
28
|
-
|
|
26
|
+
"""Execute a search query using a SearxNG instance.
|
|
27
|
+
|
|
29
28
|
Args:
|
|
30
29
|
query (str): The search query string.
|
|
31
30
|
max_results (int, optional): The maximum number of results to return. Defaults to 5.
|
|
32
31
|
categories (Optional[List[str]]): List of categories to search in.
|
|
33
32
|
language (Optional[str]): Language code.
|
|
34
33
|
base_url (str): SearxNG instance URL.
|
|
34
|
+
|
|
35
35
|
Returns:
|
|
36
36
|
list[dict[str, Any]]: A list of search results from SearxNG.
|
|
37
37
|
"""
|
|
@@ -64,18 +64,19 @@ def _execute_searxng_query(
|
|
|
64
64
|
def _searxng_search(
|
|
65
65
|
query: str,
|
|
66
66
|
max_results: int = 5,
|
|
67
|
-
categories:
|
|
68
|
-
language:
|
|
67
|
+
categories: list[str] | None = None,
|
|
68
|
+
language: str | None = None,
|
|
69
69
|
base_url: str = "https://searxng.site/search",
|
|
70
70
|
) -> list[dict[str, Any]]:
|
|
71
|
-
"""
|
|
72
|
-
|
|
71
|
+
"""Perform a SearxNG search and format the results.
|
|
72
|
+
|
|
73
73
|
Args:
|
|
74
74
|
query (str): The search query string.
|
|
75
75
|
max_results (int, optional): The maximum number of results to return. Defaults to 5.
|
|
76
76
|
categories (Optional[List[str]]): List of categories to search in.
|
|
77
77
|
language (Optional[str]): Language code.
|
|
78
78
|
base_url (str): SearxNG instance URL.
|
|
79
|
+
|
|
79
80
|
Returns:
|
|
80
81
|
list[dict[str, Any]]: A list of dictionaries with 'title', 'link', and 'snippet'.
|
|
81
82
|
"""
|
|
@@ -95,16 +96,15 @@ def _searxng_search(
|
|
|
95
96
|
|
|
96
97
|
@export_module("autogen.tools.experimental")
|
|
97
98
|
class SearxngSearchTool(Tool):
|
|
98
|
-
"""
|
|
99
|
-
SearxngSearchTool is a tool that uses SearxNG to perform a search.
|
|
99
|
+
"""SearxngSearchTool is a tool that uses SearxNG to perform a search.
|
|
100
100
|
|
|
101
101
|
This tool allows agents to leverage the SearxNG search engine for information retrieval.
|
|
102
102
|
SearxNG does not require an API key by default, making it easy to use.
|
|
103
103
|
"""
|
|
104
104
|
|
|
105
105
|
def __init__(self, base_url: str = "https://searxng.site/search") -> None:
|
|
106
|
-
"""
|
|
107
|
-
|
|
106
|
+
"""Initializes the SearxngSearchTool.
|
|
107
|
+
|
|
108
108
|
Args:
|
|
109
109
|
base_url (str): The SearxNG instance URL.
|
|
110
110
|
"""
|
|
@@ -119,16 +119,17 @@ class SearxngSearchTool(Tool):
|
|
|
119
119
|
self,
|
|
120
120
|
query: Annotated[str, "The search query."],
|
|
121
121
|
max_results: Annotated[int, "The number of results to return."] = 5,
|
|
122
|
-
categories: Annotated[
|
|
123
|
-
language: Annotated[
|
|
122
|
+
categories: Annotated[list[str] | None, "List of categories to search in."] = None,
|
|
123
|
+
language: Annotated[str | None, "Language code (e.g., 'en-US')."] = None,
|
|
124
124
|
) -> list[dict[str, Any]]:
|
|
125
|
-
"""
|
|
126
|
-
|
|
125
|
+
"""Performs a search using the SearxNG API and returns formatted results.
|
|
126
|
+
|
|
127
127
|
Args:
|
|
128
128
|
query: The search query string.
|
|
129
129
|
max_results: The maximum number of results to return. Defaults to 5.
|
|
130
130
|
categories: List of categories to search in.
|
|
131
131
|
language: Language code.
|
|
132
|
+
|
|
132
133
|
Returns:
|
|
133
134
|
A list of dictionaries, each containing 'title', 'link', and 'snippet' of a search result.
|
|
134
135
|
"""
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import os
|
|
5
|
-
from typing import Annotated, Any
|
|
5
|
+
from typing import Annotated, Any
|
|
6
6
|
|
|
7
7
|
from ....doc_utils import export_module
|
|
8
8
|
from ....import_utils import optional_import_block, require_optional_import
|
|
@@ -30,8 +30,7 @@ def _execute_tavily_query(
|
|
|
30
30
|
include_domains: list[str] = [],
|
|
31
31
|
num_results: int = 5,
|
|
32
32
|
) -> Any:
|
|
33
|
-
"""
|
|
34
|
-
Execute a search query using the Tavily API.
|
|
33
|
+
"""Execute a search query using the Tavily API.
|
|
35
34
|
|
|
36
35
|
Args:
|
|
37
36
|
query (str): The search query string.
|
|
@@ -68,8 +67,7 @@ def _tavily_search(
|
|
|
68
67
|
include_domains: list[str] = [],
|
|
69
68
|
num_results: int = 5,
|
|
70
69
|
) -> list[dict[str, Any]]:
|
|
71
|
-
"""
|
|
72
|
-
Perform a Tavily search and format the results.
|
|
70
|
+
"""Perform a Tavily search and format the results.
|
|
73
71
|
|
|
74
72
|
This function takes search parameters, executes the query using `_execute_tavily_query`,
|
|
75
73
|
and formats the results into a list of dictionaries containing title, link, and snippet.
|
|
@@ -107,8 +105,7 @@ def _tavily_search(
|
|
|
107
105
|
|
|
108
106
|
@export_module("autogen.tools.experimental")
|
|
109
107
|
class TavilySearchTool(Tool):
|
|
110
|
-
"""
|
|
111
|
-
TavilySearchTool is a tool that uses the Tavily Search API to perform a search.
|
|
108
|
+
"""TavilySearchTool is a tool that uses the Tavily Search API to perform a search.
|
|
112
109
|
|
|
113
110
|
This tool allows agents to leverage the Tavily search engine for information retrieval.
|
|
114
111
|
It requires a Tavily API key, which can be provided during initialization or set as
|
|
@@ -118,11 +115,8 @@ class TavilySearchTool(Tool):
|
|
|
118
115
|
tavily_api_key (str): The API key used for authenticating with the Tavily API.
|
|
119
116
|
"""
|
|
120
117
|
|
|
121
|
-
def __init__(
|
|
122
|
-
|
|
123
|
-
):
|
|
124
|
-
"""
|
|
125
|
-
Initializes the TavilySearchTool.
|
|
118
|
+
def __init__(self, *, llm_config: LLMConfig | dict[str, Any] | None = None, tavily_api_key: str | None = None):
|
|
119
|
+
"""Initializes the TavilySearchTool.
|
|
126
120
|
|
|
127
121
|
Args:
|
|
128
122
|
llm_config (Optional[Union[LLMConfig, dict[str, Any]]]): LLM configuration. (Currently unused but kept for potential future integration).
|
|
@@ -139,15 +133,14 @@ class TavilySearchTool(Tool):
|
|
|
139
133
|
|
|
140
134
|
def tavily_search(
|
|
141
135
|
query: Annotated[str, "The search query."],
|
|
142
|
-
tavily_api_key: Annotated[
|
|
143
|
-
search_depth: Annotated[
|
|
144
|
-
include_answer: Annotated[
|
|
145
|
-
include_raw_content: Annotated[
|
|
146
|
-
include_domains: Annotated[
|
|
136
|
+
tavily_api_key: Annotated[str | None, Depends(on(self.tavily_api_key))],
|
|
137
|
+
search_depth: Annotated[str | None, "Either 'advanced' or 'basic'"] = "basic",
|
|
138
|
+
include_answer: Annotated[str | None, "Either 'advanced' or 'basic'"] = "basic",
|
|
139
|
+
include_raw_content: Annotated[bool | None, "Include the raw contents"] = False,
|
|
140
|
+
include_domains: Annotated[list[str] | None, "Specific web domains to search"] = [],
|
|
147
141
|
num_results: Annotated[int, "The number of results to return."] = 5,
|
|
148
142
|
) -> list[dict[str, Any]]:
|
|
149
|
-
"""
|
|
150
|
-
Performs a search using the Tavily API and returns formatted results.
|
|
143
|
+
"""Performs a search using the Tavily API and returns formatted results.
|
|
151
144
|
|
|
152
145
|
Args:
|
|
153
146
|
query: The search query string.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import copy
|
|
7
7
|
import logging
|
|
8
8
|
import os
|
|
9
|
-
from typing import Annotated, Any, Literal
|
|
9
|
+
from typing import Annotated, Any, Literal
|
|
10
10
|
|
|
11
11
|
from pydantic import BaseModel
|
|
12
12
|
|
|
@@ -29,11 +29,11 @@ class WebSearchPreviewTool(Tool):
|
|
|
29
29
|
def __init__(
|
|
30
30
|
self,
|
|
31
31
|
*,
|
|
32
|
-
llm_config:
|
|
32
|
+
llm_config: LLMConfig | dict[str, Any],
|
|
33
33
|
search_context_size: Literal["low", "medium", "high"] = "medium",
|
|
34
|
-
user_location:
|
|
35
|
-
instructions:
|
|
36
|
-
text_format:
|
|
34
|
+
user_location: dict[str, str] | None = None,
|
|
35
|
+
instructions: str | None = None,
|
|
36
|
+
text_format: type[BaseModel] | None = None,
|
|
37
37
|
):
|
|
38
38
|
"""Initialize the WebSearchPreviewTool.
|
|
39
39
|
|
|
@@ -85,7 +85,7 @@ class WebSearchPreviewTool(Tool):
|
|
|
85
85
|
|
|
86
86
|
def web_search_preview(
|
|
87
87
|
query: Annotated[str, "The search query. Add all relevant context to the query."],
|
|
88
|
-
) ->
|
|
88
|
+
) -> str | BaseModel | None:
|
|
89
89
|
client = OpenAI()
|
|
90
90
|
|
|
91
91
|
if not self.text_format:
|
|
@@ -95,7 +95,13 @@ class WebSearchPreviewTool(Tool):
|
|
|
95
95
|
input=query,
|
|
96
96
|
instructions=self.instructions,
|
|
97
97
|
)
|
|
98
|
-
|
|
98
|
+
text = []
|
|
99
|
+
for output in response.output:
|
|
100
|
+
if output.type == "message":
|
|
101
|
+
for content in output.content:
|
|
102
|
+
if content.type == "output_text":
|
|
103
|
+
text.append(content.text)
|
|
104
|
+
return "\n".join(text)
|
|
99
105
|
|
|
100
106
|
else:
|
|
101
107
|
response = client.responses.parse(
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
5
|
+
from typing import Any
|
|
6
6
|
|
|
7
7
|
import requests
|
|
8
8
|
from pydantic import BaseModel
|
|
@@ -102,7 +102,7 @@ class WikipediaClient:
|
|
|
102
102
|
search_data = data.get("query", {}).get("search", [])
|
|
103
103
|
return search_data
|
|
104
104
|
|
|
105
|
-
def get_page(self, title: str) ->
|
|
105
|
+
def get_page(self, title: str) -> Any | None:
|
|
106
106
|
"""Retrieve a WikipediaPage object by title.
|
|
107
107
|
|
|
108
108
|
Args:
|
|
@@ -158,7 +158,7 @@ class WikipediaQueryRunTool(Tool):
|
|
|
158
158
|
func_or_tool=self.query_run,
|
|
159
159
|
)
|
|
160
160
|
|
|
161
|
-
def query_run(self, query: str) ->
|
|
161
|
+
def query_run(self, query: str) -> list[str] | str:
|
|
162
162
|
"""Search Wikipedia and return formatted page summaries.
|
|
163
163
|
|
|
164
164
|
Truncates `query` to MAX_QUERY_LENGTH before searching.
|
|
@@ -194,8 +194,7 @@ class WikipediaQueryRunTool(Tool):
|
|
|
194
194
|
|
|
195
195
|
@require_optional_import(["wikipediaapi"], "wikipedia")
|
|
196
196
|
class WikipediaPageLoadTool(Tool):
|
|
197
|
-
"""
|
|
198
|
-
A tool to load up to N characters of Wikipedia page content along with metadata.
|
|
197
|
+
"""A tool to load up to N characters of Wikipedia page content along with metadata.
|
|
199
198
|
|
|
200
199
|
This tool uses a language-specific Wikipedia client to search for relevant articles
|
|
201
200
|
and returns a list of Document objects containing truncated page content and metadata
|
|
@@ -212,8 +211,7 @@ class WikipediaPageLoadTool(Tool):
|
|
|
212
211
|
"""
|
|
213
212
|
|
|
214
213
|
def __init__(self, language: str = "en", top_k: int = 3, truncate: int = 4000, verbose: bool = False) -> None:
|
|
215
|
-
"""
|
|
216
|
-
Initializes the WikipediaPageLoadTool with configurable language, result count, and content length.
|
|
214
|
+
"""Initializes the WikipediaPageLoadTool with configurable language, result count, and content length.
|
|
217
215
|
|
|
218
216
|
Args:
|
|
219
217
|
language (str): The language code for the Wikipedia edition (default is "en").
|
|
@@ -240,9 +238,8 @@ class WikipediaPageLoadTool(Tool):
|
|
|
240
238
|
func_or_tool=self.content_search,
|
|
241
239
|
)
|
|
242
240
|
|
|
243
|
-
def content_search(self, query: str) ->
|
|
244
|
-
"""
|
|
245
|
-
Executes a Wikipedia search and returns page content plus metadata.
|
|
241
|
+
def content_search(self, query: str) -> list[Document] | str:
|
|
242
|
+
"""Executes a Wikipedia search and returns page content plus metadata.
|
|
246
243
|
|
|
247
244
|
Args:
|
|
248
245
|
query (str): The search term to query Wikipedia.
|
autogen/tools/function_utils.py
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
import functools
|
|
8
8
|
import inspect
|
|
9
9
|
import json
|
|
10
|
+
from collections.abc import Callable
|
|
10
11
|
from logging import getLogger
|
|
11
|
-
from typing import Annotated, Any,
|
|
12
|
+
from typing import Annotated, Any, ForwardRef, Literal, TypeVar, get_args, get_origin
|
|
12
13
|
|
|
13
14
|
from packaging.version import parse
|
|
14
15
|
from pydantic import BaseModel, Field, TypeAdapter
|
|
15
16
|
from pydantic import __version__ as pydantic_version
|
|
16
17
|
from pydantic.json_schema import JsonSchemaValue
|
|
17
|
-
from typing_extensions import Literal, get_args, get_origin
|
|
18
18
|
|
|
19
19
|
from ..doc_utils import export_module
|
|
20
20
|
from .dependency_injection import Field as AG2Field
|
|
@@ -93,7 +93,7 @@ def get_typed_return_annotation(call: Callable[..., Any]) -> Any:
|
|
|
93
93
|
return get_typed_annotation(annotation, globalns)
|
|
94
94
|
|
|
95
95
|
|
|
96
|
-
def get_param_annotations(typed_signature: inspect.Signature) -> dict[str,
|
|
96
|
+
def get_param_annotations(typed_signature: inspect.Signature) -> dict[str, Annotated[type[Any], str] | type[Any]]:
|
|
97
97
|
"""Get the type annotations of the parameters of a function
|
|
98
98
|
|
|
99
99
|
Args:
|
|
@@ -142,7 +142,7 @@ def get_parameter_json_schema(k: str, v: Any, default_values: dict[str, Any]) ->
|
|
|
142
142
|
A Pydanitc model for the parameter
|
|
143
143
|
"""
|
|
144
144
|
|
|
145
|
-
def type2description(k: str, v:
|
|
145
|
+
def type2description(k: str, v: Annotated[type[Any], str] | type[Any]) -> str:
|
|
146
146
|
if not hasattr(v, "__metadata__"):
|
|
147
147
|
return k
|
|
148
148
|
|
|
@@ -189,7 +189,7 @@ def get_default_values(typed_signature: inspect.Signature) -> dict[str, Any]:
|
|
|
189
189
|
|
|
190
190
|
def get_parameters(
|
|
191
191
|
required: list[str],
|
|
192
|
-
param_annotations: dict[str,
|
|
192
|
+
param_annotations: dict[str, Annotated[type[Any], str] | type[Any]],
|
|
193
193
|
default_values: dict[str, Any],
|
|
194
194
|
) -> Parameters:
|
|
195
195
|
"""Get the parameters of a function as defined by the OpenAI API
|
|
@@ -231,7 +231,7 @@ def get_missing_annotations(typed_signature: inspect.Signature, required: list[s
|
|
|
231
231
|
|
|
232
232
|
|
|
233
233
|
@export_module("autogen.tools")
|
|
234
|
-
def get_function_schema(f: Callable[..., Any], *, name:
|
|
234
|
+
def get_function_schema(f: Callable[..., Any], *, name: str | None = None, description: str) -> dict[str, Any]:
|
|
235
235
|
"""Get a JSON schema for a function as defined by the OpenAI API
|
|
236
236
|
|
|
237
237
|
Args:
|
|
@@ -306,7 +306,7 @@ def get_function_schema(f: Callable[..., Any], *, name: Optional[str] = None, de
|
|
|
306
306
|
return function.model_dump()
|
|
307
307
|
|
|
308
308
|
|
|
309
|
-
def get_load_param_if_needed_function(t: Any) ->
|
|
309
|
+
def get_load_param_if_needed_function(t: Any) -> Callable[[dict[str, Any], type[BaseModel]], BaseModel] | None:
|
|
310
310
|
"""Get a function to load a parameter if it is a Pydantic model
|
|
311
311
|
|
|
312
312
|
Args:
|
autogen/tools/tool.py
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
5
|
import inspect
|
|
6
|
-
from
|
|
6
|
+
from collections.abc import Callable
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Union
|
|
7
8
|
|
|
8
9
|
from ..doc_utils import export_module
|
|
9
10
|
from ..tools.function_utils import get_function_schema
|
|
@@ -32,10 +33,10 @@ class Tool:
|
|
|
32
33
|
def __init__(
|
|
33
34
|
self,
|
|
34
35
|
*,
|
|
35
|
-
name:
|
|
36
|
-
description:
|
|
36
|
+
name: str | None = None,
|
|
37
|
+
description: str | None = None,
|
|
37
38
|
func_or_tool: Union["Tool", Callable[..., Any]],
|
|
38
|
-
parameters_json_schema:
|
|
39
|
+
parameters_json_schema: dict[str, Any] | None = None,
|
|
39
40
|
) -> None:
|
|
40
41
|
"""Create a new Tool object.
|
|
41
42
|
|
|
@@ -170,7 +171,7 @@ class Tool:
|
|
|
170
171
|
|
|
171
172
|
|
|
172
173
|
@export_module("autogen.tools")
|
|
173
|
-
def tool(name:
|
|
174
|
+
def tool(name: str | None = None, description: str | None = None) -> Callable[[Callable[..., Any]], Tool]:
|
|
174
175
|
"""Decorator to create a Tool from a function.
|
|
175
176
|
|
|
176
177
|
Args:
|
autogen/types.py
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
# Portions derived from https://github.com/microsoft/autogen are under the MIT License.
|
|
6
6
|
# SPDX-License-Identifier: MIT
|
|
7
7
|
|
|
8
|
-
from typing import Any, Literal, TypedDict
|
|
8
|
+
from typing import Any, Literal, TypedDict
|
|
9
9
|
|
|
10
|
-
MessageContentType =
|
|
10
|
+
MessageContentType = str | list[dict[str, Any] | str] | None
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class UserMessageTextContentPart(TypedDict):
|
autogen/version.py
CHANGED