Skip to main content

A library for managing agents in Gen AI applications.

Project description

GLLM Agents

Description

A library for managing agents in Generative AI applications.

Installation

Prerequisites

1. Installation from Artifact Registry

Choose one of the following methods to install the package:

Using pip

pip install gllm-agents-binary

Using Poetry

poetry add gllm-agents-binary

2. Development Installation (Git)

For development purposes, you can install directly from the Git repository:

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 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:
poetry run pytest -s tests/unit_tests/

Hello World Examples

Prerequisites

  • Python 3.13+
  • Install the binary package:
pip install gllm-agents-binary
  • For OpenAI: Set your API key in the environment:
export OPENAI_API_KEY=your-openai-key
  • For Google ADK: Set your API key in the environment:
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):

python gllm_agents/examples/hello_world_langgraph.py

LangGraph with BOSA Connector (OpenAI):

python gllm_agents/examples/hello_world_langgraph_bosa_twitter.py

LangGraph Streaming (OpenAI):

python gllm_agents/examples/hello_world_langgraph_stream.py

LangGraph Multi-Agent Coordinator (OpenAI):

python gllm_agents/examples/hello_world_a2a_multi_agent_coordinator_server.py

Google ADK:

python gllm_agents/examples/hello_world_google_adk.py

Google ADK Streaming:

python gllm_agents/examples/hello_world_google_adk_stream.py

LangChain (OpenAI):

python gllm_agents/examples/hello_world_langchain.py

LangChain Streaming (OpenAI):

python gllm_agents/examples/hello_world_langchain_stream.py

HITL (Human-in-the-Loop) Approval Demo:

python gllm_agents/examples/hitl_demo.py

2. Running MCP Examples

Prerequisites

Ensure you have set the environment variables for API keys:

export OPENAI_API_KEY="your-openai-key"
export GOOGLE_API_KEY="your-google-api-key"

For examples that use stateful MCP tools like browser automation, start the Playwright MCP server in a separate terminal:

npx @playwright/mcp@latest --headless --port 8931

Note: Use the --headless flag to run the server without a visible browser window, which is recommended if the browser is not installed yet to avoid failures. For using an actual (non-headless) browser, refer to the Playwright MCP documentation.

Local MCP Servers

For STDIO, SSE, and HTTP transports using local servers, open a terminal in the library root (libs/gllm-agents) and run:

  • For STDIO:
poetry run python gllm_agents/examples/mcp_servers/mcp_server_stdio.py
  • For SSE:
poetry run python gllm_agents/examples/mcp_servers/mcp_server_sse.py
  • For HTTP:
poetry run python gllm_agents/examples/mcp_servers/mcp_server_http.py

Note: Start the appropriate server before running the client examples for that transport.

Running Examples

All examples are run from the library root using poetry run python gllm_agents/examples/<file>.py. Examples support OpenAI for LangGraph/LangChain and Google ADK where specified.

LangChain Examples

STDIO Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_langchain_mcp_stdio.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_langchain_mcp_stdio_stream.py
SSE Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_langchain_mcp_sse.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_langchain_mcp_sse_stream.py
HTTP Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_langchain_mcp_http.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_langchain_mcp_http_stream.py

Google ADK Examples

STDIO Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_google_adk_mcp_stdio.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_google_adk_mcp_stdio_stream.py
SSE Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_google_adk_mcp_sse.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_google_adk_mcp_sse_stream.py
HTTP Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_google_adk_mcp_http.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_google_adk_mcp_http_stream.py

LangGraph Examples (OpenAI)

STDIO Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_langgraph_mcp_stdio.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_langgraph_mcp_stdio_stream.py
SSE Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_langgraph_mcp_sse.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_langgraph_mcp_sse_stream.py
HTTP Transport
  • Non-Streaming:
poetry run python gllm_agents/examples/hello_world_langgraph_mcp_http.py
  • Streaming:
poetry run python gllm_agents/examples/hello_world_langgraph_mcp_http_stream.py

Multi-Server Example

This LangChain example uses multiple MCP servers: Playwright (for browser actions) and a random name generator (SSE transport) with persistent sessions across multiple arun calls.

  1. Start the Playwright server:
npx @playwright/mcp@latest --headless --port 8931
  1. In another terminal, start the Name Generator SSE server:
poetry run python gllm_agents/examples/mcp_servers/mcp_name.py
  1. Run the multi-server client example:
poetry run python gllm_agents/examples/hello_world_langchain_mcp_multi_server.py

3. Running Individual A2A Examples:

  • Navigate to the library's root directory (e.g., libs/gllm-agents if you cloned the repository).
  • Open a new terminal and navigate to the gllm_agents/examples directory to run the A2A server.

LangChain Server:

python hello_world_a2a_langchain_server.py
  • Open a new terminal and navigate to the gllm_agents/examples directory to run the A2A client.

LangChain Client:

python hello_world_a2a_langchain_client.py

LangChain Client Integrated with Agent Workflow:

python hello_world_a2a_langchain_client_agent.py

LangChain Client Streaming:

python hello_world_a2a_langchain_client_stream.py

Human-in-the-Loop (HITL) Approval

GLLM Agents supports Human-in-the-Loop approval for tool execution, allowing human operators to review and approve high-risk tool calls before they execute.

Features

  • Configurable Approval Policies: Set approval requirements per tool with customizable timeouts and behaviors
  • Interactive CLI Prompts: Clear, structured prompts showing tool details and context
  • Structured Logging: All approval decisions are logged with full metadata
  • Timeout Handling: Configurable behavior when approval requests time out
  • Non-blocking: Tools without HITL configuration execute normally

Quick Start

Configure HITL for specific tools in your agent:

from gllm_agents.agent import LangGraphReactAgent
from gllm_agents.agent.hitl.config import ToolApprovalConfig

# Create agent with tools
agent = LangGraphReactAgent(
    name="My Agent",
    tools=[send_email_tool, search_tool],
)

# Configure HITL via tool_configs
agent.tool_configs = {
    "tool_configs": {
        "send_email": {"hitl": {"timeout_seconds": 300}}
    }
}

When the agent attempts to use the send_email tool, it will:

  1. Emit a pending approval event via DeferredPromptHandler
  2. Wait for ApprovalManager.resolve_pending_request() to be called
  3. Execute the tool only if approved
  4. Log the decision for audit purposes

Configuration Options

Option Type Default Description
timeout_seconds int 300 Seconds to wait for operator input

Logging

All HITL decisions are logged with structured data:

{
  "event": "hitl_decision",
  "tool": "send_email",
  "decision": "approved",
  "operator_input": "A",
  "latency_ms": 2500,
  "timestamp": "2025-09-25T10:15:00Z"
}

Demo

Run the interactive demo to see HITL in action:

python gllm_agents/examples/hitl_demo.py

Architectural Notes

Memory Features

The library supports Mem0 as a memory backend for long-term conversation recall. Key features:

  • Automatic persistence of user-agent interactions via memory_backend="mem0".
  • Semantic search for relevant past conversations.
  • New built_in_mem0_search tool for explicit recall by time period (e.g., "yesterday", "last week", "July 2025").
  • Date range parsing for natural language time filters using dateparser.
  • Conditional auto-augmentation (disabled by default to reduce noise; enable with memory_auto_augment=True).

Mem0 Date Recall Example

Use the coordinator example with memory enabled:

poetry run python gllm_agents/examples/hello_world_a2a_mem0_coordinator_server.py

In client:

agent = LangGraphAgent(
    name="client",
    instruction="...",
    model="gpt-4o-mini",
    memory_backend="mem0",
)

Test recall: After some interactions, query "What did we discuss yesterday?" – agent uses tool to filter by created_at.

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.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

gllm_agents_binary-0.4.22-cp313-cp313-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.13Windows x86-64

gllm_agents_binary-0.4.22-cp313-cp313-manylinux_2_31_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.31+ x86-64

gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_arm64.macosx_15_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64macOS 15.0+ ARM64

gllm_agents_binary-0.4.22-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12Windows x86-64

gllm_agents_binary-0.4.22-cp312-cp312-manylinux_2_31_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.31+ x86-64

gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_arm64.macosx_15_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64macOS 15.0+ ARM64

gllm_agents_binary-0.4.22-cp311-cp311-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.11Windows x86-64

gllm_agents_binary-0.4.22-cp311-cp311-manylinux_2_31_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.31+ x86-64

gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_arm64.macosx_15_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64macOS 15.0+ ARM64

File details

