google / google/adk-python-community
feat: Add LangExtract tool for structured information extraction
- Dominant language
- Python
- Stars
- 182
- Forks
- 75
- PR merge metrics
- No merged PRs in 30d
Description
## 🔴 Required Information
### Is your feature request related to a specific problem?
ADK community lacks a native integration for [LangExtract](https://github.com/google/langextract) — Google's own library for extracting structured information from unstructured text using LLMs with precise source grounding. Users who want to use LangExtract within ADK agents currently have to manually wrap \`lx.extract()\` in a custom tool class with significant boilerplate.
### Describe the Solution You'd Like
Add a \`LangExtractTool\` to \`google.adk_community.tools\` that:
- Extends \`BaseTool\` with a clean function declaration exposing \`text\` and \`prompt_description\` as LLM-visible parameters
- Pre-configures extraction settings (examples, model_id, extraction_passes, etc.) at construction time
- Runs \`lx.extract()\` via \`asyncio.to_thread()\` to avoid blocking the event loop
- Includes a companion \`LangExtractToolConfig\` for easy programmatic configuration
**Usage:**
```python
from google.adk_community.tools import LangExtractTool
import langextract as lx
tool = LangExtractTool(
name='extract_entities',
description='Extract named entities from text.',
examples=[
lx.data.ExampleData(
text='John is a software engineer at Google.',
extractions=[
lx.data.Extraction(
extraction_class='person',
extraction_text='John',
attributes={'role': 'software engineer', 'company': 'Google'},
)
],
)
],
)
agent = Agent(model='gemini-2.5-flash', name='extraction_agent', tools=[tool])
```
### Impact on your work
Enables ADK agents to perform structured extraction (entities, attributes, relationships) from documents out of the box — a common use case for enterprise AI workflows. Since LangExtract is a Google library, having native ADK community support is a natural fit.
### Willingness to contribute
Yes — I have an implementation ready to submit as a PR.
---
## 🟡 Recommended Information
### Additional Context
- LangExtract repo: https://github.com/google/langextract
- Originally submitted to [adk-python#4549](https://github.com/google/adk-python/pull/4549) and redirected here by maintainers
Contributor guide
Research direction
Start in google.adk_community.tools and review the existing BaseTool integrations before examining the requested LangExtractTool and LangExtractToolConfig shape. Use the LangExtract repository and the lx.extract() API described in the issue as references. Done means agents can configure the tool, expose text and prompt_description, and perform extraction without blocking the event loop.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- ai, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100