Skip to content

feat: Add LangExtract tool integration for structured information extractionΒ #4548

@its-animay

Description

@its-animay

πŸ”΄ Required Information

Is your feature request related to a specific problem?

ADK currently has tool adapters for LangChain (LangchainTool) and CrewAI (CrewaiTool), but lacks a native integration for 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 FunctionTool or BaseTool subclass, which requires boilerplate and doesn't follow ADK conventions.

Describe the Solution You'd Like

Add a first-class LangExtractTool adapter in src/google/adk/tools/langextract_tool.py that:

  • Extends BaseTool with a custom 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 YAML-based agent configuration
  • Follows the same patterns as LangchainTool and CrewaiTool (ImportError handling, from_config(), etc.)

Impact on your work

This enables ADK agents to perform structured extraction (entities, attributes, relationships) from documents out of the box, which is a common use case for enterprise AI workflows. Since LangExtract is a Google library, having native ADK support is a natural fit.

Willingness to contribute

Yes β€” I have an implementation ready to submit as a PR.


🟑 Recommended Information

Proposed API / Implementation

import langextract as lx
from google.adk.tools.langextract_tool import LangExtractTool

tool = LangExtractTool(
    name='extract_entities',
    description='Extract named entities from text.',
    examples=[lx.data.ExampleData(...)],
    model_id='gemini-2.5-flash',
)

agent = Agent(model='gemini-2.5-flash', name='extraction_agent', tools=[tool])

Additional Context

Metadata

Metadata

Assignees

Labels

community repo[Community] FRs/issues well suited for google/adk-python-community repositoryneeds review[Status] The PR/issue is awaiting review from the maintainertools[Component] This issue is related to tools

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions