google / google/adk-python-community

feat: Add LangExtract tool for structured information extraction

Open
#91 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.