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

No one assigned

    Labels

    community repo[Community] FRs/issues well suited for google/adk-python-community repositorytools[Component] This issue is related to tools

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions