quantalogic 0.50.12__tar.gz → 0.50.17__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.
- {quantalogic-0.50.12 → quantalogic-0.50.17}/PKG-INFO +1 -1
- {quantalogic-0.50.12 → quantalogic-0.50.17}/pyproject.toml +7 -1
- quantalogic-0.50.17/quantalogic/agent_config.py +262 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/agent_factory.py +12 -13
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/coding_agent.py +1 -1
- quantalogic-0.50.17/quantalogic/create_custom_agent.py +254 -0
- quantalogic-0.50.17/quantalogic/tools/__init__.py +70 -0
- quantalogic-0.50.17/quantalogic/tools/composio/__init__.py +18 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/composio/composio.py +3 -48
- quantalogic-0.50.17/quantalogic/tools/database/__init__.py +20 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/database/sql_query_tool_advanced.py +5 -22
- quantalogic-0.50.17/quantalogic/tools/document_tools/__init__.py +30 -0
- quantalogic-0.50.17/quantalogic/tools/finance/__init__.py +32 -0
- quantalogic-0.50.17/quantalogic/tools/git/__init__.py +24 -0
- quantalogic-0.50.17/quantalogic/tools/google_packages/__init__.py +18 -0
- quantalogic-0.50.17/quantalogic/tools/image_generation/__init__.py +18 -0
- quantalogic-0.50.17/quantalogic/tools/nasa_packages/__init__.py +20 -0
- quantalogic-0.50.17/quantalogic/tools/presentation_tools/__init__.py +18 -0
- quantalogic-0.50.17/quantalogic/tools/product_hunt/__init__.py +18 -0
- quantalogic-0.50.17/quantalogic/tools/rag_tool/__init__.py +24 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/sql_query_tool.py +8 -25
- quantalogic-0.50.17/quantalogic/tools/utilities/__init__.py +22 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/utils/create_sample_database.py +7 -64
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/utils/generate_database_report.py +2 -7
- quantalogic-0.50.12/quantalogic/agent_config.py +0 -485
- quantalogic-0.50.12/quantalogic/tools/__init__.py +0 -110
- quantalogic-0.50.12/quantalogic/tools/document_tools/__init__.py +0 -39
- quantalogic-0.50.12/quantalogic/tools/rag_tool/__init__.py +0 -48
- {quantalogic-0.50.12 → quantalogic-0.50.17}/LICENSE +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/README.md +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/__init__.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/agent.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/config.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/console_print_events.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/console_print_token.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/docs_cli.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/event_emitter.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/flow/__init__.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/flow/flow.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/flow/flow_extractor.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/flow/flow_generator.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/flow/flow_manager.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/flow/flow_manager_schema.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/flow/flow_yaml.md +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/generative_model.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/get_model_info.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/interactive_text_editor.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/main.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/memory.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/model_info.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/model_info_list.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/model_info_litellm.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/model_names.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/prompts.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/quantlitellm.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/search_agent.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/__init__.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/agent_server.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/models.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/routes.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/state.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/static/js/event_visualizer.js +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/static/js/quantalogic.js +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/server/templates/index.html +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/task_file_reader.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/task_runner.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tool_manager.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/agent_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/database/generate_database_report_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/document_tools/markdown_to_docx_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/document_tools/markdown_to_epub_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/document_tools/markdown_to_html_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/document_tools/markdown_to_ipynb_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/document_tools/markdown_to_latex_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/document_tools/markdown_to_pdf_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/document_tools/markdown_to_pptx_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/download_http_file_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/duckduckgo_search_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/edit_whole_content_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/elixir_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/execute_bash_command_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/alpha_vantage_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/ccxt_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/finance_llm_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/google_finance.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/market_intelligence_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/technical_analysis_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/tradingview_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/finance/yahoo_finance.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/git/bitbucket_clone_repo_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/git/bitbucket_operations_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/git/clone_repo_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/git/git_operations_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/google_packages/google_news_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/grep_app_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/image_generation/dalle_e.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/input_question_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/jinja_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/__init__.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/c_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/cpp_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/go_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/java_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/javascript_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/python_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/rust_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/scala_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/language_handlers/typescript_handler.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/list_directory_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/llm_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/llm_vision_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/markitdown_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/nasa_packages/models.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/nasa_packages/nasa_apod_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/nasa_packages/nasa_neows_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/nasa_packages/services.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/nodejs_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/presentation_tools/presentation_llm_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/product_hunt/product_hunt_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/product_hunt/services.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/python_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/rag_tool/document_metadata.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/rag_tool/query_response.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/rag_tool/rag_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/rag_tool/rag_tool_beta.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/read_file_block_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/read_file_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/read_html_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/replace_in_file_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/ripgrep_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/safe_python_interpreter_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/search_definition_names.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/sequence_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/serpapi_search_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/task_complete_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/unified_diff_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/utilities/csv_processor_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/utilities/download_file_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/utilities/mermaid_validator_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/utils/__init__.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/wikipedia_search_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/tools/write_file_tool.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/__init__.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/ask_user_validation.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/async_utils.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/check_version.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/download_http_file.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/get_all_models.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/get_coding_environment.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/get_environment.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/get_quantalogic_rules_content.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/git_ls.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/lm_studio_model_info.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/python_interpreter.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/read_file.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/read_http_text_content.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/utils/xml_utility.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/version.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/version_check.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/welcome_message.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/xml_parser.py +0 -0
- {quantalogic-0.50.12 → quantalogic-0.50.17}/quantalogic/xml_tool_parser.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "quantalogic"
|
3
|
-
version = "0.50.
|
3
|
+
version = "0.50.17"
|
4
4
|
description = "QuantaLogic ReAct Agents"
|
5
5
|
authors = ["Raphaël MANSUY <raphael.mansuy@gmail.com>"]
|
6
6
|
readme = "README.md"
|
@@ -30,6 +30,12 @@ optional = false
|
|
30
30
|
|
31
31
|
[tool.poetry.group.file-tools.dependencies]
|
32
32
|
python-dotenv = "^1.0.1"
|
33
|
+
|
34
|
+
# Optional group for git-related tools
|
35
|
+
[tool.poetry.group.git-tools]
|
36
|
+
optional = true
|
37
|
+
|
38
|
+
[tool.poetry.group.git-tools.dependencies]
|
33
39
|
gitpython = "^3.1.44"
|
34
40
|
|
35
41
|
# Optional group for search-related tools
|
@@ -0,0 +1,262 @@
|
|
1
|
+
"""Module for agent configuration and creation."""
|
2
|
+
|
3
|
+
# Standard library imports
|
4
|
+
|
5
|
+
# Local application imports
|
6
|
+
import logging
|
7
|
+
|
8
|
+
from dotenv import load_dotenv
|
9
|
+
|
10
|
+
from quantalogic.agent import Agent
|
11
|
+
from quantalogic.console_print_token import console_print_token
|
12
|
+
from quantalogic.tools import (
|
13
|
+
AgentTool,
|
14
|
+
DownloadHttpFileTool,
|
15
|
+
DuckDuckGoSearchTool,
|
16
|
+
EditWholeContentTool,
|
17
|
+
ExecuteBashCommandTool,
|
18
|
+
InputQuestionTool,
|
19
|
+
ListDirectoryTool,
|
20
|
+
LLMTool,
|
21
|
+
LLMVisionTool,
|
22
|
+
MarkitdownTool,
|
23
|
+
NodeJsTool,
|
24
|
+
PythonTool,
|
25
|
+
ReadFileBlockTool,
|
26
|
+
ReadFileTool,
|
27
|
+
ReadHTMLTool,
|
28
|
+
ReplaceInFileTool,
|
29
|
+
RipgrepTool,
|
30
|
+
SearchDefinitionNames,
|
31
|
+
TaskCompleteTool,
|
32
|
+
WikipediaSearchTool,
|
33
|
+
WriteFileTool,
|
34
|
+
)
|
35
|
+
from quantalogic.tools.image_generation import LLMImageGenerationTool
|
36
|
+
|
37
|
+
load_dotenv()
|
38
|
+
|
39
|
+
MODEL_NAME = "deepseek/deepseek-chat"
|
40
|
+
|
41
|
+
logger = logging.getLogger(__name__)
|
42
|
+
|
43
|
+
_current_model_name: str = ""
|
44
|
+
|
45
|
+
|
46
|
+
def get_current_model() -> str:
|
47
|
+
"""Retrieve the currently active model name."""
|
48
|
+
if not _current_model_name:
|
49
|
+
raise ValueError("No model initialized")
|
50
|
+
return _current_model_name
|
51
|
+
|
52
|
+
|
53
|
+
def create_agent(
|
54
|
+
model_name: str,
|
55
|
+
vision_model_name: str | None,
|
56
|
+
no_stream: bool = False,
|
57
|
+
compact_every_n_iteration: int | None = None,
|
58
|
+
max_tokens_working_memory: int | None = None,
|
59
|
+
) -> Agent:
|
60
|
+
global _current_model_name
|
61
|
+
_current_model_name = model_name
|
62
|
+
"""Create an agent with the specified model and tools.
|
63
|
+
|
64
|
+
Args:
|
65
|
+
model_name (str): Name of the model to use
|
66
|
+
vision_model_name (str | None): Name of the vision model to use
|
67
|
+
no_stream (bool, optional): If True, the agent will not stream results.
|
68
|
+
compact_every_n_iteration (int | None, optional): Frequency of memory compaction.
|
69
|
+
max_tokens_working_memory (int | None, optional): Maximum tokens for working memory.
|
70
|
+
|
71
|
+
Returns:
|
72
|
+
Agent: An agent with the specified model and tools
|
73
|
+
"""
|
74
|
+
tools = [
|
75
|
+
TaskCompleteTool(),
|
76
|
+
ReadFileTool(),
|
77
|
+
ReadFileBlockTool(),
|
78
|
+
WriteFileTool(),
|
79
|
+
EditWholeContentTool(),
|
80
|
+
InputQuestionTool(),
|
81
|
+
ListDirectoryTool(),
|
82
|
+
ExecuteBashCommandTool(),
|
83
|
+
ReplaceInFileTool(),
|
84
|
+
RipgrepTool(),
|
85
|
+
SearchDefinitionNames(),
|
86
|
+
MarkitdownTool(),
|
87
|
+
LLMTool(model_name=model_name, on_token=console_print_token if not no_stream else None),
|
88
|
+
DownloadHttpFileTool(),
|
89
|
+
LLMImageGenerationTool(
|
90
|
+
provider="dall-e", model_name="openai/dall-e-3", on_token=console_print_token if not no_stream else None
|
91
|
+
),
|
92
|
+
ReadHTMLTool(),
|
93
|
+
# SafePythonInterpreterTool(allowed_modules=["math", "numpy"])
|
94
|
+
]
|
95
|
+
|
96
|
+
if vision_model_name:
|
97
|
+
tools.append(
|
98
|
+
LLMVisionTool(model_name=vision_model_name, on_token=console_print_token if not no_stream else None)
|
99
|
+
)
|
100
|
+
|
101
|
+
return Agent(
|
102
|
+
model_name=model_name,
|
103
|
+
tools=tools,
|
104
|
+
compact_every_n_iterations=compact_every_n_iteration,
|
105
|
+
max_tokens_working_memory=max_tokens_working_memory,
|
106
|
+
)
|
107
|
+
|
108
|
+
|
109
|
+
def create_interpreter_agent(
|
110
|
+
model_name: str,
|
111
|
+
vision_model_name: str | None,
|
112
|
+
no_stream: bool = False,
|
113
|
+
compact_every_n_iteration: int | None = None,
|
114
|
+
max_tokens_working_memory: int | None = None,
|
115
|
+
) -> Agent:
|
116
|
+
"""Create an interpreter agent with the specified model and tools.
|
117
|
+
|
118
|
+
Args:
|
119
|
+
model_name (str): Name of the model to use
|
120
|
+
vision_model_name (str | None): Name of the vision model to use
|
121
|
+
no_stream (bool, optional): If True, the agent will not stream results.
|
122
|
+
compact_every_n_iteration (int | None, optional): Frequency of memory compaction.
|
123
|
+
max_tokens_working_memory (int | None, optional): Maximum tokens for working memory.
|
124
|
+
|
125
|
+
Returns:
|
126
|
+
Agent: An interpreter agent with the specified model and tools
|
127
|
+
"""
|
128
|
+
tools = [
|
129
|
+
TaskCompleteTool(),
|
130
|
+
ReadFileTool(),
|
131
|
+
ReadFileBlockTool(),
|
132
|
+
WriteFileTool(),
|
133
|
+
EditWholeContentTool(),
|
134
|
+
InputQuestionTool(),
|
135
|
+
ListDirectoryTool(),
|
136
|
+
ExecuteBashCommandTool(),
|
137
|
+
ReplaceInFileTool(),
|
138
|
+
RipgrepTool(),
|
139
|
+
PythonTool(),
|
140
|
+
NodeJsTool(),
|
141
|
+
SearchDefinitionNames(),
|
142
|
+
MarkitdownTool(),
|
143
|
+
LLMTool(model_name=model_name, on_token=console_print_token if not no_stream else None),
|
144
|
+
DownloadHttpFileTool(),
|
145
|
+
ReadHTMLTool(),
|
146
|
+
]
|
147
|
+
return Agent(
|
148
|
+
model_name=model_name,
|
149
|
+
tools=tools,
|
150
|
+
compact_every_n_iterations=compact_every_n_iteration,
|
151
|
+
max_tokens_working_memory=max_tokens_working_memory,
|
152
|
+
)
|
153
|
+
|
154
|
+
|
155
|
+
def create_full_agent(
|
156
|
+
model_name: str,
|
157
|
+
vision_model_name: str | None,
|
158
|
+
no_stream: bool = False,
|
159
|
+
compact_every_n_iteration: int | None = None,
|
160
|
+
max_tokens_working_memory: int | None = None,
|
161
|
+
) -> Agent:
|
162
|
+
"""Create an agent with the specified model and many tools.
|
163
|
+
|
164
|
+
Args:
|
165
|
+
model_name (str): Name of the model to use
|
166
|
+
vision_model_name (str | None): Name of the vision model to use
|
167
|
+
no_stream (bool, optional): If True, the agent will not stream results.
|
168
|
+
compact_every_n_iteration (int | None, optional): Frequency of memory compaction.
|
169
|
+
max_tokens_working_memory (int | None, optional): Maximum tokens for working memory.
|
170
|
+
|
171
|
+
Returns:
|
172
|
+
Agent: An agent with the specified model and tools
|
173
|
+
|
174
|
+
"""
|
175
|
+
tools = [
|
176
|
+
TaskCompleteTool(),
|
177
|
+
ReadFileTool(),
|
178
|
+
ReadFileBlockTool(),
|
179
|
+
WriteFileTool(),
|
180
|
+
EditWholeContentTool(),
|
181
|
+
InputQuestionTool(),
|
182
|
+
ListDirectoryTool(),
|
183
|
+
ExecuteBashCommandTool(),
|
184
|
+
ReplaceInFileTool(),
|
185
|
+
RipgrepTool(),
|
186
|
+
PythonTool(),
|
187
|
+
NodeJsTool(),
|
188
|
+
SearchDefinitionNames(),
|
189
|
+
MarkitdownTool(),
|
190
|
+
LLMTool(model_name=model_name, on_token=console_print_token if not no_stream else None),
|
191
|
+
DownloadHttpFileTool(),
|
192
|
+
WikipediaSearchTool(),
|
193
|
+
DuckDuckGoSearchTool(),
|
194
|
+
ReadHTMLTool(),
|
195
|
+
# SafePythonInterpreterTool(allowed_modules=["math", "numpy"])
|
196
|
+
]
|
197
|
+
|
198
|
+
if vision_model_name:
|
199
|
+
tools.append(
|
200
|
+
LLMVisionTool(model_name=vision_model_name, on_token=console_print_token if not no_stream else None)
|
201
|
+
)
|
202
|
+
|
203
|
+
return Agent(
|
204
|
+
model_name=model_name,
|
205
|
+
tools=tools,
|
206
|
+
compact_every_n_iterations=compact_every_n_iteration,
|
207
|
+
max_tokens_working_memory=max_tokens_working_memory,
|
208
|
+
)
|
209
|
+
|
210
|
+
|
211
|
+
def create_basic_agent(
|
212
|
+
model_name: str,
|
213
|
+
vision_model_name: str | None = None,
|
214
|
+
no_stream: bool = False,
|
215
|
+
compact_every_n_iteration: int | None = None,
|
216
|
+
max_tokens_working_memory: int | None = None,
|
217
|
+
) -> Agent:
|
218
|
+
"""Create an agent with the specified model and tools.
|
219
|
+
|
220
|
+
Args:
|
221
|
+
model_name (str): Name of the model to use
|
222
|
+
vision_model_name (str | None): Name of the vision model to use
|
223
|
+
no_stream (bool, optional): If True, the agent will not stream results.
|
224
|
+
compact_every_n_iteration (int | None, optional): Frequency of memory compaction.
|
225
|
+
max_tokens_working_memory (int | None, optional): Maximum tokens for working memory.
|
226
|
+
|
227
|
+
Returns:
|
228
|
+
Agent: An agent with the specified model and tools
|
229
|
+
"""
|
230
|
+
# Rebuild AgentTool to resolve forward references
|
231
|
+
AgentTool.model_rebuild()
|
232
|
+
|
233
|
+
tools = [
|
234
|
+
TaskCompleteTool(),
|
235
|
+
ListDirectoryTool(),
|
236
|
+
ReadFileBlockTool(),
|
237
|
+
SearchDefinitionNames(),
|
238
|
+
ReadFileTool(),
|
239
|
+
ReplaceInFileTool(),
|
240
|
+
WriteFileTool(),
|
241
|
+
EditWholeContentTool(),
|
242
|
+
ReplaceInFileTool(),
|
243
|
+
InputQuestionTool(),
|
244
|
+
ExecuteBashCommandTool(),
|
245
|
+
LLMTool(model_name=model_name, on_token=console_print_token if not no_stream else None),
|
246
|
+
ReadHTMLTool(),
|
247
|
+
# SafePythonInterpreterTool(allowed_modules=["math", "numpy"])
|
248
|
+
]
|
249
|
+
|
250
|
+
if vision_model_name:
|
251
|
+
tools.append(
|
252
|
+
LLMVisionTool(model_name=vision_model_name, on_token=console_print_token if not no_stream else None)
|
253
|
+
)
|
254
|
+
|
255
|
+
return Agent(
|
256
|
+
model_name=model_name,
|
257
|
+
tools=tools,
|
258
|
+
compact_every_n_iterations=compact_every_n_iteration,
|
259
|
+
max_tokens_working_memory=max_tokens_working_memory,
|
260
|
+
)
|
261
|
+
|
262
|
+
|
@@ -5,7 +5,6 @@ from loguru import logger
|
|
5
5
|
from quantalogic.agent import Agent
|
6
6
|
from quantalogic.agent_config import (
|
7
7
|
create_basic_agent,
|
8
|
-
create_custom_agent,
|
9
8
|
create_full_agent,
|
10
9
|
create_interpreter_agent,
|
11
10
|
)
|
@@ -171,17 +170,17 @@ def create_agent_for_mode(
|
|
171
170
|
max_tokens_working_memory=max_tokens_working_memory,
|
172
171
|
)
|
173
172
|
return agent
|
174
|
-
if mode == "custom":
|
175
|
-
agent = create_custom_agent(
|
176
|
-
model_name,
|
177
|
-
vision_model_name,
|
178
|
-
no_stream=no_stream,
|
179
|
-
compact_every_n_iteration=compact_every_n_iteration,
|
180
|
-
max_tokens_working_memory=max_tokens_working_memory,
|
181
|
-
specific_expertise=specific_expertise,
|
182
|
-
tools=tools,
|
183
|
-
memory=memory
|
184
|
-
)
|
185
|
-
return agent
|
173
|
+
# if mode == "custom":
|
174
|
+
# agent = create_custom_agent(
|
175
|
+
# model_name,
|
176
|
+
# vision_model_name,
|
177
|
+
# no_stream=no_stream,
|
178
|
+
# compact_every_n_iteration=compact_every_n_iteration,
|
179
|
+
# max_tokens_working_memory=max_tokens_working_memory,
|
180
|
+
# specific_expertise=specific_expertise,
|
181
|
+
# tools=tools,
|
182
|
+
# memory=memory
|
183
|
+
# )
|
184
|
+
# return agent
|
186
185
|
else:
|
187
186
|
raise ValueError(f"Unknown agent mode: {mode}")
|
@@ -52,7 +52,7 @@ def create_coding_agent(
|
|
52
52
|
specific_expertise = (
|
53
53
|
"Software expert focused on pragmatic solutions."
|
54
54
|
"Validates codebase pre/post changes."
|
55
|
-
"Employs
|
55
|
+
"Employs SearchDefinitionNamesTool for code search; ReplaceInFileTool for updates."
|
56
56
|
"Exercise caution with the surrounding context during search/replace operations."
|
57
57
|
"For refactoring tasks, take the time to develop a comprehensive plan for implementing the proposed changes."
|
58
58
|
)
|
@@ -0,0 +1,254 @@
|
|
1
|
+
# Import statements
|
2
|
+
# import os
|
3
|
+
# from typing import Any
|
4
|
+
# from loguru import logger
|
5
|
+
# from quantalogic.agent import Agent, AgentMemory
|
6
|
+
# from quantalogic.agent_tools import (
|
7
|
+
# AgentTool,
|
8
|
+
# DownloadHttpFileTool,
|
9
|
+
# DuckDuckGoSearchTool,
|
10
|
+
# EditWholeContentTool,
|
11
|
+
# ExecuteBashCommandTool,
|
12
|
+
# InputQuestionTool,
|
13
|
+
# ListDirectoryTool,
|
14
|
+
# LLMTool,
|
15
|
+
# LLMVisionTool,
|
16
|
+
# LLMImageGenerationTool,
|
17
|
+
# MarkitdownTool,
|
18
|
+
# NodeJsTool,
|
19
|
+
# PythonTool,
|
20
|
+
# ReadFileBlockTool,
|
21
|
+
# ReadFileTool,
|
22
|
+
# ReadHTMLTool,
|
23
|
+
# ReplaceInFileTool,
|
24
|
+
# RipgrepTool,
|
25
|
+
# SafePythonInterpreterTool,
|
26
|
+
# SearchDefinitionNames,
|
27
|
+
# TaskCompleteTool,
|
28
|
+
# WikipediaSearchTool,
|
29
|
+
# WriteFileTool,
|
30
|
+
# GoogleNewsTool,
|
31
|
+
# PresentationLLMTool,
|
32
|
+
# SequenceTool,
|
33
|
+
# SQLQueryTool,
|
34
|
+
# SQLQueryToolAdvanced,
|
35
|
+
# CloneRepoTool,
|
36
|
+
# BitbucketCloneTool,
|
37
|
+
# BitbucketOperationsTool,
|
38
|
+
# GitOperationsTool,
|
39
|
+
# MarkdownToPdfTool,
|
40
|
+
# MarkdownToPptxTool,
|
41
|
+
# MarkdownToHtmlTool,
|
42
|
+
# MarkdownToEpubTool,
|
43
|
+
# MarkdownToIpynbTool,
|
44
|
+
# MarkdownToLatexTool,
|
45
|
+
# MarkdownToDocxTool,
|
46
|
+
# CSVProcessorTool,
|
47
|
+
# MermaidValidatorTool,
|
48
|
+
# PrepareDownloadTool,
|
49
|
+
# ComposioTool,
|
50
|
+
# NasaNeoWsTool,
|
51
|
+
# NasaApodTool,
|
52
|
+
# ProductHuntTool,
|
53
|
+
# RagTool
|
54
|
+
# )
|
55
|
+
# from quantalogic.event_emitter import EventEmitter
|
56
|
+
# from quantalogic.console_token_printer import console_print_token
|
57
|
+
|
58
|
+
# Function to create a custom agent
|
59
|
+
# def create_custom_agent(
|
60
|
+
# model_name: str,
|
61
|
+
# vision_model_name: str | None = None,
|
62
|
+
# no_stream: bool = False,
|
63
|
+
# compact_every_n_iteration: int | None = None,
|
64
|
+
# max_tokens_working_memory: int | None = None,
|
65
|
+
# specific_expertise: str = "",
|
66
|
+
# tools: list[Any] | None = None,
|
67
|
+
# memory: AgentMemory | None = None
|
68
|
+
# ) -> Agent:
|
69
|
+
# """Create an agent with the specified model and tools.
|
70
|
+
|
71
|
+
# Args:
|
72
|
+
# model_name (str): Name of the model to use
|
73
|
+
# vision_model_name (str | None): Name of the vision model to use
|
74
|
+
# no_stream (bool, optional): If True, the agent will not stream results.
|
75
|
+
# compact_every_n_iteration (int | None, optional): Frequency of memory compaction.
|
76
|
+
# max_tokens_working_memory (int | None, optional): Maximum tokens for working memory.
|
77
|
+
# specific_expertise (str, optional): Specific expertise of the agent.
|
78
|
+
# tools (list[Any], optional): List of tool configurations to add to the agent.
|
79
|
+
# Each tool config should have:
|
80
|
+
# - type: str - The type of tool
|
81
|
+
# - parameters: dict - The parameters required for the tool
|
82
|
+
# memory (AgentMemory, optional): Memory object to use for the agent.
|
83
|
+
|
84
|
+
# Returns:
|
85
|
+
# Agent: An agent with the specified model and tools
|
86
|
+
# """
|
87
|
+
# # Create storage directory for RAG
|
88
|
+
# # storage_dir = os.path.join(os.path.dirname(__file__), "storage", "rag")
|
89
|
+
# # os.makedirs(storage_dir, exist_ok=True)
|
90
|
+
|
91
|
+
# # Rebuild AgentTool to resolve forward references
|
92
|
+
# # AgentTool.model_rebuild()
|
93
|
+
|
94
|
+
# # Create event emitter
|
95
|
+
# # event_emitter = EventEmitter()
|
96
|
+
|
97
|
+
# # Define tool mapping with their parameter requirements
|
98
|
+
# # tool_mapping = {
|
99
|
+
# # "llm": lambda params: LLMTool(
|
100
|
+
# # model_name=params.get("model_name", model_name),
|
101
|
+
# # on_token=console_print_token if not no_stream else None,
|
102
|
+
# # event_emitter=event_emitter
|
103
|
+
# # ),
|
104
|
+
# # "llm_vision": lambda params: LLMVisionTool(
|
105
|
+
# # model_name=params.get("vision_model_name") or vision_model_name,
|
106
|
+
# # on_token=console_print_token if not no_stream else None,
|
107
|
+
# # event_emitter=event_emitter
|
108
|
+
# # ),
|
109
|
+
# # "llm_image_generation": lambda params: LLMImageGenerationTool(
|
110
|
+
# # provider="dall-e",
|
111
|
+
# # model_name="openai/dall-e-3",
|
112
|
+
# # on_token=console_print_token if not no_stream else None,
|
113
|
+
# # ),
|
114
|
+
# # "download_http_file": lambda params: DownloadHttpFileTool(),
|
115
|
+
# # "duck_duck_go_search": lambda params: DuckDuckGoSearchTool(),
|
116
|
+
# # "edit_whole_content": lambda params: EditWholeContentTool(),
|
117
|
+
# # "execute_bash_command": lambda params: ExecuteBashCommandTool(),
|
118
|
+
# # "input_question": lambda params: InputQuestionTool(),
|
119
|
+
# # "list_directory": lambda params: ListDirectoryTool(),
|
120
|
+
# # "markitdown": lambda params: MarkitdownTool(),
|
121
|
+
# # "nodejs": lambda params: NodeJsTool(),
|
122
|
+
# # "python": lambda params: PythonTool(),
|
123
|
+
# # "read_file_block": lambda params: ReadFileBlockTool(),
|
124
|
+
# # "read_file": lambda params: ReadFileTool(),
|
125
|
+
# # "read_html": lambda params: ReadHTMLTool(),
|
126
|
+
# # "replace_in_file": lambda params: ReplaceInFileTool(),
|
127
|
+
# # "ripgrep": lambda params: RipgrepTool(),
|
128
|
+
# # "safe_python_interpreter": lambda params: SafePythonInterpreterTool(),
|
129
|
+
# # "search_definition_names": lambda params: SearchDefinitionNames(),
|
130
|
+
# # "wikipedia_search": lambda params: WikipediaSearchTool(),
|
131
|
+
# # "write_file": lambda params: WriteFileTool(),
|
132
|
+
# # "google_news": lambda params: GoogleNewsTool(
|
133
|
+
# # model_name=params.get("model_name", model_name),
|
134
|
+
# # on_token=console_print_token if not no_stream else None,
|
135
|
+
# # event_emitter=event_emitter
|
136
|
+
# # ),
|
137
|
+
# # "presentation_llm": lambda params: PresentationLLMTool(
|
138
|
+
# # model_name=params.get("model_name", model_name),
|
139
|
+
# # additional_info=params.get("additional_info", ""),
|
140
|
+
# # on_token=console_print_token if not no_stream else None,
|
141
|
+
# # event_emitter=event_emitter
|
142
|
+
# # ),
|
143
|
+
# # "sequence": lambda params: SequenceTool(
|
144
|
+
# # model_name=params.get("model_name", model_name),
|
145
|
+
# # on_token=console_print_token if not no_stream else None,
|
146
|
+
# # event_emitter=event_emitter
|
147
|
+
# # ),
|
148
|
+
# # "sql_query": lambda params: SQLQueryTool(
|
149
|
+
# # connection_string=params.get("connection_string", ""),
|
150
|
+
# # model_name=params.get("model_name", model_name),
|
151
|
+
# # on_token=console_print_token if not no_stream else None,
|
152
|
+
# # event_emitter=event_emitter
|
153
|
+
# # ),
|
154
|
+
# # "sql_query_advanced": lambda params: SQLQueryToolAdvanced(
|
155
|
+
# # connection_string=params.get("connection_string", ""),
|
156
|
+
# # model_name=params.get("model_name", model_name),
|
157
|
+
# # on_token=console_print_token if not no_stream else None,
|
158
|
+
# # event_emitter=event_emitter
|
159
|
+
# # ),
|
160
|
+
# # "clone_repo_tool": lambda params: CloneRepoTool(auth_token=params.get("auth_token", "")),
|
161
|
+
# # "bitbucket_clone_repo_tool": lambda params: BitbucketCloneTool(access_token=params.get("access_token", "")),
|
162
|
+
# # "bitbucket_operations_tool": lambda params: BitbucketOperationsTool(access_token=params.get("access_token", "")),
|
163
|
+
# # "git_operations_tool": lambda params: GitOperationsTool(auth_token=params.get("auth_token", "")),
|
164
|
+
# # "markdown_to_pdf": lambda params: MarkdownToPdfTool(),
|
165
|
+
# # "markdown_to_pptx": lambda params: MarkdownToPptxTool(),
|
166
|
+
# # "markdown_to_html": lambda params: MarkdownToHtmlTool(),
|
167
|
+
# # "markdown_to_epub": lambda params: MarkdownToEpubTool(),
|
168
|
+
# # "markdown_to_ipynb": lambda params: MarkdownToIpynbTool(),
|
169
|
+
# # "markdown_to_latex": lambda params: MarkdownToLatexTool(),
|
170
|
+
# # "markdown_to_docx": lambda params: MarkdownToDocxTool(),
|
171
|
+
# # "csv_processor": lambda params: CSVProcessorTool(),
|
172
|
+
# # "mermaid_validator_tool": lambda params: MermaidValidatorTool(),
|
173
|
+
# # "download_file_tool": lambda params: PrepareDownloadTool(),
|
174
|
+
# # "email_tool": lambda params: ComposioTool(
|
175
|
+
# # action="GMAIL_SEND_EMAIL",
|
176
|
+
# # name="email_tool",
|
177
|
+
# # description="Send emails via Gmail",
|
178
|
+
# # need_validation=False
|
179
|
+
# # ),
|
180
|
+
# # "callendar_tool": lambda params: ComposioTool(
|
181
|
+
# # action="GOOGLECALENDAR_CREATE_EVENT",
|
182
|
+
# # name="callendar_tool",
|
183
|
+
# # description="Create events in Google Calendar",
|
184
|
+
# # need_validation=False
|
185
|
+
# # ),
|
186
|
+
# # "weather_tool": lambda params: ComposioTool(
|
187
|
+
# # action="WEATHERMAP_WEATHER",
|
188
|
+
# # name="weather_tool",
|
189
|
+
# # description="Get weather information for a location"
|
190
|
+
# # ),
|
191
|
+
# # "nasa_neows_tool": lambda params: NasaNeoWsTool(),
|
192
|
+
# # "nasa_apod_tool": lambda params: NasaApodTool(),
|
193
|
+
# # "product_hunt_tool": lambda params : ProductHuntTool(),
|
194
|
+
# # "rag_tool": lambda params: RagTool(
|
195
|
+
# # vector_store=params.get("vector_store", "chroma"),
|
196
|
+
# # embedding_model=params.get("embedding_model", "openai"),
|
197
|
+
# # persist_dir=storage_dir,
|
198
|
+
# # document_paths=params.get("document_paths", [])
|
199
|
+
# # )
|
200
|
+
# # }
|
201
|
+
|
202
|
+
# # Define write tools that should trigger automatic download tool addition
|
203
|
+
# # write_tools = {"write_file", "edit_whole_content", "replace_in_file"}
|
204
|
+
|
205
|
+
# # Initialize agent tools list
|
206
|
+
# # agent_tools = []
|
207
|
+
# # Check if any write tools are present
|
208
|
+
# # has_write_tool = any(
|
209
|
+
# # tool_config.get("type") in write_tools
|
210
|
+
# # for tool_config in (tools or [])
|
211
|
+
# # )
|
212
|
+
|
213
|
+
# # Add tools only if they are provided
|
214
|
+
# # if tools:
|
215
|
+
# # for tool_config in tools:
|
216
|
+
# # tool_type = tool_config.get("type")
|
217
|
+
# # logger.debug(f"Processing tool type: {tool_type}")
|
218
|
+
|
219
|
+
# # if tool_type in tool_mapping:
|
220
|
+
# # try:
|
221
|
+
# # # Get tool parameters or empty dict if not provided
|
222
|
+
# # tool_params = tool_config.get("parameters", {})
|
223
|
+
|
224
|
+
# # # Create tool instance with parameters
|
225
|
+
# # tool = tool_mapping[tool_type](tool_params)
|
226
|
+
# # logger.debug(f"Created tool instance: {tool}")
|
227
|
+
|
228
|
+
# # if tool: # Some tools (like llm_vision) might return None
|
229
|
+
# # agent_tools.append(tool)
|
230
|
+
# # logger.info(f"Added tool: {tool_type}")
|
231
|
+
# # except Exception as e:
|
232
|
+
# # logger.error(f"Failed to create tool {tool_type}: {str(e)}")
|
233
|
+
|
234
|
+
# # If any write tool was added, also add the download tool
|
235
|
+
# # if has_write_tool:
|
236
|
+
# # try:
|
237
|
+
# # agent_tools.append(PrepareDownloadTool())
|
238
|
+
# # logger.info("Added download tool automatically")
|
239
|
+
# # except Exception as e:
|
240
|
+
# # logger.error(f"Failed to add download tool: {str(e)}")
|
241
|
+
|
242
|
+
# # Always add TaskCompleteTool
|
243
|
+
# # agent_tools.append(TaskCompleteTool())
|
244
|
+
|
245
|
+
# # Return the configured Agent
|
246
|
+
# # return Agent(
|
247
|
+
# # model_name=model_name,
|
248
|
+
# # tools=agent_tools,
|
249
|
+
# # event_emitter=event_emitter,
|
250
|
+
# # compact_every_n_iterations=compact_every_n_iteration,
|
251
|
+
# # max_tokens_working_memory=max_tokens_working_memory,
|
252
|
+
# # specific_expertise=specific_expertise,
|
253
|
+
# # memory=memory,
|
254
|
+
# # )
|
@@ -0,0 +1,70 @@
|
|
1
|
+
"""Tools for the QuantaLogic agent."""
|
2
|
+
|
3
|
+
from loguru import logger
|
4
|
+
|
5
|
+
# Direct imports of tools
|
6
|
+
from .agent_tool import AgentTool
|
7
|
+
from .download_http_file_tool import DownloadHttpFileTool
|
8
|
+
from .duckduckgo_search_tool import DuckDuckGoSearchTool
|
9
|
+
from .edit_whole_content_tool import EditWholeContentTool
|
10
|
+
from .elixir_tool import ElixirTool
|
11
|
+
from .execute_bash_command_tool import ExecuteBashCommandTool
|
12
|
+
from .grep_app_tool import GrepAppTool
|
13
|
+
from .input_question_tool import InputQuestionTool
|
14
|
+
from .jinja_tool import JinjaTool
|
15
|
+
from .list_directory_tool import ListDirectoryTool
|
16
|
+
from .llm_tool import LLMTool
|
17
|
+
from .llm_vision_tool import LLMVisionTool
|
18
|
+
from .markitdown_tool import MarkitdownTool
|
19
|
+
from .nodejs_tool import NodeJsTool
|
20
|
+
from .python_tool import PythonTool
|
21
|
+
from .read_file_block_tool import ReadFileBlockTool
|
22
|
+
from .read_file_tool import ReadFileTool
|
23
|
+
from .read_html_tool import ReadHTMLTool
|
24
|
+
from .replace_in_file_tool import ReplaceInFileTool
|
25
|
+
from .ripgrep_tool import RipgrepTool
|
26
|
+
from .safe_python_interpreter_tool import SafePythonInterpreterTool
|
27
|
+
from .search_definition_names import SearchDefinitionNames
|
28
|
+
from .sequence_tool import SequenceTool
|
29
|
+
from .serpapi_search_tool import SerpApiSearchTool
|
30
|
+
from .sql_query_tool import SQLQueryTool
|
31
|
+
from .task_complete_tool import TaskCompleteTool
|
32
|
+
from .tool import Tool, ToolArgument
|
33
|
+
from .unified_diff_tool import UnifiedDiffTool
|
34
|
+
from .wikipedia_search_tool import WikipediaSearchTool
|
35
|
+
from .write_file_tool import WriteFileTool
|
36
|
+
|
37
|
+
# Define __all__ to control what gets imported with `from quantalogic.tools import *`
|
38
|
+
__all__ = [
|
39
|
+
'AgentTool',
|
40
|
+
'DownloadHttpFileTool',
|
41
|
+
'DuckDuckGoSearchTool',
|
42
|
+
'EditWholeContentTool',
|
43
|
+
'ElixirTool',
|
44
|
+
'ExecuteBashCommandTool',
|
45
|
+
'GrepAppTool',
|
46
|
+
'InputQuestionTool',
|
47
|
+
'JinjaTool',
|
48
|
+
'ListDirectoryTool',
|
49
|
+
'LLMTool',
|
50
|
+
'LLMVisionTool',
|
51
|
+
'MarkitdownTool',
|
52
|
+
'NodeJsTool',
|
53
|
+
'PythonTool',
|
54
|
+
'ReadFileBlockTool',
|
55
|
+
'ReadFileTool',
|
56
|
+
'ReadHTMLTool',
|
57
|
+
'ReplaceInFileTool',
|
58
|
+
'RipgrepTool',
|
59
|
+
'SafePythonInterpreterTool',
|
60
|
+
'SearchDefinitionNames',
|
61
|
+
'SequenceTool',
|
62
|
+
'SerpApiSearchTool',
|
63
|
+
'SQLQueryTool',
|
64
|
+
'TaskCompleteTool',
|
65
|
+
'Tool',
|
66
|
+
'ToolArgument',
|
67
|
+
'UnifiedDiffTool',
|
68
|
+
'WikipediaSearchTool',
|
69
|
+
'WriteFileTool'
|
70
|
+
]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"""
|
2
|
+
Composio Tools Module
|
3
|
+
|
4
|
+
This module provides tools and utilities from the Composio integration.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from loguru import logger
|
8
|
+
|
9
|
+
# Explicit imports of all tools in the module
|
10
|
+
from .composio import ComposioTool
|
11
|
+
|
12
|
+
# Define __all__ to control what is imported with `from ... import *`
|
13
|
+
__all__ = [
|
14
|
+
'ComposioTool',
|
15
|
+
]
|
16
|
+
|
17
|
+
# Optional: Add logging for import confirmation
|
18
|
+
logger.info("Composio tools module initialized successfully.")
|