Why Dependency Injection Is Essential
Here’s why dependency injection is a game-changer for secure LLM workflows:- Enhanced Security: Your sensitive data is never directly exposed to the LLM.
- Simplified Development: Secure data can be seamlessly accessed by functions without requiring complex configurations.
- Unmatched Flexibility: It supports safe integration of diverse workflows, allowing you to scale and adapt with ease.
Installation
To installAG2, simply run the following command:
Note: If you have been usingautogenorag2, all you need to do is upgrade it using:orasautogen, andag2are aliases for the same PyPI package.
Imports
The functionality demonstrated in this guide is located in theautogen.tools.dependency_injection module. This module provides key
components for dependency injection:
BaseContext: abstract base class used to define and encapsulate data contexts, such as user account information, which can then be injected into functions or agents securely.Depends: a function used to declare and inject dependencies, either from a context (likeBaseContext) or a function, ensuring sensitive data is provided securely without direct exposure.
Define a BaseContext Class
We start by defining aBaseContext class for accounts. This will act
as the base structure for dependency injection. By using this approach,
sensitive information like usernames and passwords is never exposed to
the LLM.
Helper Functions
To ensure that the provided account is valid and retrieve its balance, we create two helper functions.Agent Configuration
Configure the agents for the interaction.config_listdefines the LLM configurations, including the model and API key.UserProxyAgentsimulates user inputs without requiring actual human interaction (set toNEVER).AssistantAgentrepresents the AI agent, configured with the LLM settings.
Injecting a BaseContext Parameter
In the example below we register the function and use dependency injection to automatically inject the bob_account Account object into the function. Thisaccount parameter will not be visible to the LLM.
Note: You can also use account: Account = Depends(bob_account) as
an alternative syntax.
Injecting Parameters Without BaseContext
Sometimes, you might not want to useBaseContext. Here’s how to inject
simple parameters directly.
Agent Configuration
Configure the agents for the interaction.config_listdefines the LLM configurations, including the model and API key.UserProxyAgentsimulates user inputs without requiring actual human interaction (set toNEVER).AssistantAgentrepresents the AI agent, configured with the LLM settings.
Register the Function with Direct Parameter Injection
Instead of injecting a full context likeAccount, you can directly
inject individual parameters, such as the username and password, into a
function. This allows for more granular control over the data injected
into the function, and still ensures that sensitive information is
managed securely.
Here’s how you can set it up: