google / google/adk-python-community

feat: Add LangExtract tool for structured information extraction

Abierto
#91 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
182
Forks
75
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

## 🔴 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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.