alita-sdk 0.3.145__tar.gz → 0.3.147__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.145 → alita_sdk-0.3.147}/PKG-INFO +218 -30
- alita_sdk-0.3.147/README.md +314 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/function.py +0 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/indexer_tool.py +4 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/repos/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/test_plan/__init__.py +2 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/wiki/__init__.py +17 -15
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/work_item/__init__.py +4 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/advanced_jira_mining/__init__.py +10 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/azure_ai/search/__init__.py +7 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/__init__.py +9 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/__init__.py +1 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/__init__.py +2 -4
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/aws/__init__.py +10 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/linter/__init__.py +5 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/sonar/__init__.py +11 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/custom_open_api/__init__.py +4 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/elastic/__init__.py +2 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/figma/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/__init__.py +5 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab_org/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/google_places/__init__.py +11 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/jira/__init__.py +4 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/keycloak/__init__.py +3 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ocr/__init__.py +6 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/__init__.py +5 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pptx/__init__.py +5 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/qtest/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/rally/__init__.py +4 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/report_portal/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/salesforce/__init__.py +5 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/servicenow/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/__init__.py +6 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sql/__init__.py +9 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testio/__init__.py +3 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testrail/__init__.py +5 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/xray/__init__.py +9 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/__init__.py +10 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_enterprise/__init__.py +8 -2
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_scale/__init__.py +2 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/PKG-INFO +218 -30
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/requires.txt +1 -1
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/pyproject.toml +2 -2
- alita_sdk-0.3.145/README.md +0 -126
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/LICENSE +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/ado_analyse/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/ado_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/github_analyse/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/github_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/gitlab_analyse/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/gitlab_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/jira_analyse/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/analysis/jira_analyse/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/browseruse/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/browseruse/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/baseclass.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/knowledge_gap_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/long_writer_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/planner_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/proofreader_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/thinking_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_agents/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_agents/crawl_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_agents/search_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/tool_selector_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/utils/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/utils/parse_output.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/agents/writer_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/deep_research.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/examples/deep_example.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/examples/iterative_example.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/examples/report_plan_example.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/iterative_research.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/llm_config.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/main.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/tools/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/tools/crawl_website.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/tools/web_search.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/utils/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/utils/md_to_pdf.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/deep_researcher/utils/os.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/community/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/artifact.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/client.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/datasource.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/clients/prompt.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/agents/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/agents/xml_chat.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/assistant.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/chat_message_template.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/constants.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaBDDScenariosLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaCSVLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaConfluenceLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaDirectoryLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaDocxMammothLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaExcelLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaGitRepoLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaImageLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaJiraLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaQtestLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/AlitaTableLoader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/constants.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/document_loaders/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/indexer.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/kwextractor.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/llm_processor.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/loaders.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/interfaces/splitters.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/langraph_agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/mixedAgentParser.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/mixedAgentRenderes.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/retrievers/AlitaRetriever.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/retrievers/VectorstoreRetriever.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/retrievers/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_exceptions.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/bdd_parser.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/feature_types.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/bdd_parser/parser.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/git.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/log.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/quota.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/state.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/tools/vector.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/langchain/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/llms/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/llms/alita.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/llms/preloaded.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/application.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/artifact.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/datasource.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/prompt.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/subgraph.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/tools.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/toolkits/vectorstore.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/agent.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/application.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/artifact.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/datasource.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/echo.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/llm.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/loop.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/loop_output.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/mcp_server_tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/pgvector_search.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/prompt.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/router.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/tools/vectorstore.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/AlitaCallback.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/constants.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/evaluate.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/logging.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/save_dataframe.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/streamlit.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/runtime/utils/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/repos/repos_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/test_plan/test_plan_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/wiki/ado_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ado/work_item/ado_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/advanced_jira_mining/data_mining_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/azure_ai/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/azure_ai/search/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/base/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/base/tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/bitbucket_constants.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/cloud_api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/bitbucket/tools.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/crawler.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/duck_duck_go_search.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/google_search_rag.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/browser/wiki.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/backend_reports_tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/backend_tests_tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/carrier_sdk.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/excel_reporter.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/tickets_tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/tools.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/ui_reports_tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/carrier/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/codeparser.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/constants.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_c.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cpp.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_cs.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_go.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_hs.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_java.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_js.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_kt.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_py.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rb.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_registry.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_rs.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/code/treesitter/treesitter_ts.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/models.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/base.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/markdown_chunker.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/proposal_chunker.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/sematic/statistical_chunker.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/chunkers/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/aws/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/azure/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/azure/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/gcp/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/gcp/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/k8s/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/cloud/k8s/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/linter/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/loaders/codesearcher.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/code/sonar/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/loader.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/confluence/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/custom_open_api/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/elastic/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/elitea_base.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/figma/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/github_client.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/graphql_client_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/schemas.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/github/tool_prompts.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/tools.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gitlab_org/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gmail/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gmail/gmail_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/gmail/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/google_places/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/jira/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/keycloak/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/llm/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/llm/img_utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/llm/llm_utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/localgit/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/localgit/local_git.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/localgit/tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ocr/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/ocr/text_detection.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/openapi/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/errors.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/executor/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/executor/code_environment.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/executor/code_executor.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/base.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/code_cleaning.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/generator/code_validator.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/prompts.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/serializer.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/dataframe/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/base_stats.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/descriptive.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/hypothesis_testing.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pandas/statsmodels/regression.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/pptx/pptx_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/qtest/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/qtest/tool.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/rally/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/report_portal/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/report_portal/report_portal_client.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/salesforce/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/salesforce/model.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/servicenow/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/servicenow/servicenow_client.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/authorization_helper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sharepoint/utils.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sql/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/sql/models.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testio/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/testrail/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/utils/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/utils/content_parser.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/xray/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/yagmail/__init__.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/yagmail/yagmail_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/Zephyr.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr/rest_client.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_enterprise/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_enterprise/zephyr_enterprise.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk/tools/zephyr_scale/api_wrapper.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/SOURCES.txt +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/dependency_links.txt +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/alita_sdk.egg-info/top_level.txt +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/setup.cfg +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/tests/test_ado_analysis.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/tests/test_github_analysis.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/tests/test_gitlab_analysis.py +0 -0
- {alita_sdk-0.3.145 → alita_sdk-0.3.147}/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.147
|
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>
|
6
6
|
License-Expression: Apache-2.0
|
@@ -62,7 +62,7 @@ Requires-Dist: rlpycairo==0.3.0; extra == "runtime"
|
|
62
62
|
Requires-Dist: cairocffi==1.7.1; extra == "runtime"
|
63
63
|
Requires-Dist: docx2txt==0.8; extra == "runtime"
|
64
64
|
Requires-Dist: mammoth==1.9.0; extra == "runtime"
|
65
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc
|
65
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc; extra == "runtime"
|
66
66
|
Requires-Dist: sentence-transformers==2.7.0; extra == "runtime"
|
67
67
|
Provides-Extra: tools
|
68
68
|
Requires-Dist: dulwich==0.21.6; extra == "tools"
|
@@ -152,23 +152,28 @@ Before you begin, ensure you have the following requirements met:
|
|
152
152
|
Installation
|
153
153
|
------------
|
154
154
|
|
155
|
-
|
155
|
+
It is recommended to use a Python virtual environment to avoid dependency conflicts and keep your environment isolated.
|
156
156
|
|
157
|
+
### 1. Create and activate a virtual environment
|
158
|
+
|
159
|
+
For **Unix/macOS**:
|
157
160
|
```bash
|
158
|
-
|
161
|
+
python3 -m venv .venv
|
162
|
+
source .venv/bin/activate
|
159
163
|
```
|
160
164
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
cd alita-sdk
|
165
|
+
For **Windows**:
|
166
|
+
```bat
|
167
|
+
python -m venv .venv
|
168
|
+
venv\Scripts\activate
|
166
169
|
```
|
167
170
|
|
168
|
-
|
171
|
+
### 2. Install dependencies
|
172
|
+
|
173
|
+
Install all required dependencies for the SDK and toolkits:
|
169
174
|
|
170
175
|
```bash
|
171
|
-
pip install -r requirements.txt
|
176
|
+
pip install -r req_bkup/requirements-all.txt
|
172
177
|
```
|
173
178
|
|
174
179
|
Environment Setup
|
@@ -180,10 +185,12 @@ Before running your Alita agents, set up your environment variables. Create a `.
|
|
180
185
|
DEPLOYMENT_URL=<your_deployment_url>
|
181
186
|
API_KEY=<your_api_key>
|
182
187
|
PROJECT_ID=<your_project_id>
|
183
|
-
INTEGRATION_UID=<your_integration_uid>
|
184
|
-
MODEL_NAME=<your_model_name>
|
185
188
|
```
|
186
189
|
|
190
|
+
NOTE: these variables can be grabbed from your Elitea platform configuration page.
|
191
|
+

