agentkernel 0.3.2__tar.gz → 0.4.0__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.
- {agentkernel-0.3.2 → agentkernel-0.4.0}/PKG-INFO +34 -9
- {agentkernel-0.3.2 → agentkernel-0.4.0}/README.md +21 -7
- {agentkernel-0.3.2 → agentkernel-0.4.0}/pyproject.toml +19 -3
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/__init__.py +5 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/a2a/a2a.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/http.py +0 -6
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/cli/cli.py +5 -8
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/config.py +14 -1
- agentkernel-0.4.0/src/agentkernel/core/logger.py +99 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/dynamodb.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/in_memory.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/redis.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/session_cache.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/storage_manager.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/tools.py +1 -1
- agentkernel-0.4.0/src/agentkernel/core/util/error_util.py +77 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/handler.py +2 -2
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/akagentrunner.py +0 -9
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/aklambda.py +0 -6
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/akresponsehandler.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/azure/akfunction.py +7 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/common/response_store.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/adk/adk.py +16 -7
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/crewai/crewai.py +8 -4
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/langgraph/langgraph.py +31 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/openai/openai.py +4 -2
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/bedrock.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/openai.py +1 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/walledai.py +0 -22
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/gmail/README.md +16 -4
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/messenger/README.md +16 -4
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/slack/slack_chat.py +2 -1
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/telegram/README.md +16 -4
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/whatsapp/README.md +16 -4
- agentkernel-0.4.0/src/agentkernel/knowledgebase/__init__.py +1 -0
- agentkernel-0.4.0/src/agentkernel/knowledgebase/base.py +120 -0
- agentkernel-0.4.0/src/agentkernel/knowledgebase/chroma.py +124 -0
- agentkernel-0.4.0/src/agentkernel/knowledgebase/knowledgebuilder.py +190 -0
- agentkernel-0.4.0/src/agentkernel/knowledgebase/neo4j.py +156 -0
- agentkernel-0.4.0/src/agentkernel/knowledgebase/starburst.py +233 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-test/SKILL.md +12 -4
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-test/evals/evals.json +4 -2
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/adk.py +9 -4
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/crewai.py +9 -4
- agentkernel-0.4.0/src/agentkernel/trace/langfuse/langgraph.py +66 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/openai.py +9 -4
- agentkernel-0.3.2/src/agentkernel/trace/langfuse/langgraph.py +0 -60
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/adk.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/a2a/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/a2a/handler.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/handler.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/mcp/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/api/mcp/akmcp.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/auth/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/auth/handler.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/auth.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/aws.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/azure.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/cli/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/cli/ak.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/base.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/builder.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/hooks.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/model.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/module.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/factory.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/hooks.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/base.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/runtime.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/service.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/base.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/cosmosdb.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/dynamodb.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/in_memory.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/redis.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/session/serde.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/tool.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/util/config_yaml_util.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/util/key_value_cache.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/crewai.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/dynamodb.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/response_store/redis.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/core/sqs_handler.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/akauthorizer.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/core/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/core/default_endpoints.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/core/sqs_consumer.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/azure/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/common/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/common/chat_service.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/adk/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/crewai/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/langgraph/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/framework/openai/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/gmail.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/guardrail/guardrail.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/instagram.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/gmail/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/gmail/gmail_chat.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/instagram/README.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/instagram/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/instagram/instagram_chat.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/messenger/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/messenger/messenger_chat.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/slack/README.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/slack/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/teams/README.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/teams/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/teams/teams_chat.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/telegram/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/telegram/telegram_chat.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/whatsapp/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/integration/whatsapp/whatsapp_chat.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/langgraph.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/mcp.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/messenger.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/openai.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-capabilities/SKILL.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-capabilities/evals/evals.json +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-integration/SKILL.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-add-integration/evals/evals.json +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-build/SKILL.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-build/evals/evals.json +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-cloud-deploy/SKILL.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-cloud-deploy/evals/evals.json +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-init/SKILL.md +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/ak-init/evals/evals.json +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/skills/skills.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/slack.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/teams.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/telegram.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/test/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/test/test.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/base.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/langfuse/langfuse.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/__init__.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/adk.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/crewai.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/langgraph.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/openai.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/openllmetry/openllmetry.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/trace/trace.py +0 -0
- {agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/whatsapp.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: agentkernel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Agent Kernel - Unified AI Agents Runtime
|
|
5
5
|
Author: Yaala Labs
|
|
6
6
|
Author-email: Yaala Labs <agentkernel@yaalalabs.com>
|
|
@@ -22,6 +22,7 @@ Requires-Dist: boto3>=1.41.4 ; extra == 'aws'
|
|
|
22
22
|
Requires-Dist: azure-functions>=1.24.0 ; extra == 'azure'
|
|
23
23
|
Requires-Dist: azure-data-tables>=12.4.0 ; extra == 'azure'
|
|
24
24
|
Requires-Dist: azure-core>=1.26.0 ; extra == 'azure'
|
|
25
|
+
Requires-Dist: chromadb>=0.4.0 ; extra == 'chromadb'
|
|
25
26
|
Requires-Dist: crewai>=0.150.0 ; extra == 'crewai'
|
|
26
27
|
Requires-Dist: openinference-instrumentation-crewai>=0.1.16 ; extra == 'crewai'
|
|
27
28
|
Requires-Dist: openinference-instrumentation-litellm>=0.1.28 ; extra == 'crewai'
|
|
@@ -30,7 +31,7 @@ Requires-Dist: google-auth-oauthlib>=1.0.0 ; extra == 'gmail'
|
|
|
30
31
|
Requires-Dist: google-auth-httplib2>=0.2.0 ; extra == 'gmail'
|
|
31
32
|
Requires-Dist: google-api-python-client>=2.0.0 ; extra == 'gmail'
|
|
32
33
|
Requires-Dist: httpx>=0.27.0 ; extra == 'instagram'
|
|
33
|
-
Requires-Dist: langfuse>=
|
|
34
|
+
Requires-Dist: langfuse>=4.2.0 ; extra == 'langfuse'
|
|
34
35
|
Requires-Dist: nest-asyncio>=1.6.0 ; extra == 'langfuse'
|
|
35
36
|
Requires-Dist: langgraph~=1.0.5 ; extra == 'langgraph'
|
|
36
37
|
Requires-Dist: langchain~=1.2.3 ; extra == 'langgraph'
|
|
@@ -39,6 +40,7 @@ Requires-Dist: litellm~=1.74.9 ; extra == 'langgraph'
|
|
|
39
40
|
Requires-Dist: fastmcp>=2.12.4 ; extra == 'mcp'
|
|
40
41
|
Requires-Dist: httpx>=0.27.0 ; extra == 'messenger'
|
|
41
42
|
Requires-Dist: litellm>=1.74.9 ; extra == 'multimodal'
|
|
43
|
+
Requires-Dist: neo4j>=5.0.0 ; extra == 'neo4j'
|
|
42
44
|
Requires-Dist: openai-agents>=0.6.5 ; extra == 'openai'
|
|
43
45
|
Requires-Dist: openinference-instrumentation-openai-agents>=1.4.0 ; extra == 'openai'
|
|
44
46
|
Requires-Dist: openai-guardrails>=0.2.1 ; extra == 'openai'
|
|
@@ -46,6 +48,10 @@ Requires-Dist: traceloop-sdk>=0.48.0 ; extra == 'openllmetry'
|
|
|
46
48
|
Requires-Dist: redis>=7.1.0 ; extra == 'redis'
|
|
47
49
|
Requires-Dist: slack-bolt==1.22.0 ; extra == 'slack'
|
|
48
50
|
Requires-Dist: httpx>=0.27.0 ; extra == 'slack'
|
|
51
|
+
Requires-Dist: botbuilder-core>=4.17.0 ; extra == 'teams'
|
|
52
|
+
Requires-Dist: botbuilder-schema>=4.17.0 ; extra == 'teams'
|
|
53
|
+
Requires-Dist: msal>=1.31.1 ; extra == 'teams'
|
|
54
|
+
Requires-Dist: httpx>=0.27.0 ; extra == 'teams'
|
|
49
55
|
Requires-Dist: httpx>=0.27.0 ; extra == 'telegram'
|
|
50
56
|
Requires-Dist: pytest>=8.4.1 ; extra == 'test'
|
|
51
57
|
Requires-Dist: pytest-asyncio>=1.2.0 ; extra == 'test'
|
|
@@ -57,6 +63,7 @@ Requires-Dist: ragas>=0.4.1 ; extra == 'test'
|
|
|
57
63
|
Requires-Dist: datasets>=2.14.0 ; extra == 'test'
|
|
58
64
|
Requires-Dist: pandas>=2.0.0 ; extra == 'test'
|
|
59
65
|
Requires-Dist: litellm>=1.74.9 ; extra == 'test'
|
|
66
|
+
Requires-Dist: trino>=0.337.0 ; extra == 'trino'
|
|
60
67
|
Requires-Dist: walledai>=4.9.3 ; extra == 'walledai'
|
|
61
68
|
Requires-Dist: httpx>=0.27.0 ; extra == 'whatsapp'
|
|
62
69
|
Requires-Python: >=3.12, <3.14
|
|
@@ -66,6 +73,7 @@ Provides-Extra: api
|
|
|
66
73
|
Provides-Extra: auth
|
|
67
74
|
Provides-Extra: aws
|
|
68
75
|
Provides-Extra: azure
|
|
76
|
+
Provides-Extra: chromadb
|
|
69
77
|
Provides-Extra: cli
|
|
70
78
|
Provides-Extra: crewai
|
|
71
79
|
Provides-Extra: gmail
|
|
@@ -75,12 +83,15 @@ Provides-Extra: langgraph
|
|
|
75
83
|
Provides-Extra: mcp
|
|
76
84
|
Provides-Extra: messenger
|
|
77
85
|
Provides-Extra: multimodal
|
|
86
|
+
Provides-Extra: neo4j
|
|
78
87
|
Provides-Extra: openai
|
|
79
88
|
Provides-Extra: openllmetry
|
|
80
89
|
Provides-Extra: redis
|
|
81
90
|
Provides-Extra: slack
|
|
91
|
+
Provides-Extra: teams
|
|
82
92
|
Provides-Extra: telegram
|
|
83
93
|
Provides-Extra: test
|
|
94
|
+
Provides-Extra: trino
|
|
84
95
|
Provides-Extra: walledai
|
|
85
96
|
Provides-Extra: whatsapp
|
|
86
97
|
Description-Content-Type: text/markdown
|
|
@@ -100,6 +111,7 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
|
|
|
100
111
|
- **Multi-Framework Support**: OpenAI Agents SDK, CrewAI, LangGraph, Google ADK
|
|
101
112
|
- **Multi-Cloud Deployment**: Deploy to AWS (Lambda, ECS/Fargate) or Azure (Functions, Container Apps) with the same code
|
|
102
113
|
- **Session Management**: Built-in session abstraction with multi-cloud storage (Redis, DynamoDB, Cosmos DB)
|
|
114
|
+
- **Knowledge Bases**: Unified `KnowledgeBase` interface with ChromaDB, Neo4j, and Starburst/Trino backends via `KnowledgeBuilder`
|
|
103
115
|
- **Flexible Deployment**: Interactive CLI, REST API, serverless (AWS Lambda, Azure Functions), containerized (AWS ECS, Azure Container Apps)
|
|
104
116
|
- **Pluggable Architecture**: Easy to extend with custom framework adapters and cloud providers
|
|
105
117
|
- **MCP Server**: Built-in Model Context Protocol server for exposing agents as MCP tools and exposing any custom tool
|
|
@@ -113,6 +125,14 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
|
|
|
113
125
|
pip install agentkernel
|
|
114
126
|
```
|
|
115
127
|
|
|
128
|
+
Install optional knowledge base extras as needed:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
pip install "agentkernel[chromadb]"
|
|
132
|
+
pip install "agentkernel[neo4j]"
|
|
133
|
+
pip install "agentkernel[trino]"
|
|
134
|
+
```
|
|
135
|
+
|
|
116
136
|
**Requirements:**
|
|
117
137
|
- Python 3.12+
|
|
118
138
|
|
|
@@ -364,13 +384,19 @@ Supported formats: `.yaml`, `.yml`, `.json`
|
|
|
364
384
|
|
|
365
385
|
### Configuration Options
|
|
366
386
|
|
|
367
|
-
####
|
|
387
|
+
#### Logging Configuration
|
|
368
388
|
|
|
369
|
-
- **Field**: `
|
|
370
|
-
- **Type**:
|
|
371
|
-
- **Default**: `
|
|
372
|
-
- **Description**:
|
|
373
|
-
- **Environment Variable**: `
|
|
389
|
+
- **Field**: `logging.ak.level`
|
|
390
|
+
- **Type**: string
|
|
391
|
+
- **Default**: `WARNING`
|
|
392
|
+
- **Description**: Agent Kernel logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
|
|
393
|
+
- **Environment Variable**: `AK_LOGGING__AK__LEVEL`
|
|
394
|
+
|
|
395
|
+
- **Field**: `logging.system.level`
|
|
396
|
+
- **Type**: string
|
|
397
|
+
- **Default**: `WARNING`
|
|
398
|
+
- **Description**: System/root logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
|
|
399
|
+
- **Environment Variable**: `AK_LOGGING__SYSTEM__LEVEL`
|
|
374
400
|
|
|
375
401
|
#### Session Store
|
|
376
402
|
|
|
@@ -956,7 +982,6 @@ AK_TRACE__TYPE=langfuse # or openllmetry
|
|
|
956
982
|
#### config.yaml
|
|
957
983
|
|
|
958
984
|
```yaml
|
|
959
|
-
debug: false
|
|
960
985
|
session:
|
|
961
986
|
type: redis
|
|
962
987
|
redis:
|
|
@@ -13,6 +13,7 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
|
|
|
13
13
|
- **Multi-Framework Support**: OpenAI Agents SDK, CrewAI, LangGraph, Google ADK
|
|
14
14
|
- **Multi-Cloud Deployment**: Deploy to AWS (Lambda, ECS/Fargate) or Azure (Functions, Container Apps) with the same code
|
|
15
15
|
- **Session Management**: Built-in session abstraction with multi-cloud storage (Redis, DynamoDB, Cosmos DB)
|
|
16
|
+
- **Knowledge Bases**: Unified `KnowledgeBase` interface with ChromaDB, Neo4j, and Starburst/Trino backends via `KnowledgeBuilder`
|
|
16
17
|
- **Flexible Deployment**: Interactive CLI, REST API, serverless (AWS Lambda, Azure Functions), containerized (AWS ECS, Azure Container Apps)
|
|
17
18
|
- **Pluggable Architecture**: Easy to extend with custom framework adapters and cloud providers
|
|
18
19
|
- **MCP Server**: Built-in Model Context Protocol server for exposing agents as MCP tools and exposing any custom tool
|
|
@@ -26,6 +27,14 @@ Agent Kernel is a lightweight **multi-cloud AI agent runtime** and adapter layer
|
|
|
26
27
|
pip install agentkernel
|
|
27
28
|
```
|
|
28
29
|
|
|
30
|
+
Install optional knowledge base extras as needed:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
pip install "agentkernel[chromadb]"
|
|
34
|
+
pip install "agentkernel[neo4j]"
|
|
35
|
+
pip install "agentkernel[trino]"
|
|
36
|
+
```
|
|
37
|
+
|
|
29
38
|
**Requirements:**
|
|
30
39
|
- Python 3.12+
|
|
31
40
|
|
|
@@ -277,13 +286,19 @@ Supported formats: `.yaml`, `.yml`, `.json`
|
|
|
277
286
|
|
|
278
287
|
### Configuration Options
|
|
279
288
|
|
|
280
|
-
####
|
|
289
|
+
#### Logging Configuration
|
|
281
290
|
|
|
282
|
-
- **Field**: `
|
|
283
|
-
- **Type**:
|
|
284
|
-
- **Default**: `
|
|
285
|
-
- **Description**:
|
|
286
|
-
- **Environment Variable**: `
|
|
291
|
+
- **Field**: `logging.ak.level`
|
|
292
|
+
- **Type**: string
|
|
293
|
+
- **Default**: `WARNING`
|
|
294
|
+
- **Description**: Agent Kernel logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
|
|
295
|
+
- **Environment Variable**: `AK_LOGGING__AK__LEVEL`
|
|
296
|
+
|
|
297
|
+
- **Field**: `logging.system.level`
|
|
298
|
+
- **Type**: string
|
|
299
|
+
- **Default**: `WARNING`
|
|
300
|
+
- **Description**: System/root logger level (INFO, DEBUG, ERROR, WARNING, CRITICAL)
|
|
301
|
+
- **Environment Variable**: `AK_LOGGING__SYSTEM__LEVEL`
|
|
287
302
|
|
|
288
303
|
#### Session Store
|
|
289
304
|
|
|
@@ -869,7 +884,6 @@ AK_TRACE__TYPE=langfuse # or openllmetry
|
|
|
869
884
|
#### config.yaml
|
|
870
885
|
|
|
871
886
|
```yaml
|
|
872
|
-
debug: false
|
|
873
887
|
session:
|
|
874
888
|
type: redis
|
|
875
889
|
redis:
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "agentkernel"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.4.0"
|
|
8
8
|
description = "Agent Kernel - Unified AI Agents Runtime"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12,<3.14"
|
|
@@ -25,7 +25,7 @@ auth = [
|
|
|
25
25
|
"PyJWT>=2.0.0",
|
|
26
26
|
]
|
|
27
27
|
langfuse = [
|
|
28
|
-
"langfuse>=
|
|
28
|
+
"langfuse>=4.2.0",
|
|
29
29
|
"nest-asyncio>=1.6.0",
|
|
30
30
|
]
|
|
31
31
|
openllmetry = [
|
|
@@ -57,6 +57,17 @@ azure = [
|
|
|
57
57
|
redis = [
|
|
58
58
|
"redis>=7.1.0",
|
|
59
59
|
]
|
|
60
|
+
|
|
61
|
+
neo4j = [
|
|
62
|
+
"neo4j>=5.0.0",
|
|
63
|
+
]
|
|
64
|
+
chromadb = [
|
|
65
|
+
"chromadb>=0.4.0",
|
|
66
|
+
]
|
|
67
|
+
trino = [
|
|
68
|
+
"trino>=0.337.0",
|
|
69
|
+
]
|
|
70
|
+
|
|
60
71
|
openai = [
|
|
61
72
|
"openai-agents>=0.6.5",
|
|
62
73
|
"openinference-instrumentation-openai-agents>=1.4.0",
|
|
@@ -91,6 +102,12 @@ instagram = [
|
|
|
91
102
|
telegram = [
|
|
92
103
|
"httpx>=0.27.0"
|
|
93
104
|
]
|
|
105
|
+
teams = [
|
|
106
|
+
"botbuilder-core>=4.17.0",
|
|
107
|
+
"botbuilder-schema>=4.17.0",
|
|
108
|
+
"msal>=1.31.1",
|
|
109
|
+
"httpx>=0.27.0",
|
|
110
|
+
]
|
|
94
111
|
gmail = [
|
|
95
112
|
"google-auth>=2.0.0",
|
|
96
113
|
"google-auth-oauthlib>=1.0.0",
|
|
@@ -150,4 +167,3 @@ target-version = ["py312"]
|
|
|
150
167
|
|
|
151
168
|
[tool.pytest.ini_options]
|
|
152
169
|
addopts = "--cov=src --cov-report=term --cov-report=html --html=report.html"
|
|
153
|
-
|
|
@@ -19,3 +19,8 @@ except importlib.metadata.PackageNotFoundError:
|
|
|
19
19
|
__version__ = "0.1.0"
|
|
20
20
|
|
|
21
21
|
from .core import *
|
|
22
|
+
|
|
23
|
+
# Auto-configure logging on import if not already configured (handled inside the "configure_from_config()" function)
|
|
24
|
+
from .core.logger import AKLogger
|
|
25
|
+
|
|
26
|
+
AKLogger.configure_from_config()
|
|
@@ -9,12 +9,6 @@ from ..auth import AuthValidator, ValidationContext
|
|
|
9
9
|
from ..core.config import AKConfig
|
|
10
10
|
from .handler import AgentRESTRequestHandler, RESTRequestHandler
|
|
11
11
|
|
|
12
|
-
logging.basicConfig(
|
|
13
|
-
level=logging.DEBUG,
|
|
14
|
-
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
|
|
15
|
-
force=True,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
12
|
|
|
19
13
|
class RESTAPI:
|
|
20
14
|
"""
|
|
@@ -3,17 +3,14 @@ import logging
|
|
|
3
3
|
import readline # Enables line editing and history features for input() in the CLI
|
|
4
4
|
|
|
5
5
|
from ..core import AgentService
|
|
6
|
+
from ..core.config import AKConfig
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
ak_logger = logging.getLogger("ak")
|
|
9
|
-
ak_logger.setLevel(logging.INFO)
|
|
10
|
-
ak_logger.propagate = False
|
|
8
|
+
ak_cli_logger = logging.getLogger("ak.cli")
|
|
11
9
|
|
|
12
|
-
if not
|
|
10
|
+
if not ak_cli_logger.handlers:
|
|
13
11
|
handler = logging.StreamHandler()
|
|
14
|
-
handler.setLevel(logging.INFO)
|
|
15
12
|
handler.setFormatter(logging.Formatter("\033[36m(kernel) >> %(message)s\033[0m"))
|
|
16
|
-
|
|
13
|
+
ak_cli_logger.addHandler(handler)
|
|
17
14
|
|
|
18
15
|
|
|
19
16
|
class CLI:
|
|
@@ -101,7 +98,7 @@ class CLI:
|
|
|
101
98
|
raise
|
|
102
99
|
except Exception as e:
|
|
103
100
|
self._print(f"Error: {e}")
|
|
104
|
-
|
|
101
|
+
ak_cli_logger.error("Exception in CLI run loop", exc_info=True)
|
|
105
102
|
|
|
106
103
|
@classmethod
|
|
107
104
|
def main(cls):
|
|
@@ -238,6 +238,19 @@ class _QueuesConfig(BaseModel):
|
|
|
238
238
|
output: _OutputQueueConfig = Field(default_factory=_OutputQueueConfig, description="Output SQS queue configuration for async execution mode")
|
|
239
239
|
|
|
240
240
|
|
|
241
|
+
class _LogLevelConfig(BaseModel):
|
|
242
|
+
level: Optional[str] = Field(
|
|
243
|
+
default=None,
|
|
244
|
+
pattern="^(INFO|DEBUG|ERROR|WARNING|CRITICAL)$",
|
|
245
|
+
description="Log level. Options: INFO, DEBUG, ERROR, WARNING, CRITICAL",
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
class _LoggingConfig(BaseModel):
|
|
250
|
+
ak: _LogLevelConfig = Field(description="Agent Kernel logging configuration", default_factory=_LogLevelConfig)
|
|
251
|
+
system: _LogLevelConfig = Field(description="System logging configuration", default_factory=_LogLevelConfig)
|
|
252
|
+
|
|
253
|
+
|
|
241
254
|
class _ExecutionConfig(BaseModel):
|
|
242
255
|
mode: Optional[ExecutionMode] = Field(
|
|
243
256
|
default=None,
|
|
@@ -252,7 +265,6 @@ class _ExecutionConfig(BaseModel):
|
|
|
252
265
|
|
|
253
266
|
|
|
254
267
|
class AKConfig(YamlBaseSettingsModified):
|
|
255
|
-
debug: bool = Field(default=False, description="Enable debug mode")
|
|
256
268
|
session: _SessionStoreConfig = Field(
|
|
257
269
|
description="Agent session / memory related configurations",
|
|
258
270
|
default_factory=_SessionStoreConfig,
|
|
@@ -275,6 +287,7 @@ class AKConfig(YamlBaseSettingsModified):
|
|
|
275
287
|
test: _TestConfig = Field(description="Test related configurations", default_factory=_TestConfig)
|
|
276
288
|
guardrail: _GuardrailConfig = Field(description="Guardrail related configurations", default_factory=_GuardrailConfig)
|
|
277
289
|
execution: _ExecutionConfig = Field(description="Execution mode and queue related configurations", default_factory=_ExecutionConfig)
|
|
290
|
+
logging: _LoggingConfig = Field(description="Logging related configurations", default_factory=_LoggingConfig)
|
|
278
291
|
library_version: str = Field(default=_get_ak_version(), description="Library version")
|
|
279
292
|
|
|
280
293
|
@classmethod
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from .config import AKConfig
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class AKLogger:
|
|
7
|
+
"""Agent Kernel logger configuration utility."""
|
|
8
|
+
|
|
9
|
+
_initialized = False
|
|
10
|
+
|
|
11
|
+
@staticmethod
|
|
12
|
+
def resolve_level(level: str | int) -> int:
|
|
13
|
+
"""Resolve log level from string or int.
|
|
14
|
+
|
|
15
|
+
:param level: Log level as string or int.
|
|
16
|
+
:return: Resolved log level as int.
|
|
17
|
+
"""
|
|
18
|
+
if isinstance(level, int):
|
|
19
|
+
return level
|
|
20
|
+
|
|
21
|
+
level_name = str(level).upper()
|
|
22
|
+
|
|
23
|
+
get_mapping = getattr(logging, "getLevelNamesMapping", None)
|
|
24
|
+
if callable(get_mapping):
|
|
25
|
+
return get_mapping().get(level_name, logging.WARNING)
|
|
26
|
+
|
|
27
|
+
return logging.WARNING
|
|
28
|
+
|
|
29
|
+
@staticmethod
|
|
30
|
+
def attach_stream_handler(logger: logging.Logger, attach_formatter=False) -> None:
|
|
31
|
+
"""Attach a stream handler to the logger.
|
|
32
|
+
|
|
33
|
+
:param logger: Logger instance to attach handler to.
|
|
34
|
+
:param attach_formatter: Whether to attach a default formatter.
|
|
35
|
+
:return: None.
|
|
36
|
+
"""
|
|
37
|
+
for handler in logger.handlers[:]:
|
|
38
|
+
logger.removeHandler(handler)
|
|
39
|
+
handler.close()
|
|
40
|
+
handler = logging.StreamHandler()
|
|
41
|
+
if attach_formatter:
|
|
42
|
+
handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s"))
|
|
43
|
+
logger.addHandler(handler)
|
|
44
|
+
|
|
45
|
+
@staticmethod
|
|
46
|
+
def set_handlers_level(logger: logging.Logger, level: int) -> None:
|
|
47
|
+
"""Set the level for all handlers on a logger.
|
|
48
|
+
|
|
49
|
+
:param logger: Logger instance to set handler levels for.
|
|
50
|
+
:param level: Log level to set.
|
|
51
|
+
:return: None.
|
|
52
|
+
"""
|
|
53
|
+
for handler in logger.handlers:
|
|
54
|
+
handler.setLevel(level)
|
|
55
|
+
|
|
56
|
+
@staticmethod
|
|
57
|
+
def set_ak_log_level(level: str):
|
|
58
|
+
"""Set the log level for the AK logger.
|
|
59
|
+
|
|
60
|
+
:param level: Log level as string.
|
|
61
|
+
:return: None.
|
|
62
|
+
"""
|
|
63
|
+
resolved_level = AKLogger.resolve_level(level)
|
|
64
|
+
ak_logger = logging.getLogger("ak")
|
|
65
|
+
ak_logger.setLevel(resolved_level)
|
|
66
|
+
ak_logger.propagate = False # stopping the propagation here so that it won't propagate to the root, so loggers like "ak.api" with propagate=True (propagate is True by default, which is the case here) won't propagate to the root, propagation will stop at this level ("ak" level)
|
|
67
|
+
AKLogger.attach_stream_handler(logger=ak_logger, attach_formatter=True)
|
|
68
|
+
AKLogger.set_handlers_level(logger=ak_logger, level=resolved_level)
|
|
69
|
+
|
|
70
|
+
@staticmethod
|
|
71
|
+
def set_system_log_level(level: str):
|
|
72
|
+
"""Set the log level for the system root logger.
|
|
73
|
+
|
|
74
|
+
:param level: Log level as string.
|
|
75
|
+
:return: None.
|
|
76
|
+
"""
|
|
77
|
+
resolved_level = AKLogger.resolve_level(level)
|
|
78
|
+
root_logger = logging.getLogger()
|
|
79
|
+
root_logger.setLevel(resolved_level)
|
|
80
|
+
root_logger.propagate = False # the root logger has nowhere to propagate to because it is the root
|
|
81
|
+
AKLogger.attach_stream_handler(logger=root_logger, attach_formatter=True)
|
|
82
|
+
AKLogger.set_handlers_level(logger=root_logger, level=resolved_level)
|
|
83
|
+
|
|
84
|
+
@classmethod
|
|
85
|
+
def configure_from_config(cls):
|
|
86
|
+
"""Configure loggers from AKConfig settings.
|
|
87
|
+
|
|
88
|
+
:return: None.
|
|
89
|
+
"""
|
|
90
|
+
if cls._initialized:
|
|
91
|
+
return
|
|
92
|
+
config = AKConfig.get()
|
|
93
|
+
ak_level = config.logging.ak.level
|
|
94
|
+
system_level = config.logging.system.level
|
|
95
|
+
if system_level:
|
|
96
|
+
cls.set_system_log_level(system_level)
|
|
97
|
+
if ak_level:
|
|
98
|
+
cls.set_ak_log_level(ak_level)
|
|
99
|
+
cls._initialized = True
|
|
@@ -24,7 +24,7 @@ class DynamoDBAttachmentDriver:
|
|
|
24
24
|
raw DynamoDB attachment operations.
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
|
-
_log = logging.getLogger("ak.
|
|
27
|
+
_log = logging.getLogger("ak.multimodal.storage.dynamodb.driver")
|
|
28
28
|
|
|
29
29
|
def __init__(self, table_name: str, ttl: int):
|
|
30
30
|
"""
|
{agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/in_memory.py
RENAMED
|
@@ -16,7 +16,7 @@ class InMemoryAttachmentStore(AttachmentStore):
|
|
|
16
16
|
# Shared across all instances — survives across multiple instantiations per request
|
|
17
17
|
_attachments: ClassVar[dict[str, dict]] = {} # "session_id:attachment_id" -> attachment
|
|
18
18
|
_index: ClassVar[dict[str, list[str]]] = {} # session_id -> [attachment_ids]
|
|
19
|
-
_log = logging.getLogger("ak.
|
|
19
|
+
_log = logging.getLogger("ak.multimodal.storage.inmemory")
|
|
20
20
|
|
|
21
21
|
def __init__(self, session_id: str):
|
|
22
22
|
"""
|
|
@@ -19,7 +19,7 @@ class RedisAttachmentDriver:
|
|
|
19
19
|
raw Redis attachment operations.
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
_log = logging.getLogger("ak.
|
|
22
|
+
_log = logging.getLogger("ak.multimodal.storage.redis.driver")
|
|
23
23
|
_redis_client = None
|
|
24
24
|
|
|
25
25
|
def __init__(self, url: str, ttl: int, prefix: str):
|
{agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/core/multimodal/storage/session_cache.py
RENAMED
|
@@ -23,7 +23,7 @@ class SessionNonVolatileCacheAttachmentStore(AttachmentStore):
|
|
|
23
23
|
simple but causes session size to grow with each attachment.
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
|
-
_log = logging.getLogger("ak.
|
|
26
|
+
_log = logging.getLogger("ak.multimodal.storage.session_cache")
|
|
27
27
|
|
|
28
28
|
def __init__(self, session_id: str):
|
|
29
29
|
"""
|
|
@@ -11,7 +11,7 @@ from ..model import SystemTool
|
|
|
11
11
|
from ..tool import ToolContext
|
|
12
12
|
from .storage import AttachmentStorageManager
|
|
13
13
|
|
|
14
|
-
_log = logging.getLogger(
|
|
14
|
+
_log = logging.getLogger("ak.multimodal.tools")
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def _analyze_attachments(attachment_ids: list[str], prompt: str) -> str:
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
class ErrorCategory:
|
|
2
|
+
RATE_LIMIT = "rate_limit"
|
|
3
|
+
SERVER = "server"
|
|
4
|
+
CONNECTION = "connection"
|
|
5
|
+
AUTH = "auth"
|
|
6
|
+
NOT_FOUND = "not_found"
|
|
7
|
+
UNKNOWN = "unknown"
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ErrorUtil:
|
|
11
|
+
@staticmethod
|
|
12
|
+
def _get_status_code(error: Exception) -> int | None:
|
|
13
|
+
"""Extracts HTTP status code from error attributes if they exist."""
|
|
14
|
+
for attr in ["status_code", "code", "status"]:
|
|
15
|
+
val = getattr(error, attr, None)
|
|
16
|
+
if isinstance(val, int):
|
|
17
|
+
return val
|
|
18
|
+
if isinstance(val, str) and val.isdigit():
|
|
19
|
+
return int(val)
|
|
20
|
+
return None
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def _classify(error: Exception, status_code: int | None) -> str:
|
|
24
|
+
"""Categorizes the error based on code, name, or message content."""
|
|
25
|
+
error_name = error.__class__.__name__.lower()
|
|
26
|
+
message = str(error).lower()
|
|
27
|
+
|
|
28
|
+
if status_code == 429:
|
|
29
|
+
return ErrorCategory.RATE_LIMIT
|
|
30
|
+
|
|
31
|
+
if status_code in [500, 502, 503, 504]:
|
|
32
|
+
return ErrorCategory.SERVER
|
|
33
|
+
|
|
34
|
+
if "timeout" in error_name or "connection" in error_name:
|
|
35
|
+
return ErrorCategory.CONNECTION
|
|
36
|
+
|
|
37
|
+
if "auth" in error_name or "unauthorized" in error_name:
|
|
38
|
+
return ErrorCategory.AUTH
|
|
39
|
+
|
|
40
|
+
if any(k in error_name for k in ["notfound", "invalid", "badrequest"]):
|
|
41
|
+
return ErrorCategory.NOT_FOUND
|
|
42
|
+
|
|
43
|
+
if any(t in message for t in ["overloaded", "temporarily unavailable", "high demand"]):
|
|
44
|
+
return ErrorCategory.SERVER
|
|
45
|
+
|
|
46
|
+
return ErrorCategory.UNKNOWN
|
|
47
|
+
|
|
48
|
+
@staticmethod
|
|
49
|
+
def _format_error_message(error: Exception) -> str:
|
|
50
|
+
"""Returns a clean string for the UI based on the error category."""
|
|
51
|
+
status_code = ErrorUtil._get_status_code(error)
|
|
52
|
+
category = ErrorUtil._classify(error, status_code)
|
|
53
|
+
|
|
54
|
+
if category == ErrorCategory.RATE_LIMIT:
|
|
55
|
+
return "Error: Too many requests. Please try again later."
|
|
56
|
+
|
|
57
|
+
if category == ErrorCategory.SERVER:
|
|
58
|
+
return "Error: The service is temporarily unavailable. Please try again."
|
|
59
|
+
|
|
60
|
+
if category == ErrorCategory.CONNECTION:
|
|
61
|
+
return "Error: Could not connect to the model provider. Please check your internet."
|
|
62
|
+
|
|
63
|
+
if category == ErrorCategory.AUTH:
|
|
64
|
+
return "Error: Invalid API configuration or credentials."
|
|
65
|
+
|
|
66
|
+
if category == ErrorCategory.NOT_FOUND:
|
|
67
|
+
return "Error: Invalid model or resource not found. Please check your configuration."
|
|
68
|
+
|
|
69
|
+
message = " ".join(str(error).split()).strip()
|
|
70
|
+
if message:
|
|
71
|
+
return f"Error: {message}"
|
|
72
|
+
|
|
73
|
+
return f"An unexpected error occurred: {error.__class__.__name__}"
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def user_facing_error_message(error: Exception) -> str:
|
|
77
|
+
return ErrorUtil._format_error_message(error)
|
|
@@ -53,7 +53,7 @@ class ResponseDBHandler:
|
|
|
53
53
|
response_store_type: ResponseDBHandler.Type = ResponseDBHandler.Type.from_str(response_store_config.type)
|
|
54
54
|
|
|
55
55
|
# Check for Redis configuration
|
|
56
|
-
if response_store_type == ResponseDBHandler.Type.REDIS:
|
|
56
|
+
if response_store_type == ResponseDBHandler.Type.REDIS and response_store_config.redis is not None:
|
|
57
57
|
from .redis import RedisResponseStore
|
|
58
58
|
|
|
59
59
|
redis_config = response_store_config.redis
|
|
@@ -65,7 +65,7 @@ class ResponseDBHandler:
|
|
|
65
65
|
)
|
|
66
66
|
|
|
67
67
|
# Check for DynamoDB configuration
|
|
68
|
-
elif response_store_type == ResponseDBHandler.Type.DYNAMODB:
|
|
68
|
+
elif response_store_type == ResponseDBHandler.Type.DYNAMODB and response_store_config.dynamodb is not None:
|
|
69
69
|
from .dynamodb import DynamoDBResponseStore
|
|
70
70
|
|
|
71
71
|
dynamodb_config = response_store_config.dynamodb
|
{agentkernel-0.3.2 → agentkernel-0.4.0}/src/agentkernel/deployment/aws/serverless/akagentrunner.py
RENAMED
|
@@ -87,15 +87,6 @@ class ServerlessAgentRunner(LambdaSQSConsumer):
|
|
|
87
87
|
"""
|
|
88
88
|
cls._log.info(f"Processing message: {record}")
|
|
89
89
|
body = cls._parse_body(record)
|
|
90
|
-
session_id = body.get("session_id")
|
|
91
|
-
message_group_id = SQSHandler.get_message_system_attributes(record).get("MessageGroupId")
|
|
92
|
-
if session_id != message_group_id:
|
|
93
|
-
cls._log.info(f"Session ID mismatch: message body session_id {session_id} does not match MessageGroupId {message_group_id}")
|
|
94
|
-
error_message_body = cls._construct_error_message_body(error_msg="Session ID mismatch")
|
|
95
|
-
record_attributes = cls._get_record_attributes(raw_queue_message=record)
|
|
96
|
-
cls._send_to_output_queue(message_body=error_message_body, record_attributes=record_attributes)
|
|
97
|
-
cls._log.info(f"Sent Session ID Mismatch message to Output Queue: '{SQSHandler.get_output_queue_url()}'")
|
|
98
|
-
return
|
|
99
90
|
_, agent_response = cls._get_chat_service().process_chat_request(body=body)
|
|
100
91
|
cls._log.info(f"Chat service response: '{agent_response}'")
|
|
101
92
|
record_attributes = cls._get_record_attributes(raw_queue_message=record)
|
|
@@ -32,10 +32,10 @@ class ResponseHandler(LambdaSQSConsumer):
|
|
|
32
32
|
:param body: Optional message body payload. If not provided, uses record["body"]
|
|
33
33
|
:return: Message dictionary for storage
|
|
34
34
|
"""
|
|
35
|
-
session_id = SQSHandler.get_message_system_attributes(record).get("MessageGroupId")
|
|
36
35
|
message_body = body if body is not None else record.get("body")
|
|
37
36
|
if isinstance(message_body, str):
|
|
38
37
|
message_body = json.loads(message_body)
|
|
38
|
+
session_id = message_body.get("session_id")
|
|
39
39
|
|
|
40
40
|
message_attributes = SQSHandler.get_message_custom_attributes(record)
|
|
41
41
|
request_id = message_attributes.get("request_id")
|
|
@@ -15,7 +15,13 @@ class AzureFunctions:
|
|
|
15
15
|
|
|
16
16
|
_log = logging.getLogger("ak.azure.functions")
|
|
17
17
|
_log.setLevel(logging.DEBUG)
|
|
18
|
-
_chat_service =
|
|
18
|
+
_chat_service = None
|
|
19
|
+
|
|
20
|
+
@classmethod
|
|
21
|
+
def _get_chat_service(cls) -> ChatService:
|
|
22
|
+
if cls._chat_service is None:
|
|
23
|
+
cls._chat_service = ChatService()
|
|
24
|
+
return cls._chat_service
|
|
19
25
|
|
|
20
26
|
@classmethod
|
|
21
27
|
def handler(cls, req: func.HttpRequest) -> func.HttpResponse:
|
|
@@ -10,7 +10,7 @@ class ResponseStore(ABC):
|
|
|
10
10
|
Abstract base class for response message storage systems.
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
_log = __import__("logging").getLogger(
|
|
13
|
+
_log = __import__("logging").getLogger("ak.deployment.response_store")
|
|
14
14
|
|
|
15
15
|
@abstractmethod
|
|
16
16
|
def add_message(self, message: Dict) -> None:
|