Details for the file gllm_agents_binary-0.4.22-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 62a83a5bfe9d4d2684880ea0b1319b5c243e7251e4643c9bcf754186cbf73031
MD5 eefa463ece81aa3f043b60e721e16ce8
BLAKE2b-256 bdec0bb8da48d96f9b5a5b5c5ee1de93dba36c7821978e73ff890ecd37d6c934

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp313-cp313-win_amd64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp313-cp313-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp313-cp313-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 1396ecd4087e9cbcafc2bd07e9aade933bbf17ab259b12f40a1e62ff81132e06
MD5 e72a1e9b49fc1926011982d9bd2f4cf9
BLAKE2b-256 18d551c71bd1c1099e7df3d4e68d323aa7f3361a2b336c7d3a8fd74ab474dcaf

See more details on using hashes here.

File details

Details for the file gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4975b719959007ddebdcbf791c64ca7f78492920fef561bb1e151fbd2b412fbc
MD5 6e44acd64275434120c03a44db520800
BLAKE2b-256 08dda64a24c122662ba5c11274e1969f4428c5b9ab18c2dfb10979972137d9bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_x86_64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_arm64.macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_arm64.macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d04406d99412fa470e4c3f654cb19fed0c957af1697aae19b0f28370d08d6343
MD5 378858a076ccafb22e35068bd9c73cb4
BLAKE2b-256 bc8ada7a93b07d3587d58397d11f15390c01a9e13542c416e94d0fb2324f9922

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp313-cp313-macosx_13_0_arm64.macosx_15_0_arm64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 567603511de3b63987b3f53d180085fbf22bae4d67879b8d50a03c1c54872258
MD5 177f51d5edfeb927d28fc115accf9b93
BLAKE2b-256 35879829905f6608b831056eb3ff9995613d8a507cb7a454a725028f3e0fbd49

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp312-cp312-win_amd64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp312-cp312-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp312-cp312-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 bf0e39e597f48a53b8468ccbdff975faa9435f07143bef9e08bdfed5497122f7
MD5 11ee03f86bdbb26e8586ca1ccc679f67
BLAKE2b-256 89fa69bd27a3cd758c596d81343b314b607f52a5f7ef1ae3021a889cf871c31a

See more details on using hashes here.

File details

Details for the file gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 2b0320503a036df7ce807eef8740abdc2a2cc8434657eba43904225e6be0de51
MD5 4f2e2302aa00f8f0ef5189c8c65b252d
BLAKE2b-256 f83966f806037cc157f31343f045b5467091c886858b8f914918a46c05ff0cb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_x86_64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_arm64.macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_arm64.macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c886dad06566bd5b3a2dbb1712b2dc0be3018dea21b8060892af686e8149e34f
MD5 8a076e2af98b6c67cfe341e2c2784a87
BLAKE2b-256 3a32b7b1f694de655760e3ea49375639f1b144627d5c851787bd80bc5734a298

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp312-cp312-macosx_13_0_arm64.macosx_15_0_arm64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d185822ef367ccd61a24e114cc7d0f8858436a362c76ae735ae95ac6a3734428
MD5 65bc1426a20ca3bae396c33714e824ed
BLAKE2b-256 4917f4fd256250545428b01ec913419b7286cf463938643ce8079d15ca8da332

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp311-cp311-win_amd64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp311-cp311-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 c1ae3c9a1dda25adf2df86ad12d75b1f2f4ade6e227971a0b10f0046ef586288
MD5 9b9f6ef03cb6c69565c0a560be5bd904
BLAKE2b-256 067f5fcef1bb57d973953103ec4680636f51a01ea223f63280fcb9d50b28c58b

See more details on using hashes here.

File details

Details for the file gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4aecb4a5bd3cab034289e034e4c8424894338bb9d6a033917437c92afbe000ea
MD5 91bcb9da6453fd3da1ad6e11ead10321
BLAKE2b-256 63b7d83e191ca6dd40a8c6bcbf6015be59f35d938070b04c8a1ac3d7e91533c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_x86_64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_arm64.macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_arm64.macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 63d8e2162a70a5ee19cc133f38aa9355af13d26ae000cb52f8f317b051b4d331
MD5 4f947317b3e5f1d62c075fe6126ef1cc
BLAKE2b-256 cc1486a7986dad2ba89d0b2fca46e5e09926d680ff3678b477c6e8cc99f19d67

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.22-cp311-cp311-macosx_13_0_arm64.macosx_15_0_arm64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page