-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinjection.py
More file actions
67 lines (52 loc) · 3.06 KB
/
Copy pathinjection.py
File metadata and controls
67 lines (52 loc) · 3.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from dependency_injector import containers, providers
from src.application.agents.agents_chain import AgentsChain
from src.application.agents.core.agent import AgentContext
from src.domain.entities.instruction.instructions_repo import InstructionsRepo
from src.application.agents.sub_agents.helpful_agent import HelpfulAgent
from src.application.reply_message import ReplyMessage
from src.domain.ports.local_instruction_port import LocalInstructionPort
from src.domain.ports.model_port import ModelPort
from src.domain.ports.observer_port import ObserverPort
from src.domain.ports.remote_instruction_port import RemoteInstructionPort
from src.infrastructure.adapters.file_instruction_adapter import FileInstructionAdapter
from src.infrastructure.adapters.litellm_model_adapter import LiteLLMModelAdapter
from src.infrastructure.adapters.opik_instruction_adapter import OpikInstructionAdapter
from src.infrastructure.adapters.opik_observer_service import OpikObserverAdapter
from src.infrastructure.adapters.vertex_config import setup_vertex_env
from src.infrastructure.chain.adk.adk_agents_chain import ADKAgentsChain
from src.infrastructure.repositories.instructions_repo_impl import InstructionsRepoImpl
from src.infrastructure.repositories.local_user_repo_impl import UserRepo, LocalUserRepoImpl
class BaseContainer(containers.DeclarativeContainer):
# Adapters
model_adapter = providers.Dependency(ModelPort)
local_instruction_adapter = providers.Dependency(LocalInstructionPort)
remote_instruction_adapter = providers.Dependency(RemoteInstructionPort)
observer_adapter = providers.Dependency(ObserverPort)
# Repositories
user_repo = providers.Dependency(UserRepo)
instructions_repo = providers.Dependency(InstructionsRepo)
# Agents
helpful_agent = providers.Dependency(HelpfulAgent)
# Chains
agents_chain = providers.Dependency(AgentsChain)
class DevContainer(BaseContainer):
# Wiring Packages
wiring_config = containers.WiringConfiguration(packages=["src.routers"])
# Resource Setup
vertex_setup = providers.Resource(setup_vertex_env)
# Adapters
model_adapter = providers.Singleton(LiteLLMModelAdapter)
observer_adapter = providers.Singleton(OpikObserverAdapter)
local_instruction_adapter = providers.Singleton(FileInstructionAdapter)
remote_instruction_adapter = providers.Singleton(OpikInstructionAdapter)
# Repositories
user_repo = providers.Singleton(LocalUserRepoImpl)
instructions_repo = providers.Singleton(InstructionsRepoImpl, local_instruction_adapter=local_instruction_adapter,
remote_instruction_adapter=remote_instruction_adapter)
agent_ctx = providers.Singleton(AgentContext, instructions_repo=instructions_repo)
# Agents
helpful_agent = providers.Singleton(HelpfulAgent, ctx=agent_ctx)
# Chains
agents_chain = providers.Factory(ADKAgentsChain, helpful_agent=helpful_agent, user_repo=user_repo,
observer_adapter=observer_adapter)
reply_usecase = providers.Factory(ReplyMessage, chain=agents_chain)