|
192
|
+
|
193
|
+
|
187
194
|
|
188
195
|
Using SDK with Streamlit for Local Development
|
189
196
|
----------------------------------------------
|
@@ -200,8 +207,12 @@ To use the SDK with Streamlit for local development, follow these steps:
|
|
200
207
|
streamlit run alita_local.py
|
201
208
|
```
|
202
209
|
|
203
|
-
Note: If **
|
204
|
-
Sometimes it
|
210
|
+
Note: If **streamlit** throws an error related to **pytorch**, add this `--server.fileWatcherType none` extra arguments.
|
211
|
+
Sometimes it tries to index **pytorch** modules, and since they are **C** modules it raises an exception.
|
212
|
+
|
213
|
+
Example of launch configuration for Streamlit:
|
214
|
+
Important: Make sure to set the correct path to your `.env` file and streamlit.
|
215
|
+

|
205
216
|
|
206
217
|
Streamlit Web Application
|
207
218
|
------------------------
|
@@ -227,7 +238,7 @@ The Alita SDK includes a Streamlit web application that provides a user-friendly
|
|
227
238
|
- After authentication, you'll see a list of available agents
|
228
239
|
- Select an agent from the dropdown menu
|
229
240
|
- Specify a version name (default: 'latest')
|
230
|
-
- Optionally select an agent type and add custom tools
|
241
|
+
- Optionally, select an agent type and add custom tools
|
231
242
|
- Click "Load Agent" to initialize the agent
|
232
243
|
|
233
244
|
3. **Interacting with the Agent**:
|
@@ -241,23 +252,200 @@ The Alita SDK includes a Streamlit web application that provides a user-friendly
|
|
241
252
|
|
242
253
|
This web application simplifies the process of testing and interacting with your Alita agents, making development and debugging more efficient.
|
243
254
|
|
244
|
-
|
245
|
-
|
255
|
+
Using Elitea toolkits and tools with Streamlit for Local Development
|
256
|
+
----------------------------------------------
|
246
257
|
|
247
|
-
|
258
|
+
Actually, toolkits are part of the Alita SDK (`alita-sdk/tools`), so you can use them in your local development environment as well.
|
259
|
+
To debug it, you can use the `alita_local.py` file, which is a Streamlit application that allows you
|
260
|
+
to interact with your agents and toolkits by setting the breakpoints in the code of corresponding tool.
|
248
261
|
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
262
|
+
# Example of agent's debugging with Streamlit:
|
263
|
+
Assume we try to debug the user's agent called `Questionnaire` with the `Confluence` toolkit and `get_pages_with_label` method.
|
264
|
+
Pre-requisites:
|
265
|
+
- Make sure you have set correct variables in your `.env` file
|
266
|
+
- Set the breakpoints in the `alita_sdk/tools/confluence/api_wrapper.py` file, in the `get_pages_with_label` method
|
253
267
|
|
254
|
-
|
268
|
+
1. Run the Streamlit app (using debug):
|
255
269
|
```bash
|
256
|
-
|
270
|
+
streamlit run alita_local.py
|
257
271
|
```
|
272
|
+
2. Login into the application with your credentials (populated from .env file)
|
273
|
+
- Enter your deployment URL, API key, and project ID (optionally)
|
274
|
+
- Click "Login" to authenticate with the Alita Platform
|
258
275
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
276
|
+

|
277
|
+
3. Select `Questionnaire` agent
|
278
|
+
|
279
|
+

|
280
|
+
4. Query the agent with the required prompt:
|
281
|
+
```
|
282
|
+
get pages with label `ai-mb`
|
283
|
+
```
|
284
|
+
5. Debug the agent's code:
|
285
|
+
- The Streamlit app will call the `get_pages_with_label` method of the `Confluence` toolkit
|
286
|
+
- The execution will stop at the breakpoint you set in the `alita_sdk/tools/confluence/api_wrapper.py` file
|
287
|
+
- You can inspect variables, step through the code, and analyze the flow of execution
|
288
|
+

|
289
|
+
|
290
|
+
|
291
|
+
How to create a new toolkit
|
292
|
+
----------------------------------------------
|
293
|
+
The toolkit is a collection of pre-built tools and functionalities designed to simplify the development of AI agents. These toolkits provide developers with the necessary resources, such as APIs, data connectors to required services and systems.
|
294
|
+
As an initial step, you have to decide on its capabilities to design required tools and its args schema.
|
295
|
+
Example of the Testrail toolkit's capabilities:
|
296
|
+
- `get_test_cases`: Retrieve test cases from Testrail
|
297
|
+
- `get_test_runs`: Retrieve test runs from Testrail
|
298
|
+
- `get_test_plans`: Retrieve test plans from Testrail
|
299
|
+
- `create_test_case`: Create a new test case in Testrail
|
300
|
+
- etc.
|
301
|
+
|
302
|
+
### General Steps to Create a Toolkit
|
303
|
+
### 1. Create the Toolkit package
|
304
|
+
Create a new package under `alita_sdk/tools/` for your toolkit, e.g., `alita_sdk/tools/mytoolkit/`.
|
305
|
+
|
306
|
+
### 2. Implement the API Wrapper
|
307
|
+
Create an `api_wrapper.py` file in your toolkit directory. This file should:
|
308
|
+
- Define a config class (subclassing `BaseToolApiWrapper`).
|
309
|
+
- Implement methods for each tool/action you want to implement.
|
310
|
+
- Provide a `get_available_tools()` method that returns tools' metadata and argument schemas.
|
311
|
+
|
312
|
+
Note:
|
313
|
+
- args schema should be defined using Pydantic models, which will help in validating the input parameters for each tool.
|
314
|
+
- make sure tools descriptions are clear and concise, as they will be used by LLM to define on tool's execution chain.
|
315
|
+
- clearly define the input parameters for each tool, as they will be used by LLM to generate the correct input for the tool and whether it is required or optional (refer to https://docs.pydantic.dev/2.2/migration/#required-optional-and-nullable-fields if needed).
|
316
|
+
|
317
|
+
**Example:**
|
318
|
+
```python
|
319
|
+
# alita_sdk/tools/mytoolkit/api_wrapper.py
|
320
|
+
from ...elitea_base import BaseToolApiWrapper
|
321
|
+
from pydantic import create_model, Field
|
322
|
+
|
323
|
+
|
324
|
+
class MyToolkitConfig(BaseToolApiWrapper):
|
325
|
+
|
326
|
+
|
327
|
+
# Define config fields (e.g., API keys, endpoints)
|
328
|
+
api_key: str
|
329
|
+
|
330
|
+
|
331
|
+
def do_something(self, param1: str):
|
332
|
+
|
333
|
+
|
334
|
+
"""Perform an action with param1."""
|
335
|
+
# Implement your logic here
|
336
|
+
return {"result": f"Did something with {param1}"}
|
337
|
+
|
338
|
+
|
339
|
+
def get_available_tools(self):
|
340
|
+
|
341
|
+
|
342
|
+
return [
|
343
|
+
{
|
344
|
+
"name": "do_something",
|
345
|
+
"ref": self.do_something,
|
346
|
+
"description": self.do_something.__doc__,
|
347
|
+
"args_schema": create_model(
|
348
|
+
"DoSomethingModel",
|
349
|
+
param1=(str, Field(description="Parameter 1"))
|
350
|
+
),
|
351
|
+
}
|
352
|
+
]
|
353
|
+
```
|
354
|
+
|
355
|
+
### 3. Implement the Toolkit Configuration Class
|
356
|
+
Create an `__init__.py` file in your toolkit directory. This file should:
|
357
|
+
- Define a `toolkit_config_schema()` static method for toolkit's configuration (this data is used for toolkit configuration card rendering on UI).
|
358
|
+
- Implement a `get_tools(tool)` method to grab toolkit's configuration parameters based on the configuration on UI.
|
359
|
+
- Implement a `get_toolkit()` class method to instantiate tools.
|
360
|
+
- Return a list of tool instances via `get_tools()`.
|
361
|
+
**Example:**
|
362
|
+
```python
|
363
|
+
# alita_sdk/tools/mytoolkit/__init__.py
|
364
|
+
from pydantic import BaseModel, Field, create_model
|
365
|
+
from langchain_core.tools import BaseToolkit, BaseTool
|
366
|
+
from .api_wrapper import MyToolkitConfig
|
367
|
+
from ...base.tool import BaseAction
|
368
|
+
|
369
|
+
name = "mytoolkit"
|
370
|
+
|
371
|
+
def get_tools(tool):
|
372
|
+
return MyToolkit().get_toolkit(
|
373
|
+
selected_tools=tool['settings'].get('selected_tools', []),
|
374
|
+
url=tool['settings']['url'],
|
375
|
+
password=tool['settings'].get('password', None),
|
376
|
+
email=tool['settings'].get('email', None),
|
377
|
+
toolkit_name=tool.get('toolkit_name')
|
378
|
+
).get_tools()
|
379
|
+
|
380
|
+
class MyToolkit(BaseToolkit):
|
381
|
+
|
382
|
+
|
383
|
+
tools: list[BaseTool] = []
|
384
|
+
|
385
|
+
|
386
|
+
@staticmethod
|
387
|
+
def toolkit_config_schema() -> BaseModel:
|
388
|
+
|
389
|
+
|
390
|
+
return create_model(
|
391
|
+
name,
|
392
|
+
url=(str, Field(title="Base URL", description="Base URL for the API")),
|
393
|
+
email=(str, Field(title="Email", description="Email for authentication", default=None)),
|
394
|
+
password=(str, Field(title="Password", description="Password for authentication", default=None)),
|
395
|
+
selected_tools=(list[str], Field(title="Selected Tools", description="List of tools to enable", default=[])),
|
396
|
+
)
|
397
|
+
|
398
|
+
|
399
|
+
@classmethod
|
400
|
+
def get_toolkit(cls, selected_tools=None, toolkit_name=None, **kwargs):
|
401
|
+
config = MyToolkitConfig(**kwargs)
|
402
|
+
|
403
|
+
|
404
|
+
available_tools = config.get_available_tools()
|
405
|
+
tools = []
|
406
|
+
for tool in available_tools:
|
407
|
+
if selected_tools and tool["name"] not in selected_tools:
|
408
|
+
continue
|
409
|
+
tools.append(BaseAction(
|
410
|
+
api_wrapper=config,
|
411
|
+
name=tool["name"],
|
412
|
+
description=tool["description"],
|
413
|
+
args_schema=tool["args_schema"]
|
414
|
+
))
|
415
|
+
return cls(tools=tools)
|
416
|
+
|
417
|
+
|
418
|
+
def get_tools(self) -> list[BaseTool]:
|
419
|
+
|
420
|
+
|
421
|
+
return self.tools
|
422
|
+
```
|
423
|
+
|
424
|
+
### 4. Add the Toolkit to the SDK
|
425
|
+
Update the `__init__.py` file in the `alita_sdk/tools/` directory to include your new toolkit:
|
426
|
+
|
427
|
+
```python
|
428
|
+
# alita_sdk/tools/__init__.py
|
429
|
+
|
430
|
+
def get_tools(tools_list, alita: 'AlitaClient', llm: 'LLMLikeObject', *args, **kwargs):
|
431
|
+
...
|
432
|
+
# add your toolkit here with proper type
|
433
|
+
elif tool['type'] == 'mytoolkittype':
|
434
|
+
tools.extend(get_mytoolkit(tool))
|
435
|
+
|
436
|
+
# add toolkit's config schema
|
437
|
+
def get_toolkits():
|
438
|
+
return [
|
439
|
+
...,
|
440
|
+
MyToolkit.toolkit_config_schema(),
|
441
|
+
]
|
442
|
+
```
|
443
|
+
|
444
|
+
### 5. Test Your Toolkit
|
445
|
+
To test your toolkit, you can use the Streamlit application (`alita_local.py`) to load and interact with your toolkit.
|
446
|
+
- Login to the platform
|
447
|
+
- Select `Toolkit testing` tab
|
448
|
+
- Choose your toolkit from the dropdown menu.
|
449
|
+
- Adjust the configuration parameters as needed, and then test the tools by sending queries to them.
|
450
|
+
|
451
|
+

|
@@ -0,0 +1,314 @@
|
|
1
|
+
Alita SDK
|
2
|
+
=========
|
3
|
+
|
4
|
+
Alita SDK, built on top of Langchain, enables the creation of intelligent agents within the Alita Platform using project-specific prompts and data sources. This SDK is designed for developers looking to integrate advanced AI capabilities into their projects with ease.
|
5
|
+
|
6
|
+
Prerequisites
|
7
|
+
-------------
|
8
|
+
|
9
|
+
Before you begin, ensure you have the following requirements met:
|
10
|
+
|
11
|
+
* Python 3.10+
|
12
|
+
* An active deployment of Project Alita
|
13
|
+
* Access to personal project
|
14
|
+
|
15
|
+
Installation
|
16
|
+
------------
|
17
|
+
|
18
|
+
It is recommended to use a Python virtual environment to avoid dependency conflicts and keep your environment isolated.
|
19
|
+
|
20
|
+
### 1. Create and activate a virtual environment
|
21
|
+
|
22
|
+
For **Unix/macOS**:
|
23
|
+
```bash
|
24
|
+
python3 -m venv .venv
|
25
|
+
source .venv/bin/activate
|
26
|
+
```
|
27
|
+
|
28
|
+
For **Windows**:
|
29
|
+
```bat
|
30
|
+
python -m venv .venv
|
31
|
+
venv\Scripts\activate
|
32
|
+
```
|
33
|
+
|
34
|
+
### 2. Install dependencies
|
35
|
+
|
36
|
+
Install all required dependencies for the SDK and toolkits:
|
37
|
+
|
38
|
+
```bash
|
39
|
+
pip install -r req_bkup/requirements-all.txt
|
40
|
+
```
|
41
|
+
|
42
|
+
Environment Setup
|
43
|
+
-----------------
|
44
|
+
|
45
|
+
Before running your Alita agents, set up your environment variables. Create a `.env` file in the root directory of your project and include your Project Alita credentials:
|
46
|
+
|
47
|
+
```.env
|
48
|
+
DEPLOYMENT_URL=<your_deployment_url>
|
49
|
+
API_KEY=<your_api_key>
|
50
|
+
PROJECT_ID=<your_project_id>
|
51
|
+
```
|
52
|
+
|
53
|
+
NOTE: these variables can be grabbed from your Elitea platform configuration page.
|
54
|
+

|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
Using SDK with Streamlit for Local Development
|
59
|
+
----------------------------------------------
|
60
|
+
|
61
|
+
To use the SDK with Streamlit for local development, follow these steps:
|
62
|
+
|
63
|
+
1. Ensure you have Streamlit installed:
|
64
|
+
```bash
|
65
|
+
pip install streamlit
|
66
|
+
```
|
67
|
+
|
68
|
+
2. Run the Streamlit app:
|
69
|
+
```bash
|
70
|
+
streamlit run alita_local.py
|
71
|
+
```
|
72
|
+
|
73
|
+
Note: If **streamlit** throws an error related to **pytorch**, add this `--server.fileWatcherType none` extra arguments.
|
74
|
+
Sometimes it tries to index **pytorch** modules, and since they are **C** modules it raises an exception.
|
75
|
+
|
76
|
+
Example of launch configuration for Streamlit:
|
77
|
+
Important: Make sure to set the correct path to your `.env` file and streamlit.
|
78
|
+

|
79
|
+
|
80
|
+
Streamlit Web Application
|
81
|
+
------------------------
|
82
|
+
|
83
|
+
The Alita SDK includes a Streamlit web application that provides a user-friendly interface for interacting with Alita agents. This application is powered by the `streamlit.py` module included in the SDK.
|
84
|
+
|
85
|
+
### Key Features
|
86
|
+
|
87
|
+
- **Agent Management**: Load and interact with agents created in the Alita Platform
|
88
|
+
- **Authentication**: Easily connect to your Alita/Elitea deployment using your credentials
|
89
|
+
- **Chat Interface**: User-friendly chat interface for communicating with your agents
|
90
|
+
- **Toolkit Integration**: Add and configure toolkits for your agents
|
91
|
+
- **Session Management**: Maintain conversation history and thread state
|
92
|
+
|
93
|
+
### Using the Web Application
|
94
|
+
|
95
|
+
1. **Authentication**:
|
96
|
+
- Navigate to the "Alita Settings" tab in the sidebar
|
97
|
+
- Enter your deployment URL, API key, and project ID
|
98
|
+
- Click "Login" to authenticate with the Alita Platform
|
99
|
+
|
100
|
+
2. **Loading an Agent**:
|
101
|
+
- After authentication, you'll see a list of available agents
|
102
|
+
- Select an agent from the dropdown menu
|
103
|
+
- Specify a version name (default: 'latest')
|
104
|
+
- Optionally, select an agent type and add custom tools
|
105
|
+
- Click "Load Agent" to initialize the agent
|
106
|
+
|
107
|
+
3. **Interacting with the Agent**:
|
108
|
+
- Use the chat input at the bottom of the screen to send messages to the agent
|
109
|
+
- The agent's responses will appear in the chat window
|
110
|
+
- Your conversation history is maintained until you clear it
|
111
|
+
|
112
|
+
4. **Clearing Data**:
|
113
|
+
- Use the "Clear Chat" button to reset the conversation history
|
114
|
+
- Use the "Clear Config" button to reset toolkit configurations
|
115
|
+
|
116
|
+
This web application simplifies the process of testing and interacting with your Alita agents, making development and debugging more efficient.
|
117
|
+
|
118
|
+
Using Elitea toolkits and tools with Streamlit for Local Development
|
119
|
+
----------------------------------------------
|
120
|
+
|
121
|
+
Actually, toolkits are part of the Alita SDK (`alita-sdk/tools`), so you can use them in your local development environment as well.
|
122
|
+
To debug it, you can use the `alita_local.py` file, which is a Streamlit application that allows you
|
123
|
+
to interact with your agents and toolkits by setting the breakpoints in the code of corresponding tool.
|
124
|
+
|
125
|
+
# Example of agent's debugging with Streamlit:
|
126
|
+
Assume we try to debug the user's agent called `Questionnaire` with the `Confluence` toolkit and `get_pages_with_label` method.
|
127
|
+
Pre-requisites:
|
128
|
+
- Make sure you have set correct variables in your `.env` file
|
129
|
+
- Set the breakpoints in the `alita_sdk/tools/confluence/api_wrapper.py` file, in the `get_pages_with_label` method
|
130
|
+
|
131
|
+
1. Run the Streamlit app (using debug):
|
132
|
+
```bash
|
133
|
+
streamlit run alita_local.py
|
134
|
+
```
|
135
|
+
2. Login into the application with your credentials (populated from .env file)
|
136
|
+
- Enter your deployment URL, API key, and project ID (optionally)
|
137
|
+
- Click "Login" to authenticate with the Alita Platform
|
138
|
+
|
139
|
+

|
140
|
+
3. Select `Questionnaire` agent
|
141
|
+
|
142
|
+

|
143
|
+
4. Query the agent with the required prompt:
|
144
|
+
```
|
145
|
+
get pages with label `ai-mb`
|
146
|
+
```
|
147
|
+
5. Debug the agent's code:
|
148
|
+
- The Streamlit app will call the `get_pages_with_label` method of the `Confluence` toolkit
|
149
|
+
- The execution will stop at the breakpoint you set in the `alita_sdk/tools/confluence/api_wrapper.py` file
|
150
|
+
- You can inspect variables, step through the code, and analyze the flow of execution
|
151
|
+

|
152
|
+
|
153
|
+
|
154
|
+
How to create a new toolkit
|
155
|
+
----------------------------------------------
|
156
|
+
The toolkit is a collection of pre-built tools and functionalities designed to simplify the development of AI agents. These toolkits provide developers with the necessary resources, such as APIs, data connectors to required services and systems.
|
157
|
+
As an initial step, you have to decide on its capabilities to design required tools and its args schema.
|
158
|
+
Example of the Testrail toolkit's capabilities:
|
159
|
+
- `get_test_cases`: Retrieve test cases from Testrail
|
160
|
+
- `get_test_runs`: Retrieve test runs from Testrail
|
161
|
+
- `get_test_plans`: Retrieve test plans from Testrail
|
162
|
+
- `create_test_case`: Create a new test case in Testrail
|
163
|
+
- etc.
|
164
|
+
|
165
|
+
### General Steps to Create a Toolkit
|
166
|
+
### 1. Create the Toolkit package
|
167
|
+
Create a new package under `alita_sdk/tools/` for your toolkit, e.g., `alita_sdk/tools/mytoolkit/`.
|
168
|
+
|
169
|
+
### 2. Implement the API Wrapper
|
170
|
+
Create an `api_wrapper.py` file in your toolkit directory. This file should:
|
171
|
+
- Define a config class (subclassing `BaseToolApiWrapper`).
|
172
|
+
- Implement methods for each tool/action you want to implement.
|
173
|
+
- Provide a `get_available_tools()` method that returns tools' metadata and argument schemas.
|
174
|
+
|
175
|
+
Note:
|
176
|
+
- args schema should be defined using Pydantic models, which will help in validating the input parameters for each tool.
|
177
|
+
- make sure tools descriptions are clear and concise, as they will be used by LLM to define on tool's execution chain.
|
178
|
+
- clearly define the input parameters for each tool, as they will be used by LLM to generate the correct input for the tool and whether it is required or optional (refer to https://docs.pydantic.dev/2.2/migration/#required-optional-and-nullable-fields if needed).
|
179
|
+
|
180
|
+
**Example:**
|
181
|
+
```python
|
182
|
+
# alita_sdk/tools/mytoolkit/api_wrapper.py
|
183
|
+
from ...elitea_base import BaseToolApiWrapper
|
184
|
+
from pydantic import create_model, Field
|
185
|
+
|
186
|
+
|
187
|
+
class MyToolkitConfig(BaseToolApiWrapper):
|
188
|
+
|
189
|
+
|
190
|
+
# Define config fields (e.g., API keys, endpoints)
|
191
|
+
api_key: str
|
192
|
+
|
193
|
+
|
194
|
+
def do_something(self, param1: str):
|
195
|
+
|
196
|
+
|
197
|
+
"""Perform an action with param1."""
|
198
|
+
# Implement your logic here
|
199
|
+
return {"result": f"Did something with {param1}"}
|
200
|
+
|
201
|
+
|
202
|
+
def get_available_tools(self):
|
203
|
+
|
204
|
+
|
205
|
+
return [
|
206
|
+
{
|
207
|
+
"name": "do_something",
|
208
|
+
"ref": self.do_something,
|
209
|
+
"description": self.do_something.__doc__,
|
210
|
+
"args_schema": create_model(
|
211
|
+
"DoSomethingModel",
|
212
|
+
param1=(str, Field(description="Parameter 1"))
|
213
|
+
),
|
214
|
+
}
|
215
|
+
]
|
216
|
+
```
|
217
|
+
|
218
|
+
### 3. Implement the Toolkit Configuration Class
|
219
|
+
Create an `__init__.py` file in your toolkit directory. This file should:
|
220
|
+
- Define a `toolkit_config_schema()` static method for toolkit's configuration (this data is used for toolkit configuration card rendering on UI).
|
221
|
+
- Implement a `get_tools(tool)` method to grab toolkit's configuration parameters based on the configuration on UI.
|
222
|
+
- Implement a `get_toolkit()` class method to instantiate tools.
|
223
|
+
- Return a list of tool instances via `get_tools()`.
|
224
|
+
**Example:**
|
225
|
+
```python
|
226
|
+
# alita_sdk/tools/mytoolkit/__init__.py
|
227
|
+
from pydantic import BaseModel, Field, create_model
|
228
|
+
from langchain_core.tools import BaseToolkit, BaseTool
|
229
|
+
from .api_wrapper import MyToolkitConfig
|
230
|
+
from ...base.tool import BaseAction
|
231
|
+
|
232
|
+
name = "mytoolkit"
|
233
|
+
|
234
|
+
def get_tools(tool):
|
235
|
+
return MyToolkit().get_toolkit(
|
236
|
+
selected_tools=tool['settings'].get('selected_tools', []),
|
237
|
+
url=tool['settings']['url'],
|
238
|
+
password=tool['settings'].get('password', None),
|
239
|
+
email=tool['settings'].get('email', None),
|
240
|
+
toolkit_name=tool.get('toolkit_name')
|
241
|
+
).get_tools()
|
242
|
+
|
243
|
+
class MyToolkit(BaseToolkit):
|
244
|
+
|
245
|
+
|
246
|
+
tools: list[BaseTool] = []
|
247
|
+
|
248
|
+
|
249
|
+
@staticmethod
|
250
|
+
def toolkit_config_schema() -> BaseModel:
|
251
|
+
|
252
|
+
|
253
|
+
return create_model(
|
254
|
+
name,
|
255
|
+
url=(str, Field(title="Base URL", description="Base URL for the API")),
|
256
|
+
email=(str, Field(title="Email", description="Email for authentication", default=None)),
|
257
|
+
password=(str, Field(title="Password", description="Password for authentication", default=None)),
|
258
|
+
selected_tools=(list[str], Field(title="Selected Tools", description="List of tools to enable", default=[])),
|
259
|
+
)
|
260
|
+
|
261
|
+
|
262
|
+
@classmethod
|
263
|
+
def get_toolkit(cls, selected_tools=None, toolkit_name=None, **kwargs):
|
264
|
+
config = MyToolkitConfig(**kwargs)
|
265
|
+
|
266
|
+
|
267
|
+
available_tools = config.get_available_tools()
|
268
|
+
tools = []
|
269
|
+
for tool in available_tools:
|
270
|
+
if selected_tools and tool["name"] not in selected_tools:
|
271
|
+
continue
|
272
|
+
tools.append(BaseAction(
|
273
|
+
api_wrapper=config,
|
274
|
+
name=tool["name"],
|
275
|
+
description=tool["description"],
|
276
|
+
args_schema=tool["args_schema"]
|
277
|
+
))
|
278
|
+
return cls(tools=tools)
|
279
|
+
|
280
|
+
|
281
|
+
def get_tools(self) -> list[BaseTool]:
|
282
|
+
|
283
|
+
|
284
|
+
return self.tools
|
285
|
+
```
|
286
|
+
|
287
|
+
### 4. Add the Toolkit to the SDK
|
288
|
+
Update the `__init__.py` file in the `alita_sdk/tools/` directory to include your new toolkit:
|
289
|
+
|
290
|
+
```python
|
291
|
+
# alita_sdk/tools/__init__.py
|
292
|
+
|
293
|
+
def get_tools(tools_list, alita: 'AlitaClient', llm: 'LLMLikeObject', *args, **kwargs):
|
294
|
+
...
|
295
|
+
# add your toolkit here with proper type
|
296
|
+
elif tool['type'] == 'mytoolkittype':
|
297
|
+
tools.extend(get_mytoolkit(tool))
|
298
|
+
|
299
|
+
# add toolkit's config schema
|
300
|
+
def get_toolkits():
|
301
|
+
return [
|
302
|
+
...,
|
303
|
+
MyToolkit.toolkit_config_schema(),
|
304
|
+
]
|
305
|
+
```
|
306
|
+
|
307
|
+
### 5. Test Your Toolkit
|
308
|
+
To test your toolkit, you can use the Streamlit application (`alita_local.py`) to load and interact with your toolkit.
|
309
|
+
- Login to the platform
|
310
|
+
- Select `Toolkit testing` tab
|
311
|
+
- Choose your toolkit from the dropdown menu.
|
312
|
+
- Adjust the configuration parameters as needed, and then test the tools by sending queries to them.
|
313
|
+
|
314
|
+

|
@@ -7,8 +7,6 @@ from langchain_core.runnables import RunnableConfig
|
|
7
7
|
from langchain_core.tools import BaseTool
|
8
8
|
from typing import Any, Optional, Union, Annotated
|
9
9
|
from langchain_core.utils.function_calling import convert_to_openai_tool
|
10
|
-
from langgraph.prebuilt import InjectedStore
|
11
|
-
from langgraph.store.base import BaseStore
|
12
10
|
from pydantic import ValidationError
|
13
11
|
from ..langchain.utils import propagate_the_input_mapping
|
14
12
|
|
@@ -4,7 +4,7 @@ from traceback import format_exc
|
|
4
4
|
|
5
5
|
from langchain_core.callbacks import dispatch_custom_event
|
6
6
|
from langchain_core.runnables import RunnableConfig
|
7
|
-
from langchain_core.tools import BaseTool
|
7
|
+
from langchain_core.tools import BaseTool, ToolException
|
8
8
|
from typing import Any, Optional, Union
|
9
9
|
from langchain_core.messages import ToolCall
|
10
10
|
from langchain_core.utils.function_calling import convert_to_openai_tool
|
@@ -72,6 +72,8 @@ class IndexerNode(BaseTool):
|
|
72
72
|
logger.error(f"Chunking error: {format_exc()}")
|
73
73
|
return {"messages": [{"role": "assistant", "content": f"""Chunking tool {self.chunking_tool} raised an error.\n\nError: {format_exc()}"""}]}
|
74
74
|
index_results = self.index_tool.invoke({"documents": chunks if chunks else result}, config=config, kwargs=kwargs)
|
75
|
+
if isinstance(index_results, ToolException):
|
76
|
+
raise index_results
|
75
77
|
logger.info(f"IndexNode response: {index_results}")
|
76
78
|
total_time = round((time() - start_time), 2)
|
77
79
|
index_results['total_time'] = total_time
|
@@ -84,7 +86,7 @@ class IndexerNode(BaseTool):
|
|
84
86
|
return {
|
85
87
|
"messages": [{"role": "assistant", "content": f"""Tool input to the {self.tool.name} with value {result} raised ValidationError.
|
86
88
|
\n\nTool schema is {dumps(params)} \n\nand the input to LLM was
|
87
|
-
{func_args}"""}]}
|
89
|
+
{func_args}\n{e}"""}]}
|
88
90
|
|
89
91
|
def _run(self, *args, **kwargs):
|
90
92
|
return self.invoke(**kwargs)
|