You've already forked adk-python
mirror of
https://github.com/encounter/adk-python.git
synced 2026-03-30 10:57:20 -07:00
657acfadbb
Merge https://github.com/google/adk-python/pull/3926 ### Link to Issue or Description of Change **1. Link to an existing issue (if applicable):** - Related: #3916 **2. Or, if no issue exists, describe the change:** **Problem:** While `DatabaseSessionService` already supports PostgreSQL through SQLAlchemy, there is no documentation or sample code showing users how to configure and use it. **Solution:** Add a comprehensive sample under `contributing/samples/postgres_session_service/` that demonstrates: - How to configure `DatabaseSessionService` with PostgreSQL - The auto-generated database schema (sessions, events, app_states, user_states tables) - Connection URL format and configuration options - A working sample agent with session persistence ### Testing Plan **Unit Tests:** - [x] I have added or updated unit tests for my change. - [x] All unit tests pass locally. This is a documentation-only change (new sample), so no new unit tests are required. Existing tests continue to pass. **Manual End-to-End (E2E) Tests:** Tested locally with the following steps: 1. Started PostgreSQL using `docker compose up -d` 2. Set environment variables: ```bash export POSTGRES_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/adk_sessions export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value project) export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=true ``` 3. Ran `pip install google-adk asyncpg greenlet` to install the required packages 4. Ran `python main.py` - session created successfully 5. Ran `python main.py` again - previous session resumed with event history 6. Verified tables and rows created in PostgreSQL (sessions, events, app_states, user_states) ### Checklist - [x] I have read the https://github.com/google/adk-python/blob/main/CONTRIBUTING.md document. - [x] I have performed a self-review of my own code. - [x] I have commented my code, particularly in hard-to-understand areas. - [x] I have added tests that prove my fix is effective or that my feature works. - [x] New and existing unit tests pass locally with my changes. - [x] I have manually tested my changes end-to-end. - [x] Any dependent changes have been merged and published in downstream modules. ### Additional context This PR adds documentation and a working sample for an already-supported feature. The DatabaseSessionService class already handles PostgreSQL through its DynamicJSON type decorator which uses JSONB for PostgreSQL. Files added: - contributing/samples/postgres_session_service/README.md - Comprehensive guide - contributing/samples/postgres_session_service/agent.py - Sample agent - contributing/samples/postgres_session_service/main.py - Usage example - contributing/samples/postgres_session_service/compose.yml - Local PostgreSQL setup - contributing/samples/postgres_session_service/\_\_init\_\_.py - Package init Co-authored-by: Liang Wu <wuliang@google.com> COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/3926 from hiroakis:feat-support-pg-for-conversation a5279d4fb2a63699f384c670928d77d882c25a25 PiperOrigin-RevId: 868816317
Contributing Resources
This folder hosts resources for ADK contributors, for example, testing samples etc.
Samples
Samples folder host samples to test different features. The samples are usually minimal and simplistic to test one or a few scenarios.
Note: This is different from the google/adk-samples repo, which hosts more complex e2e samples for customers to use or modify directly.
ADK project and architecture overview
The adk_project_overview_and_architecture.md describes the ADK project overview and its technical architecture from high-level.
This is helpful for contributors to understand the project and design philosophy. It can also be fed into LLMs for vibe-coding.