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.24-cp313-cp313-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.13Windows x86-64

gllm_agents_binary-0.4.24-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.24-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.24-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.24-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12Windows x86-64

gllm_agents_binary-0.4.24-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.24-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.24-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.24-cp311-cp311-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.11Windows x86-64

gllm_agents_binary-0.4.24-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.24-cp311-cp311-macosx_13_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

gllm_agents_binary-0.4.24-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.24-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d37a29cc9c7d519ad6b7df4fcc9cf7b9f3efba0a2e5c105e5b1359dba7989a59
MD5 40b256c9a5f1f56257287310bf6c11e9
BLAKE2b-256 0abe6ee9ae9481987428944244e0698f4da01b796deb1d8b1c97bb988811994a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp313-cp313-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp313-cp313-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 8cecbaa28e0e8c20a88bce8c9cc9c7be21dd9e4c9fcf3b7ffba8222d1aa509b0
MD5 d9dd83cbeec18637191b043989dcf003
BLAKE2b-256 da06364262a8ddce4780762c1dd0fad06fa7370c9b5d7cfbfec40ed4dae1685b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e9fa2de83eda0593e7dfd761f057fb60a6d990d7793e421254aa62551e2da6dc
MD5 2d4ddf98bbc39714e45f0f85f401d17c
BLAKE2b-256 3a06e3e05bf1610fea952a627bec94be2f1ffcc441632009d6886db9ffd049bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp313-cp313-macosx_13_0_arm64.macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp313-cp313-macosx_13_0_arm64.macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 31c2b5130015a70727766536525499579f348a3663a4dfd33d785f5ad958e0f5
MD5 4c3510f0acf1da377b25ff3e369f995d
BLAKE2b-256 1da0c090415f5b2ae385cce0154e72ed3d04534909088a363ac4ea51c6ed157d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a74672afc0d10d2d271ba2e781039aa8a8c9ca613c9fba5bc8b5567c08ca77e5
MD5 c44b368d450dec1ad390e45121420d84
BLAKE2b-256 9d533269c11d5fbb1ab636200854dfcc939ad69f0600afd90967257dd41ac3ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp312-cp312-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp312-cp312-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 72ab2d0d452d2da0b449843ff8cdfc86e6fb0daea66a88b924213de53ab44028
MD5 e0a0d0e1f00030f30a4424847c3d8c45
BLAKE2b-256 729443b01abc1b445270888537762a06b4052c7e6fcf70007a3c138163a44891

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 409b6e6610763ed3d82064ac142990c1a4fa61e637ade6b53d167526238a7db3
MD5 a20b65bc7c76556f0f9d42d6ca44beda
BLAKE2b-256 f8bde53a64aa1cf46468b9783d3468f3f05817f6fa094b86527ae4e5ea1e509a

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp312-cp312-macosx_13_0_arm64.macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp312-cp312-macosx_13_0_arm64.macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d071891fd6c2aaa3566475647b79627edd5da693815061b2f1d69e0703159a89
MD5 443af4a5f0a0faa63ea0c08900ea5009
BLAKE2b-256 4e0b7f7b5625233b8a0e453db81d98ef5833d1ff29452390b2c1ebbdcfbc3eb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 66376a646d4baafba3c840ee59861a9de51ee311bcb613069a28d83a65fd60a8
MD5 a24adb235bad30a538cd57213dfb9541
BLAKE2b-256 c3cc8414c8eed147b560e0a98447f16b80f042ee550f042c998fcccb92a0feb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp311-cp311-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 02524732c83ca991ed07dc8984db754029b2da97c4d3a1b503f11f09476ae5fe
MD5 21ed2a0ec3676425b2233eda292e5a1a
BLAKE2b-256 d88333705021357b3b0deb1e3adc2b5add2a021d21a83ef8c4f8ed90ff9f3c78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8be4df0ebe65f870e41e6e39decb3cfc6321932bc593e8502c12238c5b7fff10
MD5 540bbb82705ffc248d27ea2971979c14
BLAKE2b-256 c815b12e4cd3bfbbeef94c1609e187852f182b369d7280cb1b0da30a570c604b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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.24-cp311-cp311-macosx_13_0_arm64.macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for gllm_agents_binary-0.4.24-cp311-cp311-macosx_13_0_arm64.macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 936d45562a84379b45afdccaca214695aa996bc5b5c6929e65cb2c9fbd4fa5da
MD5 f8470df33ab281e729bae4b6b5f1ec39
BLAKE2b-256 759341aff892323e1ac3eb43f5988830e030aa80b08a4787e53a923209096e46

See more details on using hashes here.

Provenance

The following attestation bundles were made for gllm_agents_binary-0.4.24-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