Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .flake8
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[flake8]
max-line-length = 88
extend-ignore = E501
exclude = .venv, frontend
exclude = .venv, frontend, src/backend/tests
ignore = E203, W503, G004, G200, E402
5 changes: 2 additions & 3 deletions src/backend/app_config.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
# app_config.py
import os
import logging
from typing import Optional, List, Dict, Any
from typing import Optional, List
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential, ClientSecretCredential
from azure.identity import DefaultAzureCredential
from azure.cosmos.aio import CosmosClient
from azure.ai.projects.aio import AIProjectClient
from semantic_kernel.kernel import Kernel
from semantic_kernel.contents import ChatHistory
from semantic_kernel.agents.azure_ai.azure_ai_agent import AzureAIAgent
from semantic_kernel.functions import KernelFunction

Expand Down
14 changes: 2 additions & 12 deletions src/backend/app_kernel.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
# app_kernel.py
import asyncio
import json
import logging
import os
import re
import uuid
from typing import Any, Dict, List, Optional
from typing import Dict, List, Optional

# Semantic Kernel imports
import semantic_kernel as sk
from app_config import config
from auth.auth_utils import get_authenticated_user_details

# Azure monitoring
from azure.monitor.opentelemetry import configure_azure_monitor
from config_kernel import Config
from context.cosmos_memory_kernel import CosmosMemoryContext
from event_utils import track_event_if_configured

# FastAPI imports
Expand All @@ -26,21 +20,17 @@
# Local imports
from middleware.health_check import HealthCheckMiddleware
from models.messages_kernel import (
ActionRequest,
ActionResponse,
AgentMessage,
AgentType,
HumanClarification,
HumanFeedback,
InputTask,
Plan,
PlanWithSteps,
Step,
)

# Updated import for KernelArguments
from semantic_kernel.functions.kernel_arguments import KernelArguments
from utils_kernel import get_agents, initialize_runtime_and_context, rai_success
from utils_kernel import initialize_runtime_and_context, rai_success

# # Check if the Application Insights Instrumentation Key is set in the environment variables
# connection_string = os.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING")
Expand Down
15 changes: 0 additions & 15 deletions src/backend/config_kernel.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,3 @@
# config_kernel.py
import os
import logging
import semantic_kernel as sk
from semantic_kernel.kernel import Kernel

# Updated imports for compatibility
try:
# Try newer structure
from semantic_kernel.contents import ChatHistory
except ImportError:
# Fall back to older structure for compatibility
from semantic_kernel.connectors.ai.chat_completion_client import ChatHistory
from semantic_kernel.agents.azure_ai.azure_ai_agent import AzureAIAgent

# Import AppConfig from app_config
from app_config import config

Expand Down
10 changes: 5 additions & 5 deletions src/backend/context/cosmos_memory_kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -525,8 +525,8 @@ async def get_collections(self) -> List[str]:

