Metadata-Version: 2.1
Name: gllm-agents-binary
Version: 0.2.1
Summary: A library for managing agents in Gen AI applications.
Author: Raymond Christopher
Author-email: raymond.christopher@gdplabs.id
Requires-Python: >=3.13,<3.14
Classifier: Programming Language :: Python :: 3
Requires-Dist: google-adk (>=0.5.0,<0.6.0)
Requires-Dist: langchain (>=0.3.0,<0.4.0)
Requires-Dist: langchain-mcp-adapters (>=0.0.9,<0.0.10)
Requires-Dist: langgraph (>=0.2.16,<0.3.0)
Requires-Dist: pydantic (>=2.9.1,<3.0.0)
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
Description-Content-Type: text/markdown

# GLLM Agents

## Description

A library for managing agents in Generative AI applications.

## Installation

### Prerequisites
- Python 3.11+ - [Install here](https://www.python.org/downloads/)
- Pip (if using Pip) - [Install here](https://pip.pypa.io/en/stable/installation/)
- Poetry 1.8.1+ (if using Poetry) - [Install here](https://python-poetry.org/docs/#installation)
- Git (if using Git) - [Install here](https://git-scm.com/downloads)
- For git installation:
  - Access to the [GDP Labs SDK github repository](https://github.com/GDP-ADMIN/gen-ai-internal)

### 1. Installation from Artifact Registry
Choose one of the following methods to install the package:

#### Using pip
```bash
pip install gllm-agents-binary
```

#### Using Poetry
```bash
poetry add gllm-agents-binary
```

### 2. Development Installation (Git)
For development purposes, you can install directly from the Git repository:
```bash
poetry add "git+ssh://git@github.com/GDP-ADMIN/gen-ai-internal.git#subdirectory=libs/gllm-agents"
```

## Managing Dependencies
1. Go to root folder of `gllm-agents` module, e.g. `cd libs/gllm-agents`.
2. Run `poetry shell` to create a virtual environment.
3. Run `poetry lock` to create a lock file if you haven't done it yet.
4. Run `poetry install` to install the `gllm-agents` requirements for the first time.
5. Run `poetry update` if you update any dependency module version at `pyproject.toml`.

## Contributing
Please refer to this [Python Style Guide](https://docs.google.com/document/d/1uRggCrHnVfDPBnG641FyQBwUwLoFw0kTzNqRm92vUwM/edit?usp=sharing)
to get information about code style, documentation standard, and SCA that you need to use when contributing to this project

1. Activate `pre-commit` hooks using `pre-commit install`
2. Run `poetry shell` to create a virtual environment.
3. Run `poetry lock` to create a lock file if you haven't done it yet.
4. Run `poetry install` to install the `gllm-agents` requirements for the first time.
5. Run `which python` to get the path to be referenced at Visual Studio Code interpreter path (`Ctrl`+`Shift`+`P` or `Cmd`+`Shift`+`P`)
6. Try running the unit test to see if it's working:
```bash
poetry run pytest -s tests/unit_tests/
```

## Hello World Examples

### Prerequisites
- Python 3.11+
- Install the binary package:

```bash
pip install gllm-agents-binary
```

- For OpenAI: Set your API key in the environment:
```bash
export OPENAI_API_KEY=your-openai-key
```
- For Google ADK: Set your API key in the environment:
```bash
export GOOGLE_API_KEY=your-google-api-key
```

### Run the Hello World Examples

The example scripts are located in the `gllm_agents/examples` directory within the library. You can run them individually or use the `run_all_examples.py` script.

**1. Running Individual Examples:**

Navigate to the library's root directory (e.g., `libs/gllm-agents` if you cloned the repository).

**LangGraph (OpenAI):**
```bash
python gllm_agents/examples/hello_world_langgraph.py
# or, if your PYTHONPATH is set up or the package is installed:
# python -m gllm_agents.examples.hello_world_langgraph
```

**LangGraph Streaming (OpenAI):**
```bash
python gllm_agents/examples/hello_world_langgraph_stream.py
# or, if your PYTHONPATH is set up or the package is installed:
# python -m gllm_agents.examples.hello_world_langgraph_stream
```

**Google ADK:**
```bash
python gllm_agents/examples/hello_world_google_adk.py
# or, if your PYTHONPATH is set up or the package is installed:
# python -m gllm_agents.examples.hello_world_google_adk
```

**Google ADK Streaming:**
```bash
python gllm_agents/examples/hello_world_google_adk_stream.py
# or, if your PYTHONPATH is set up or the package is installed:
# python -m gllm_agents.examples.hello_world_google_adk_stream
```

## Architectural Notes

### Agent Interface (`AgentInterface`)

The `gllm_agents.agent.interface.AgentInterface` class defines a standardized contract for all agent implementations within the GLLM Agents ecosystem. It ensures that different agent types (e.g., LangGraph-based, Google ADK-based) expose a consistent set of methods for core operations.

Key methods defined by `AgentInterface` typically include:
- `arun()`: For asynchronous execution of the agent that returns a final consolidated response.
- `arun_stream()`: For asynchronous execution that streams back partial responses or events from the agent.

By adhering to this interface, users can interact with various agents in a uniform way, making it easier to switch between or combine different agent technologies.

### Inversion of Control (IoC) / Dependency Injection (DI)

The agent implementations (e.g., `LangGraphAgent`, `GoogleADKAgent`) utilize Dependency Injection. For instance, `LangGraphAgent` accepts an `agent_executor` (like one created by LangGraph's `create_react_agent`) in its constructor. Similarly, `GoogleADKAgent` accepts a native `adk_native_agent`. This allows the core execution logic to be provided externally, promoting flexibility and decoupling the agent wrapper from the specific instantiation details of its underlying engine.

