alita-sdk 0.3.181__tar.gz → 0.3.183__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.
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/PKG-INFO +3 -2
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/clients/client.py +2 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/assistant.py +132 -59
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/langraph_agent.py +66 -9
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/llms/alita.py +12 -5
- alita_sdk-0.3.183/alita_sdk/runtime/tools/llm.py +293 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/mcp_server_tool.py +15 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/streamlit.py +4 -8
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/__init__.py +1 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +55 -3
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/work_item/ado_wrapper.py +10 -6
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/api_wrapper.py +3 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/backend_tests_tool.py +101 -7
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/carrier_sdk.py +4 -0
- alita_sdk-0.3.183/alita_sdk/tools/slack/__init__.py +57 -0
- alita_sdk-0.3.183/alita_sdk/tools/slack/api_wrapper.py +190 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk.egg-info/PKG-INFO +3 -2
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk.egg-info/SOURCES.txt +2 -1
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk.egg-info/requires.txt +2 -1
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/pyproject.toml +3 -3
- alita_sdk-0.3.181/alita_sdk/runtime/langchain/agents/react_agent.py +0 -157
- alita_sdk-0.3.181/alita_sdk/runtime/tools/llm.py +0 -74
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/LICENSE +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/README.md +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/ado_analyse/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/ado_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/github_analyse/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/github_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/gitlab_analyse/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/gitlab_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/store_manager.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/function.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/indexer_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/repos/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/test_plan/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/wiki/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ado/work_item/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/advanced_jira_mining/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/azure_ai/search/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/bitbucket/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/bitbucket/tools.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/browser/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/cancel_ui_test_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/create_ui_excel_report_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/create_ui_test_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/lighthouse_excel_reporter.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/run_ui_test_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/update_ui_test_schedule_tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/aws/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/code/linter/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/code/sonar/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/confluence/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/custom_open_api/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/elastic/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/figma/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/github/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gitlab/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gitlab_org/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/google_places/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/jira/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/keycloak/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/memory/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ocr/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/postman/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/postman/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/postman/postman_analysis.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pptx/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/qtest/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/rally/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/report_portal/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/salesforce/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/servicenow/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/sharepoint/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/sql/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/testio/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/testrail/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/xray/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_enterprise/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_scale/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_squad/__init__.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_squad/api_wrapper.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk/tools/zephyr_squad/zephyr_squad_cloud_client.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/setup.cfg +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.181 → alita_sdk-0.3.183}/tests/test_jira_analysis.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: alita_sdk
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.183
|
4
4
|
Summary: SDK for building langchain agents using resources from Alita
|
5
5
|
Author-email: Artem Rozumenko <artyom.rozumenko@gmail.com>, Mikalai Biazruchka <mikalai_biazruchka@epam.com>, Roman Mitusov <roman_mitusov@epam.com>, Ivan Krakhmaliuk <lifedjik@gmail.com>, Artem Dubrovskiy <ad13box@gmail.com>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -32,7 +32,7 @@ Requires-Dist: langchain-openai~=0.3.0; extra == "runtime"
|
|
32
32
|
Requires-Dist: langgraph-checkpoint-sqlite~=2.0.0; extra == "runtime"
|
33
33
|
Requires-Dist: langgraph-checkpoint-postgres~=2.0.1; extra == "runtime"
|
34
34
|
Requires-Dist: langsmith>=0.3.45; extra == "runtime"
|
35
|
-
Requires-Dist: langgraph
|
35
|
+
Requires-Dist: langgraph<0.5,>=0.4.8; extra == "runtime"
|
36
36
|
Requires-Dist: langchain_chroma~=0.2.2; extra == "runtime"
|
37
37
|
Requires-Dist: langchain-unstructured~=0.1.6; extra == "runtime"
|
38
38
|
Requires-Dist: langchain-postgres~=0.0.13; extra == "runtime"
|
@@ -124,6 +124,7 @@ Requires-Dist: shortuuid==1.0.13; extra == "tools"
|
|
124
124
|
Requires-Dist: yarl==1.17.1; extra == "tools"
|
125
125
|
Requires-Dist: langmem==0.0.27; extra == "tools"
|
126
126
|
Requires-Dist: textract-py3==2.1.1; extra == "tools"
|
127
|
+
Requires-Dist: slack_sdk==3.35.0; extra == "tools"
|
127
128
|
Provides-Extra: community
|
128
129
|
Requires-Dist: retry-extended==0.2.3; extra == "community"
|
129
130
|
Requires-Dist: pyobjtojson==0.3; extra == "community"
|
@@ -218,6 +218,8 @@ class AlitaClient:
|
|
218
218
|
return LangChainAssistant(self, data, client,
|
219
219
|
chat_history, app_type,
|
220
220
|
tools=tools, memory=memory, store=store).runnable()
|
221
|
+
elif runtime == 'llama':
|
222
|
+
raise NotImplementedError("LLama runtime is not supported")
|
221
223
|
|
222
224
|
def datasource(self, datasource_id: int) -> AlitaDataSource:
|
223
225
|
url = f"{self.datasources}/{datasource_id}"
|
@@ -6,16 +6,10 @@ from langchain.agents import (
|
|
6
6
|
AgentExecutor, create_openai_tools_agent,
|
7
7
|
create_json_chat_agent)
|
8
8
|
from langgraph.store.base import BaseStore
|
9
|
-
|
10
|
-
# Note: Traditional LangChain agents (OpenAI, XML, JSON) do not support
|
11
|
-
# checkpointing natively. Only LangGraph agents support checkpointing.
|
12
|
-
# For checkpointing in traditional agents, you need to migrate to LangGraph.
|
13
|
-
|
14
9
|
from .agents.xml_chat import create_xml_chat_agent
|
15
|
-
from .agents.react_agent import get_langgraph_agent_with_auto_continue
|
16
10
|
from .langraph_agent import create_graph
|
17
11
|
from langchain_core.messages import (
|
18
|
-
BaseMessage, SystemMessage, HumanMessage
|
12
|
+
BaseMessage, SystemMessage, HumanMessage
|
19
13
|
)
|
20
14
|
from langchain_core.prompts import MessagesPlaceholder
|
21
15
|
from .constants import REACT_ADDON, REACT_VARS, XML_ADDON
|
@@ -34,8 +28,7 @@ class Assistant:
|
|
34
28
|
app_type: str = "openai",
|
35
29
|
tools: Optional[list] = [],
|
36
30
|
memory: Optional[Any] = None,
|
37
|
-
store: Optional[BaseStore] = None
|
38
|
-
use_checkpointing: bool = False):
|
31
|
+
store: Optional[BaseStore] = None):
|
39
32
|
|
40
33
|
self.client = copy(client)
|
41
34
|
self.client.max_tokens = data['llm_settings']['max_tokens']
|
@@ -48,7 +41,6 @@ class Assistant:
|
|
48
41
|
self.app_type = app_type
|
49
42
|
self.memory = memory
|
50
43
|
self.store = store
|
51
|
-
self.use_checkpointing = use_checkpointing
|
52
44
|
|
53
45
|
logger.debug("Data for agent creation: %s", data)
|
54
46
|
logger.info("App type: %s", app_type)
|
@@ -74,33 +66,17 @@ class Assistant:
|
|
74
66
|
# Lazy import to avoid circular dependency
|
75
67
|
from ..toolkits.tools import get_tools
|
76
68
|
self.tools = get_tools(data['tools'], alita_client=alita, llm=self.client, memory_store=self.store)
|
77
|
-
if app_type
|
69
|
+
if app_type in ["pipeline", "predict", "react"]:
|
78
70
|
self.prompt = data['instructions']
|
79
|
-
|
80
|
-
|
81
|
-
messages = [SystemMessage(content=data['instructions'])]
|
82
|
-
# messages.append(HumanMessage("{{input}}"))
|
83
|
-
self.prompt = Jinja2TemplatedChatMessagesTemplate(messages=messages)
|
84
|
-
variables = {}
|
85
|
-
input_variables = []
|
86
|
-
for variable in data['variables']:
|
87
|
-
if variable['value'] != "":
|
88
|
-
variables[variable['name']] = variable['value']
|
89
|
-
else:
|
90
|
-
input_variables.append(variable['name'])
|
91
|
-
if input_variables:
|
92
|
-
self.prompt.input_variables = input_variables
|
93
|
-
if variables:
|
94
|
-
self.prompt.partial_variables = variables
|
95
|
-
try:
|
96
|
-
logger.info(f"Client was created with client setting: temperature - {self.client._get_model_default_parameters}")
|
97
|
-
except Exception as e:
|
98
|
-
logger.info(f"Client was created with client setting: temperature - {self.client.temperature} : {self.client.max_tokens}")
|
71
|
+
if tools:
|
72
|
+
self.tools += tools
|
99
73
|
else:
|
100
74
|
self.tools += tools
|
101
75
|
messages = [SystemMessage(content=data['instructions'])]
|
102
76
|
messages.append(MessagesPlaceholder("chat_history"))
|
103
|
-
if app_type == "
|
77
|
+
if app_type == "react":
|
78
|
+
messages.append(HumanMessage(REACT_ADDON))
|
79
|
+
elif app_type == "xml":
|
104
80
|
messages.append(HumanMessage(XML_ADDON))
|
105
81
|
elif app_type in ['openai', 'dial']:
|
106
82
|
messages.append(HumanMessage("{{input}}"))
|
@@ -112,7 +88,7 @@ class Assistant:
|
|
112
88
|
variables[variable['name']] = variable['value']
|
113
89
|
else:
|
114
90
|
input_variables.append(variable['name'])
|
115
|
-
if app_type in ["xml"]:
|
91
|
+
if app_type in ["react", "xml"]:
|
116
92
|
input_variables = list(set(input_variables + REACT_VARS))
|
117
93
|
|
118
94
|
if chat_history and isinstance(chat_history, list):
|
@@ -143,17 +119,14 @@ class Assistant:
|
|
143
119
|
if self.app_type == 'pipeline':
|
144
120
|
return self.pipeline()
|
145
121
|
elif self.app_type == 'openai':
|
146
|
-
# Check if checkpointing is enabled - if so, use LangGraph for auto-continue capability
|
147
|
-
if self.use_checkpointing:
|
148
|
-
return self.getLangGraphAgentWithAutoContinue()
|
149
122
|
return self.getOpenAIToolsAgentExecutor()
|
150
123
|
elif self.app_type == 'xml':
|
151
|
-
# Check if checkpointing is enabled - if so, use LangGraph for auto-continue capability
|
152
|
-
if self.use_checkpointing:
|
153
|
-
return self.getLangGraphAgentWithAutoContinue()
|
154
124
|
return self.getXMLAgentExecutor()
|
125
|
+
elif self.app_type in ['predict', 'react']:
|
126
|
+
return self.getLangGraphReactAgent()
|
155
127
|
else:
|
156
|
-
|
128
|
+
self.tools = [EchoTool()] + self.tools
|
129
|
+
return self.getAgentExecutor()
|
157
130
|
|
158
131
|
def _agent_executor(self, agent: Any):
|
159
132
|
return AgentExecutor.from_agent_and_tools(agent=agent, tools=self.tools,
|
@@ -179,6 +152,125 @@ class Assistant:
|
|
179
152
|
agent = create_openai_tools_agent(llm=self.client, tools=simple_tools, prompt=self.prompt)
|
180
153
|
return self._agent_executor(agent)
|
181
154
|
|
155
|
+
def getLangGraphReactAgent(self):
|
156
|
+
"""
|
157
|
+
Create a LangGraph react agent using a tool-calling agent pattern.
|
158
|
+
This creates a proper LangGraphAgentRunnable with modern tool support.
|
159
|
+
"""
|
160
|
+
# Exclude compiled graph runnables from simple tool agents
|
161
|
+
simple_tools = [t for t in self.tools if isinstance(t, BaseTool)]
|
162
|
+
|
163
|
+
# Set up memory/checkpointer if available
|
164
|
+
checkpointer = None
|
165
|
+
if self.memory is not None:
|
166
|
+
checkpointer = self.memory
|
167
|
+
elif self.store is not None:
|
168
|
+
# Convert store to checkpointer if needed
|
169
|
+
from langgraph.checkpoint.memory import MemorySaver
|
170
|
+
checkpointer = MemorySaver()
|
171
|
+
else:
|
172
|
+
# Ensure we have a checkpointer for conversation persistence
|
173
|
+
from langgraph.checkpoint.memory import MemorySaver
|
174
|
+
checkpointer = MemorySaver()
|
175
|
+
logger.info("Using default MemorySaver for conversation persistence")
|
176
|
+
|
177
|
+
# Extract all messages from prompt/chat history for LangGraph
|
178
|
+
chat_history_messages = []
|
179
|
+
prompt_instructions = None
|
180
|
+
|
181
|
+
if hasattr(self.prompt, 'messages') and self.prompt.messages:
|
182
|
+
# Extract all messages from the prompt to use as chat history
|
183
|
+
for message in self.prompt.messages:
|
184
|
+
# Skip placeholders (MessagesPlaceholder instances) as they are not actual messages
|
185
|
+
if hasattr(message, 'variable_name'): # MessagesPlaceholder has variable_name attribute
|
186
|
+
continue
|
187
|
+
# Skip template messages (contains {{variable}} patterns)
|
188
|
+
if hasattr(message, 'content') and isinstance(message.content, str) and '{{' in message.content and '}}' in message.content:
|
189
|
+
continue
|
190
|
+
# Include actual chat history messages
|
191
|
+
chat_history_messages.append(message)
|
192
|
+
|
193
|
+
# Only use prompt_instructions if explicitly specified (for predict app_type)
|
194
|
+
if self.app_type == "predict" and isinstance(self.prompt, str):
|
195
|
+
prompt_instructions = self.prompt
|
196
|
+
|
197
|
+
# Create a unified YAML schema with conditional tool binding
|
198
|
+
# Build the base node configuration
|
199
|
+
node_config = {
|
200
|
+
'id': 'agent',
|
201
|
+
'type': 'llm',
|
202
|
+
'prompt': {
|
203
|
+
'template': prompt_instructions or "You are a helpful assistant."
|
204
|
+
},
|
205
|
+
'input': ['messages'],
|
206
|
+
'output': ['messages'],
|
207
|
+
'transition': 'END'
|
208
|
+
}
|
209
|
+
|
210
|
+
# Add tool binding only if tools are present
|
211
|
+
if simple_tools:
|
212
|
+
tool_names = [tool.name for tool in simple_tools]
|
213
|
+
tool_names_yaml = str(tool_names).replace("'", '"') # Convert to YAML-compatible format
|
214
|
+
node_config['tool_names'] = tool_names_yaml
|
215
|
+
logger.info("Binding tools: %s", tool_names)
|
216
|
+
|
217
|
+
# Properly setup the prompt for YAML
|
218
|
+
import yaml
|
219
|
+
escaped_prompt = prompt_instructions or "You are a helpful assistant."
|
220
|
+
|
221
|
+
# Create the schema as a dictionary first, then convert to YAML
|
222
|
+
state_messages_config = {'type': 'list'}
|
223
|
+
|
224
|
+
# Only set initial messages if there's actual conversation history (not just system prompts)
|
225
|
+
actual_conversation_messages = [
|
226
|
+
msg for msg in chat_history_messages
|
227
|
+
if not isinstance(msg, SystemMessage) # Exclude system messages as they're handled by prompt template
|
228
|
+
]
|
229
|
+
|
230
|
+
if actual_conversation_messages:
|
231
|
+
state_messages_config['value'] = actual_conversation_messages
|
232
|
+
logger.info(f"Setting initial conversation history with {len(actual_conversation_messages)} messages")
|
233
|
+
|
234
|
+
schema_dict = {
|
235
|
+
'name': 'react_agent',
|
236
|
+
'state': {
|
237
|
+
'messages': state_messages_config
|
238
|
+
},
|
239
|
+
'nodes': [{
|
240
|
+
'id': 'agent',
|
241
|
+
'type': 'llm',
|
242
|
+
'prompt': {
|
243
|
+
'template': escaped_prompt
|
244
|
+
},
|
245
|
+
'input': ['messages'],
|
246
|
+
'output': ['messages'],
|
247
|
+
'transition': 'END'
|
248
|
+
}],
|
249
|
+
'entry_point': 'agent'
|
250
|
+
}
|
251
|
+
|
252
|
+
# Add tool-specific parameters only if tools exist
|
253
|
+
if simple_tools:
|
254
|
+
schema_dict['nodes'][0]['tool_names'] = tool_names
|
255
|
+
|
256
|
+
# Convert to YAML string
|
257
|
+
yaml_schema = yaml.dump(schema_dict, default_flow_style=False, allow_unicode=True)
|
258
|
+
|
259
|
+
# Use create_graph function to build the agent like other graph types
|
260
|
+
from .langraph_agent import create_graph
|
261
|
+
|
262
|
+
agent = create_graph(
|
263
|
+
client=self.client,
|
264
|
+
yaml_schema=yaml_schema,
|
265
|
+
tools=simple_tools,
|
266
|
+
memory=checkpointer,
|
267
|
+
store=self.store,
|
268
|
+
debug=False,
|
269
|
+
for_subgraph=False
|
270
|
+
)
|
271
|
+
|
272
|
+
return agent
|
273
|
+
|
182
274
|
def pipeline(self):
|
183
275
|
memory = self.memory
|
184
276
|
#
|
@@ -199,22 +291,3 @@ class Assistant:
|
|
199
291
|
|
200
292
|
def predict(self, messages: list[BaseMessage]):
|
201
293
|
return self.client.invoke(messages)
|
202
|
-
|
203
|
-
def getLangGraphAgentWithAutoContinue(self):
|
204
|
-
"""
|
205
|
-
Create a LangGraph agent with auto-continue capability for when responses get truncated.
|
206
|
-
This provides better handling of length-limited responses compared to traditional AgentExecutor.
|
207
|
-
Uses simple in-memory checkpointing for auto-continue functionality.
|
208
|
-
|
209
|
-
Note: Requires LangGraph 0.5.x or higher that supports post_model_hook.
|
210
|
-
"""
|
211
|
-
|
212
|
-
# Use the function from react_agent.py to create the agent
|
213
|
-
return get_langgraph_agent_with_auto_continue(
|
214
|
-
prompt=self.prompt,
|
215
|
-
model=self.client,
|
216
|
-
tools=self.tools,
|
217
|
-
memory=self.memory,
|
218
|
-
debug=True
|
219
|
-
)
|
220
|
-
|
@@ -6,13 +6,13 @@ from typing import Dict
|
|
6
6
|
import yaml
|
7
7
|
import ast
|
8
8
|
from langchain_core.callbacks import dispatch_custom_event
|
9
|
-
from langchain_core.messages import HumanMessage
|
9
|
+
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage, BaseMessage
|
10
10
|
from langchain_core.runnables import Runnable
|
11
11
|
from langchain_core.runnables import RunnableConfig
|
12
12
|
from langchain_core.tools import BaseTool
|
13
13
|
from langgraph.channels.ephemeral_value import EphemeralValue
|
14
14
|
from langgraph.graph import StateGraph
|
15
|
-
from langgraph.graph import END, START
|
15
|
+
from langgraph.graph.graph import END, START
|
16
16
|
from langgraph.graph.state import CompiledStateGraph
|
17
17
|
from langgraph.managed.base import is_managed_value
|
18
18
|
from langgraph.prebuilt import InjectedStore
|
@@ -498,14 +498,36 @@ def create_graph(
|
|
498
498
|
var: get_type_hints(state_class).get(var, str).__name__
|
499
499
|
for var in output_vars
|
500
500
|
}
|
501
|
+
|
502
|
+
# Check if tools should be bound to this LLM node
|
503
|
+
tool_names = node.get('tool_names', []) if isinstance(node.get('tool_names'), list) else []
|
504
|
+
|
505
|
+
# Filter tools if specific tool names are provided
|
506
|
+
available_tools = []
|
507
|
+
|
508
|
+
if tool_names:
|
509
|
+
# Filter tools by name
|
510
|
+
tool_dict = {tool.name: tool for tool in tools if isinstance(tool, BaseTool)}
|
511
|
+
available_tools = [tool_dict[name] for name in tool_names if name in tool_dict]
|
512
|
+
if len(available_tools) != len(tool_names):
|
513
|
+
missing_tools = [name for name in tool_names if name not in tool_dict]
|
514
|
+
logger.warning(f"Some tools not found for LLM node {node_id}: {missing_tools}")
|
515
|
+
else:
|
516
|
+
# Use all available tools
|
517
|
+
available_tools = [tool for tool in tools if isinstance(tool, BaseTool)]
|
518
|
+
|
501
519
|
lg_builder.add_node(node_id, LLMNode(
|
502
|
-
client=client,
|
503
|
-
|
520
|
+
client=client,
|
521
|
+
prompt=node.get('prompt', {}),
|
522
|
+
name=node['id'],
|
523
|
+
return_type='dict',
|
504
524
|
response_key=node.get('response_key', 'messages'),
|
505
525
|
structured_output_dict=output_vars_dict,
|
506
526
|
output_variables=output_vars,
|
507
527
|
input_variables=node.get('input', ['messages']),
|
508
|
-
structured_output=node.get('structured_output', False)
|
528
|
+
structured_output=node.get('structured_output', False),
|
529
|
+
available_tools=available_tools,
|
530
|
+
tool_names=tool_names))
|
509
531
|
elif node_type == 'router':
|
510
532
|
# Add a RouterNode as an independent node
|
511
533
|
lg_builder.add_node(node_id, RouterNode(
|
@@ -604,6 +626,29 @@ def create_graph(
|
|
604
626
|
return compiled.validate()
|
605
627
|
|
606
628
|
|
629
|
+
def convert_dict_to_message(msg_dict):
|
630
|
+
"""Convert a dictionary message to a LangChain message object."""
|
631
|
+
if isinstance(msg_dict, BaseMessage):
|
632
|
+
return msg_dict # Already a LangChain message
|
633
|
+
|
634
|
+
if isinstance(msg_dict, dict):
|
635
|
+
role = msg_dict.get('role', 'user')
|
636
|
+
content = msg_dict.get('content', '')
|
637
|
+
|
638
|
+
if role == 'user':
|
639
|
+
return HumanMessage(content=content)
|
640
|
+
elif role == 'assistant':
|
641
|
+
return AIMessage(content=content)
|
642
|
+
elif role == 'system':
|
643
|
+
return SystemMessage(content=content)
|
644
|
+
else:
|
645
|
+
# Default to HumanMessage for unknown roles
|
646
|
+
return HumanMessage(content=content)
|
647
|
+
|
648
|
+
# If it's neither dict nor BaseMessage, convert to string and make HumanMessage
|
649
|
+
return HumanMessage(content=str(msg_dict))
|
650
|
+
|
651
|
+
|
607
652
|
class LangGraphAgentRunnable(CompiledStateGraph):
|
608
653
|
def __init__(self, *args, output_variables=None, **kwargs):
|
609
654
|
super().__init__(*args, **kwargs)
|
@@ -612,16 +657,28 @@ class LangGraphAgentRunnable(CompiledStateGraph):
|
|
612
657
|
def invoke(self, input: Union[dict[str, Any], Any],
|
613
658
|
config: Optional[RunnableConfig] = None,
|
614
659
|
*args, **kwargs):
|
615
|
-
|
660
|
+
logger.info(f"Incomming Input: {input}")
|
616
661
|
if not config.get("configurable", {}).get("thread_id"):
|
617
662
|
config["configurable"] = {"thread_id": str(uuid4())}
|
618
663
|
thread_id = config.get("configurable", {}).get("thread_id")
|
664
|
+
# Handle chat history and current input properly
|
619
665
|
if input.get('chat_history') and not input.get('messages'):
|
620
|
-
|
666
|
+
# Convert chat history dict messages to LangChain message objects
|
667
|
+
chat_history = input.pop('chat_history')
|
668
|
+
input['messages'] = [convert_dict_to_message(msg) for msg in chat_history]
|
669
|
+
|
670
|
+
# Append current input to existing messages instead of overwriting
|
621
671
|
if input.get('input'):
|
622
|
-
|
672
|
+
current_message = HumanMessage(content=input.get('input'))
|
673
|
+
if input.get('messages'):
|
674
|
+
# Ensure existing messages are LangChain objects
|
675
|
+
input['messages'] = [convert_dict_to_message(msg) for msg in input['messages']]
|
676
|
+
# Append to existing messages
|
677
|
+
input['messages'].append(current_message)
|
678
|
+
else:
|
679
|
+
# No existing messages, create new list
|
680
|
+
input['messages'] = [current_message]
|
623
681
|
logging.info(f"Input: {thread_id} - {input}")
|
624
|
-
|
625
682
|
if self.checkpointer and self.checkpointer.get_tuple(config):
|
626
683
|
self.update_state(config, input)
|
627
684
|
result = super().invoke(None, config=config, *args, **kwargs)
|
@@ -12,24 +12,31 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
|
16
|
+
#
|
17
|
+
# This is adoption of https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/chat_models/openai.py
|
18
|
+
#
|
19
|
+
|
15
20
|
import logging
|
16
21
|
import requests
|
17
22
|
from time import sleep
|
18
23
|
from traceback import format_exc
|
19
24
|
|
20
|
-
from typing import Any, List, Optional, AsyncIterator, Dict, Iterator
|
25
|
+
from typing import Any, List, Optional, AsyncIterator, Dict, Iterator, Mapping, Type
|
21
26
|
from tiktoken import get_encoding, encoding_for_model
|
22
27
|
from langchain_core.callbacks import (
|
23
28
|
AsyncCallbackManagerForLLMRun,
|
24
29
|
CallbackManagerForLLMRun,
|
25
30
|
)
|
26
|
-
from langchain_core.language_models import BaseChatModel
|
27
|
-
from langchain_core.messages import AIMessageChunk, BaseMessage
|
31
|
+
from langchain_core.language_models import BaseChatModel, SimpleChatModel
|
32
|
+
from langchain_core.messages import (AIMessageChunk, BaseMessage, HumanMessage, HumanMessageChunk, ChatMessageChunk,
|
33
|
+
FunctionMessageChunk, SystemMessageChunk, ToolMessageChunk, BaseMessageChunk,
|
34
|
+
AIMessage)
|
28
35
|
from langchain_core.outputs import ChatGeneration, ChatGenerationChunk, ChatResult
|
29
36
|
from langchain_core.runnables import run_in_executor
|
30
37
|
from langchain_community.chat_models.openai import generate_from_stream, _convert_delta_to_message_chunk
|
31
|
-
from ..clients import AlitaClient
|
32
|
-
from pydantic import Field, model_validator
|
38
|
+
from ..clients.client import AlitaClient
|
39
|
+
from pydantic import Field, model_validator, field_validator, ValidationInfo
|
33
40
|
|
34
41
|
logger = logging.getLogger(__name__)
|
35
42
|
|