diff --git a/patchwork/steps/DatabaseAgent/README.md b/patchwork/steps/DatabaseAgent/README.md new file mode 100644 index 000000000..efbf3791c --- /dev/null +++ b/patchwork/steps/DatabaseAgent/README.md @@ -0,0 +1,63 @@ +# DatabaseAgent Module Documentation + +The `DatabaseAgent` module is designed to facilitate database query handling, leveraging a large language model (LLM) for conversation summarization and task execution. It is a component of a multiturn strategy system which can be particularly useful in environments requiring automated database interaction and query execution. + +## Files Overview + +The module consists of three main files: + +1. `DatabaseAgent.py`: Contains the core logic for the database agent class. +2. `typed.py`: Defines the input and output data structures for the agent. +3. `__init__.py`: Acts as an initializer for the module, although it is currently empty. + +## DatabaseAgent.py + +### Summary + +The `DatabaseAgent` class is the primary component of this file. It extends the `Step` class and makes use of `AgenticStrategyV2` to manage conversation flow and database query execution. The class utilizes a set of prompts to interact with the database, executing queries in a structured manner by communicating with a language model client. + +### Inputs + +- `task`: A string describing the task to be performed. +- `db_dialect`: The database dialect (e.g., MySQL, PostgreSQL) to instruct the query assistant. +- `prompt_value`: A dictionary containing data for rendering tasks. +- `db_driver`, `db_username`, `db_password`, `db_host`, `db_port`, `db_name`, `db_params`, `db_driver_args`: Database connection parameters. +- API keys for access to various language models (`openai_api_key`, `anthropic_api_key`, `google_api_key`). +- `max_llm_calls`: Maximum number of calls allowed to the language model. +- `example_json`: An optional string used for providing example formats. + +### Outputs + +- `request_tokens`: Number of tokens sent in the request. +- `response_tokens`: Number of tokens received in the response. + +### How It Works + +1. The class is initialized with inputs including a task description, database connection details, and API keys necessary for accessing language models. +2. It configures an agent using `AgenticStrategyV2`, setting up prompts and using the `DatabaseQueryTool`. +3. When executed, the agent runs the task with limited iterations (up to 10), calling the language model to summarize and conduct necessary queries. +4. Returns a dictionary containing the result of execution along with model usage statistics. + +## typed.py + +### Summary + +This file defines the input and output types used in the `DatabaseAgent` class. The types are crucial for understanding what data should be supplied to and expected from the agent. + +### DatabaseAgentInputs + +A `TypedDict` that extends required inputs for database tasks and adds optional configurations for connecting to a database and making API calls. + +### DatabaseAgentOutputs + +A `TypedDict` specifying the outputs related to token usage for requests and responses, helpful for monitoring and billing purposes. + +## __init__.py + +### Summary + +This file currently serves as an initializer for the module. It doesn't contain any code, suggesting the module is directly accessed via its constituent files. + +--- + +This module is particularly useful for developers and data engineers working on automating database tasks that require interaction via natural language or require integration with language model capabilities for summarization and comprehension.