try:
query = """
SELECT DISTINCT c.collection
FROM c
SELECT DISTINCT c.collection
FROM c
WHERE c.data_type = 'memory' AND c.session_id = @session_id
"""
parameters = [{"name": "@session_id", "value": self.session_id}]
Expand Down Expand Up @@ -595,7 +595,7 @@ async def get_memory_record(
) -> Optional[MemoryRecord]:
"""Retrieve a memory record."""
query = """
SELECT * FROM c
SELECT * FROM c
WHERE c.collection=@collection AND c.key=@key AND c.session_id=@session_id AND c.data_type=@data_type
"""
parameters = [
Expand Down Expand Up @@ -625,7 +625,7 @@ async def get_memory_record(
async def remove_memory_record(self, collection: str, key: str) -> None:
"""Remove a memory record."""
query = """
SELECT c.id FROM c
SELECT c.id FROM c
WHERE c.collection=@collection AND c.key=@key AND c.session_id=@session_id AND c.data_type=@data_type
"""
parameters = [
Expand Down Expand Up @@ -668,7 +668,7 @@ async def get_memory_records(
query = """
SELECT *
FROM c
WHERE c.collection = @collection
WHERE c.collection = @collection
AND c.data_type = 'memory'
AND c.session_id = @session_id
ORDER BY c._ts DESC
Expand Down
1 change: 0 additions & 1 deletion src/backend/handlers/runtime_interrupt_kernel.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from typing import Any, Dict, List, Optional

import semantic_kernel as sk
from semantic_kernel.kernel_arguments import KernelArguments
from semantic_kernel.kernel_pydantic import KernelBaseModel


Expand Down
8 changes: 1 addition & 7 deletions src/backend/kernel_agents/agent_base.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,8 @@
import json
import logging
import os
from typing import Any, Awaitable, Callable, Dict, List, Mapping, Optional, Union
from typing import Any, List, Mapping, Optional

import semantic_kernel as sk
from semantic_kernel.agents.azure_ai.azure_ai_agent import AzureAIAgent
from semantic_kernel.functions import KernelFunction
from semantic_kernel.functions.kernel_arguments import KernelArguments
from semantic_kernel.functions.kernel_function_decorator import kernel_function
from semantic_kernel.agents import AzureAIAgentThread


# Import the new AppConfig instance
Expand Down
8 changes: 2 additions & 6 deletions src/backend/kernel_agents/agent_factory.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
"""Factory for creating agents in the Multi-Agent Custom Automation Engine."""

import logging
from typing import Dict, List, Callable, Any, Optional, Type
from types import SimpleNamespace
from semantic_kernel import Kernel
from semantic_kernel.functions import KernelFunction
from typing import Dict, Any, Optional, Type
from semantic_kernel.agents.azure_ai.azure_ai_agent import AzureAIAgent
import inspect

Expand All @@ -23,7 +20,6 @@
from kernel_agents.product_agent import ProductAgent
from kernel_agents.planner_agent import PlannerAgent # Add PlannerAgent import
from kernel_agents.group_chat_manager import GroupChatManager
from semantic_kernel.prompt_template.prompt_template_config import PromptTemplateConfig
from context.cosmos_memory_kernel import CosmosMemoryContext
from models.messages_kernel import PlannerResponsePlan, AgentType

Expand Down Expand Up @@ -216,7 +212,7 @@ async def create_agent(
if hasattr(agent, "async_init") and inspect.iscoroutinefunction(
agent.async_init
):
init_result = await agent.async_init()
await agent.async_init()

except Exception as e:
logger.error(
Expand Down
3 changes: 1 addition & 2 deletions src/backend/kernel_agents/agent_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
from typing import Optional

import semantic_kernel as sk
from semantic_kernel.kernel_pydantic import KernelBaseModel
from pydantic import BaseModel, Field
from pydantic import BaseModel

from context.cosmos_memory_kernel import CosmosMemoryContext
from models.messages_kernel import Step
Expand Down
2 changes: 0 additions & 2 deletions src/backend/kernel_agents/generic_agent.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import logging
from typing import List, Optional

import semantic_kernel as sk
from context.cosmos_memory_kernel import CosmosMemoryContext
from kernel_agents.agent_base import BaseAgent
from kernel_tools.generic_tools import GenericTools
Expand Down
13 changes: 1 addition & 12 deletions src/backend/kernel_agents/group_chat_manager.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,17 @@
import logging
import json
from datetime import datetime
import re
from typing import Dict, List, Optional, Any, Tuple
from typing import Dict, List, Optional

import semantic_kernel as sk
from semantic_kernel.functions.kernel_function import KernelFunction
from semantic_kernel.agents import AgentGroupChat # pylint: disable=E0611

from semantic_kernel.agents.strategies import (
SequentialSelectionStrategy,
TerminationStrategy,
)

from kernel_agents.agent_base import BaseAgent
from context.cosmos_memory_kernel import CosmosMemoryContext
from models.messages_kernel import (
ActionRequest,
ActionResponse,
AgentMessage,
HumanFeedback,
Step,
StepStatus,
PlanStatus,
HumanFeedbackStatus,
InputTask,
Plan,
Expand Down
1 change: 0 additions & 1 deletion src/backend/kernel_agents/hr_agent.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from typing import List, Optional

import semantic_kernel as sk
from context.cosmos_memory_kernel import CosmosMemoryContext
from kernel_agents.agent_base import BaseAgent
from kernel_tools.hr_tools import HrTools
Expand Down
9 changes: 2 additions & 7 deletions src/backend/kernel_agents/human_agent.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,17 @@
import logging
from typing import List, Optional

import semantic_kernel as sk
from context.cosmos_memory_kernel import CosmosMemoryContext
from event_utils import track_event_if_configured
from kernel_agents.agent_base import BaseAgent
from models.messages_kernel import (
ActionRequest,
AgentMessage,
AgentType,
ApprovalRequest,
HumanClarification,
HumanFeedback,
Step,
StepStatus,
)
from semantic_kernel.functions import KernelFunction
from semantic_kernel.functions.kernel_arguments import KernelArguments


class HumanAgent(BaseAgent):
Expand Down Expand Up @@ -119,7 +114,7 @@ async def handle_human_feedback(self, human_feedback: HumanFeedback) -> str:

# Track the event
track_event_if_configured(
f"Human Agent - Received feedback for step and added into the cosmos",
"Human Agent - Received feedback for step and added into the cosmos",
{
"session_id": human_feedback.session_id,
"user_id": self._user_id,
Expand All @@ -143,7 +138,7 @@ async def handle_human_feedback(self, human_feedback: HumanFeedback) -> str:

# Track the approval request event
track_event_if_configured(
f"Human Agent - Approval request sent for step and added into the cosmos",
"Human Agent - Approval request sent for step and added into the cosmos",
{
"session_id": human_feedback.session_id,
"user_id": self._user_id,
Expand Down
1 change: 0 additions & 1 deletion src/backend/kernel_agents/marketing_agent.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from typing import List, Optional

import semantic_kernel as sk
from context.cosmos_memory_kernel import CosmosMemoryContext
from kernel_agents.agent_base import BaseAgent
from kernel_tools.marketing_tools import MarketingTools
Expand Down
13 changes: 2 additions & 11 deletions src/backend/kernel_agents/planner_agent.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,13 @@
import logging
import uuid
import json
import re
import datetime
from typing import Dict, List, Optional, Any, Tuple
from pydantic import BaseModel, Field
from typing import Dict, List, Optional, Tuple
from azure.ai.projects.models import (
ResponseFormatJsonSchema,
ResponseFormatJsonSchemaType,
)
import semantic_kernel as sk
from semantic_kernel.functions import KernelFunction
from semantic_kernel.functions.kernel_arguments import KernelArguments
from semantic_kernel.agents import (
AzureAIAgent,
AzureAIAgentSettings,
AzureAIAgentThread,
)

from kernel_agents.agent_base import BaseAgent
from context.cosmos_memory_kernel import CosmosMemoryContext
from models.messages_kernel import (
Expand Down
1 change: 0 additions & 1 deletion src/backend/kernel_agents/procurement_agent.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from typing import List, Optional

import semantic_kernel as sk
from context.cosmos_memory_kernel import CosmosMemoryContext
from kernel_agents.agent_base import BaseAgent
from kernel_tools.procurement_tools import ProcurementTools
Expand Down
1 change: 0 additions & 1 deletion src/backend/kernel_agents/product_agent.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from typing import List, Optional

import semantic_kernel as sk
from context.cosmos_memory_kernel import CosmosMemoryContext
from kernel_agents.agent_base import BaseAgent
from kernel_tools.product_tools import ProductTools
Expand Down
1 change: 0 additions & 1 deletion src/backend/kernel_agents/tech_support_agent.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from typing import List, Optional

import semantic_kernel as sk
from context.cosmos_memory_kernel import CosmosMemoryContext
from kernel_agents.agent_base import BaseAgent
from kernel_tools.tech_support_tools import TechSupportTools
Expand Down
10 changes: 3 additions & 7 deletions src/backend/kernel_tools/generic_tools.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import inspect
import time
import logging
from datetime import datetime
from typing import Annotated, Callable, List
from typing import Callable

from semantic_kernel.functions import kernel_function
from models.messages_kernel import AgentType
import inspect
import json
from typing import Any, Dict, List, get_type_hints
from typing import get_type_hints


class GenericTools:
Expand Down Expand Up @@ -116,7 +112,7 @@ def generate_tools_json_doc(cls) -> str:
param_type = "string"

# Create parameter description
param_desc = param_name.replace("_", " ")
# param_desc = param_name.replace("_", " ")
args_dict[param_name] = {
"description": param_name,
"title": param_name.replace("_", " ").title(),
Expand Down
9 changes: 3 additions & 6 deletions src/backend/kernel_tools/hr_tools.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import inspect
import time
from datetime import datetime
from typing import Annotated, Callable, List
from typing import Annotated, Callable

from semantic_kernel.functions import kernel_function
from models.messages_kernel import AgentType
import inspect
import json
from typing import Any, Dict, List, get_type_hints
from typing import get_type_hints


class HrTools:
Expand Down Expand Up @@ -467,7 +464,7 @@ def generate_tools_json_doc(cls) -> str:
param_type = "string"

# Create parameter description
param_desc = param_name.replace("_", " ")
# param_desc = param_name.replace("_", " ")
args_dict[param_name] = {
"description": param_name,
"title": param_name.replace("_", " ").title(),
Expand Down
Loading
Loading