ййй
This commit is contained in:
@@ -1,16 +1,46 @@
|
||||
from app.modules.agent.runtime import AgentRuntimeExecutor, RuntimeRetrievalAdapter
|
||||
from app.modules.agent.runtime.code_qa_runner_adapter import CodeQaRunnerAdapter
|
||||
from pathlib import Path
|
||||
|
||||
from app.modules.agent.llm import AgentLlmService
|
||||
from app.modules.agent.llm.prompt_loader import PromptLoader
|
||||
from app.modules.chat.direct_service import CodeExplainChatService
|
||||
from app.modules.chat.dialog_store import DialogSessionStore
|
||||
from app.modules.chat.repository import ChatRepository
|
||||
from app.modules.chat.module import ChatModule
|
||||
from app.modules.chat.session_resolver import ChatSessionResolver
|
||||
from app.modules.chat.task_store import TaskStore
|
||||
from app.modules.agent.intent_router_v2 import IntentRouterV2
|
||||
from app.modules.agent.runtime import DocsQAPipelineRunner
|
||||
from app.modules.agent.runtime.steps.retrieval import RuntimeRepoContextFactory, RuntimeRetrievalAdapter
|
||||
from app.modules.agent.task_runtime import ContextEnrichmentService, DocumentationTemplateRegistry, TaskRuntimeContextBuilder
|
||||
from app.modules.agent.task_runtime.workflows import (
|
||||
DocumentationGenerationWorkflow,
|
||||
DocsQaWorkflow,
|
||||
FallbackWorkflow,
|
||||
OpenApiWorkflow,
|
||||
)
|
||||
from app.modules.agent.task_runtime.workflows.general_qa import GeneralQaWorkflow
|
||||
from app.modules.agent_api import AgentApiModule
|
||||
from app.modules.agent_api.application.request_service import RequestService
|
||||
from app.modules.agent_api.application.session_service import SessionService
|
||||
from app.modules.agent_api.application.stream_service import StreamService
|
||||
from app.modules.agent_api.infrastructure.ids.request_id_factory import RequestIdFactory
|
||||
from app.modules.agent_api.infrastructure.ids.session_id_factory import SessionIdFactory
|
||||
from app.modules.agent_api.infrastructure.logging.request_trace_logger import RequestTraceLogger
|
||||
from app.modules.agent_api.infrastructure.stores.in_memory_request_store import InMemoryRequestStore
|
||||
from app.modules.agent_api.infrastructure.stores.in_memory_session_store import InMemorySessionStore
|
||||
from app.modules.agent_api.infrastructure.streaming.sse_event_channel import SseEventChannel
|
||||
from app.modules.orchestration import OrchestrationFacade
|
||||
from app.modules.orchestration.adapters.intent_router_adapter import IntentRouterAdapter
|
||||
from app.modules.orchestration.adapters.llm_chat_adapter import LlmChatAdapter
|
||||
from app.modules.orchestration.messaging.client_message_publisher import ClientMessagePublisher
|
||||
from app.modules.orchestration.processes.registry import ProcessRegistry
|
||||
from app.modules.orchestration.processes.v1.process import V1Process
|
||||
from app.modules.orchestration.processes.v1.steps.bootstrap_step import BootstrapStep
|
||||
from app.modules.orchestration.processes.v1.steps.finalize_step import FinalizeStep
|
||||
from app.modules.orchestration.processes.v1.steps.run_llm_step import RunLlmStep
|
||||
from app.modules.orchestration.processes.v2.process import V2Process
|
||||
from app.modules.orchestration.processes.v2.steps.execute_documentation_workflow_step import ExecuteDocumentationWorkflowStep
|
||||
from app.modules.orchestration.processes.v2.steps.execute_fallback_workflow_step import ExecuteFallbackWorkflowStep
|
||||
from app.modules.orchestration.processes.v2.steps.execute_general_qa_workflow_step import ExecuteGeneralQaWorkflowStep
|
||||
from app.modules.orchestration.processes.v2.steps.execute_openapi_workflow_step import ExecuteOpenApiWorkflowStep
|
||||
from app.modules.orchestration.processes.v2.steps.route_intent_step import RouteIntentStep
|
||||
from app.modules.orchestration.runtime.process_runner import ProcessRunner
|
||||
from app.modules.rag.persistence.repository import RagRepository
|
||||
from app.modules.agent.runtime.story_context_repository import StoryContextRepository, StoryContextSchemaRepository
|
||||
from app.modules.agent.runtime.steps.explain import CodeExplainRetrieverV2, CodeGraphRepository, LayeredRetrievalGateway
|
||||
from app.modules.rag.module import RagModule, RagRepoModule
|
||||
from app.modules.shared.bootstrap import bootstrap_database
|
||||
from app.modules.shared.event_bus import EventBus
|
||||
@@ -22,20 +52,14 @@ class ModularApplication:
|
||||
self.events = EventBus()
|
||||
self.retry = RetryExecutor()
|
||||
self.rag_repository = RagRepository()
|
||||
self.chat_repository = ChatRepository()
|
||||
self.story_context_schema_repository = StoryContextSchemaRepository()
|
||||
self.story_context_repository = StoryContextRepository()
|
||||
self.chat_tasks = TaskStore()
|
||||
|
||||
self.rag = RagModule(event_bus=self.events, retry=self.retry, repository=self.rag_repository)
|
||||
self.rag_repo = RagRepoModule(
|
||||
story_context_repository=self.story_context_repository,
|
||||
rag_repository=self.rag_repository,
|
||||
)
|
||||
self.code_explain_retriever = CodeExplainRetrieverV2(
|
||||
gateway=LayeredRetrievalGateway(self.rag_repository, self.rag.embedder),
|
||||
graph_repository=CodeGraphRepository(),
|
||||
)
|
||||
from app.modules.shared.gigachat.client import GigaChatClient
|
||||
from app.modules.shared.gigachat.settings import GigaChatSettings
|
||||
from app.modules.shared.gigachat.token_provider import GigaChatTokenProvider
|
||||
@@ -44,32 +68,69 @@ class ModularApplication:
|
||||
_giga_client = GigaChatClient(_giga_settings, GigaChatTokenProvider(_giga_settings))
|
||||
_prompt_loader = PromptLoader()
|
||||
self._agent_llm = AgentLlmService(client=_giga_client, prompts=_prompt_loader)
|
||||
_router = IntentRouterV2()
|
||||
_retrieval = RuntimeRetrievalAdapter(self.rag_repository)
|
||||
_executor = AgentRuntimeExecutor(llm=self._agent_llm, retrieval=_retrieval)
|
||||
self._agent_runner = CodeQaRunnerAdapter(_executor)
|
||||
self.direct_chat = CodeExplainChatService(
|
||||
retriever=self.code_explain_retriever,
|
||||
_repo_context_factory = RuntimeRepoContextFactory()
|
||||
_docs_runner = DocsQAPipelineRunner(
|
||||
router=_router,
|
||||
retrieval_adapter=_retrieval,
|
||||
repo_context=_repo_context_factory.build(),
|
||||
llm=self._agent_llm,
|
||||
session_resolver=ChatSessionResolver(
|
||||
dialogs=DialogSessionStore(self.chat_repository),
|
||||
rag_session_exists=lambda rag_session_id: self.rag.sessions.get(rag_session_id) is not None,
|
||||
),
|
||||
task_store=self.chat_tasks,
|
||||
message_sink=self.chat_repository.add_message,
|
||||
)
|
||||
self.chat = ChatModule(
|
||||
agent_runner=self._agent_runner,
|
||||
event_bus=self.events,
|
||||
retry=self.retry,
|
||||
rag_sessions=self.rag.sessions,
|
||||
repository=self.chat_repository,
|
||||
direct_chat=self.direct_chat,
|
||||
task_store=self.chat_tasks,
|
||||
_task_context_builder = TaskRuntimeContextBuilder(_repo_context_factory)
|
||||
_context_enrichment = ContextEnrichmentService()
|
||||
_docs_workflow = DocsQaWorkflow(_docs_runner)
|
||||
_openapi_workflow = OpenApiWorkflow(_docs_runner)
|
||||
_general_qa_workflow = GeneralQaWorkflow(_docs_runner)
|
||||
_fallback_workflow = FallbackWorkflow(self._agent_llm)
|
||||
_docs_generation_workflow = DocumentationGenerationWorkflow(self._agent_llm, DocumentationTemplateRegistry())
|
||||
self._docs_generation_workflow = _docs_generation_workflow
|
||||
|
||||
self.agent_sessions = InMemorySessionStore()
|
||||
self.agent_requests = InMemoryRequestStore()
|
||||
self.agent_events = SseEventChannel()
|
||||
self.agent_trace_logger = RequestTraceLogger(Path("runtime_traces/agent_requests"))
|
||||
_publisher = ClientMessagePublisher(self.agent_events, self.agent_trace_logger)
|
||||
_process_registry = ProcessRegistry(
|
||||
V1Process([BootstrapStep(), RunLlmStep(LlmChatAdapter(self._agent_llm)), FinalizeStep()]),
|
||||
V2Process(
|
||||
[
|
||||
BootstrapStep(),
|
||||
RouteIntentStep(IntentRouterAdapter(_router), _task_context_builder, _context_enrichment),
|
||||
ExecuteDocumentationWorkflowStep(_docs_workflow, "workflow_documentation_explain"),
|
||||
ExecuteOpenApiWorkflowStep(_openapi_workflow, "workflow_openapi_generation"),
|
||||
ExecuteGeneralQaWorkflowStep(_general_qa_workflow, "workflow_general_qa"),
|
||||
ExecuteFallbackWorkflowStep(_fallback_workflow, "workflow_fallback"),
|
||||
FinalizeStep(),
|
||||
]
|
||||
),
|
||||
)
|
||||
_orchestration = OrchestrationFacade(
|
||||
request_store=self.agent_requests,
|
||||
process_registry=_process_registry,
|
||||
process_runner=ProcessRunner(),
|
||||
publisher=_publisher,
|
||||
trace_logger=self.agent_trace_logger,
|
||||
)
|
||||
_session_service = SessionService(
|
||||
store=self.agent_sessions,
|
||||
ids=SessionIdFactory(),
|
||||
rag_session_exists=lambda rag_session_id: self.rag.sessions.get(rag_session_id) is not None,
|
||||
)
|
||||
_request_service = RequestService(
|
||||
request_store=self.agent_requests,
|
||||
request_ids=RequestIdFactory(),
|
||||
sessions=_session_service,
|
||||
orchestration=_orchestration,
|
||||
)
|
||||
self.agent_api = AgentApiModule(
|
||||
sessions=_session_service,
|
||||
requests=_request_service,
|
||||
streams=StreamService(self.agent_events, request_exists=lambda request_id: self.agent_requests.get(request_id) is not None),
|
||||
)
|
||||
|
||||
def startup(self) -> None:
|
||||
bootstrap_database(
|
||||
self.rag_repository,
|
||||
self.chat_repository,
|
||||
self.story_context_schema_repository,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user