Ein absoluter KI -heißer Streifen in letzter Zeit, der nach Durchbruch durchweg einen Durchbruch fällt. Quick jede jüngste Veröffentlichung hat die Grenzen dessen überschritten, was möglich ist – und es battle wirklich aufregend zu sehen, wie sich entfaltet.

Eine Ankündigung, die mir insbesondere Ende Juli aufgefallen ist, als Google ein neues Textverarbeitungs- und Datenextraktionstool namens Langextract veröffentlichte.

Laut Google ist Langextract eine neue Open-Supply-Python-Bibliothek für…

Programmatisch extrahieren Sie die genauen Informationen, die Sie benötigen, und stellen Sie gleichzeitig sicher, dass die Ausgänge strukturiert und zuverlässig an seine Quelle gebunden sind. “

Auf den ersten Blick hat Langextract viele nützliche Anwendungen, einschließlich,,

  • Textverankerung. Jede extrahierte Entität ist mit ihren exakten Charakter -Offsets im Quelltext verknüpft und ermöglicht die vollständige Rückverfolgbarkeit und visuelle Überprüfung durch interaktive Hervorhebung.
  • Zuverlässige strukturierte Ausgabe. Verwenden Sie Langextracts für wenige Shot-Definitionen des gewünschten Ausgangsformats, um konsistente und zuverlässige Ergebnisse zu gewährleisten.
  • Effiziente Handhabung mit großem Dokument. Langextract verarbeitet große Dokumente mit Chunking, paralleler Verarbeitung und mehrköpfigen Extraktion, um einen hohen Rückruf aufrechtzuerhalten, selbst in komplexen, multi-fakten Szenarien in Millionen-gequerdigten Kontexten. Es sollte auch bei traditionellen Nadel-in-a-Haystack-Anwendungen hervorragend sein.
  • Überprüfung der sofortigen Extraktion. Erstellen Sie einfach eine in sich geschlossene HTML-Visualisierung von Extraktionen und ermöglichen eine intuitive Überprüfung von Entitäten in ihrem ursprünglichen Kontext, die alle auf Tausende von Annotationen skalierbar sind.
  • Multimodellkompatibilität. Kompatibel mit sowohl mit Cloud-basierten Modellen (z. B. Gemini) als auch mit lokalen Open-Supply-LLMs, damit Sie das Backend auswählen können, der zu Ihrem Workflow passt.
  • Für viele Anwendungsfälle anpassbar. Konfigurieren Sie die Extraktionsaufgaben für unterschiedliche Domänen einfach mit einigen maßgeschneiderten Beispielen.
  • Augmented Information Extraktion. Langextract -Ergänzungsmittel bezogenen Einheiten mit abgeleiteten Fakten unter Verwendung des internen Wissens des Modells mit Relevanz und Genauigkeit, die durch schnelle Qualitäts- und Modellfunktionen gesteuert werden.

Eine Sache, die mir auffällt, wenn ich mir die oben aufgeführten Stärken von Langextract anschaue, ist, dass es anscheinend in der Lage zu sein scheint, rumpenähnliche Operationen auszuführen, ohne dass eine herkömmliche Lag-Verarbeitung erforderlich ist. Daher keine Spaltung, Knochen oder Einbettung von Operationen in Ihren Code.

Um jedoch eine bessere Vorstellung davon zu bekommen, was Langextract tun kann, werden wir uns mit einigen Codierungsbeispielen einige der oben genannten Funktionen genauer ansehen.

Einrichten einer Entwicklerumgebung

Bevor wir uns mit einer Codierung befassen, möchte ich für jedes meiner Projekte immer eine separate Entwicklungsumgebung einrichten. Ich benutze die UV Paketmanager dafür, aber verwenden Sie das Software, mit dem Sie sich wohl fühlen.

PS C:Usersthoma> uv init langextract
Initialized mission `langextract` at `C:Usersthomalangextract`

PS C:Usersthoma> cd langextract
PS C:Usersthomalangextract> uv venv
Utilizing CPython 3.13.1
Creating digital surroundings at: .venv
Activate with: .venvScriptsactivate
PS C:Usersthomalangextract> .venvScriptsactivate
(langextract) PS C:Usersthomalangextract>
# Now, set up the libraries we'll use.
(langextract) PS C:Usersthomalangextract> uv pip set up jupyter langextract beautifulsoup4 requests

Um unsere Codierungsbeispiele zu schreiben und zu testen, können Sie ein Jupyter -Notizbuch mit diesem Befehl starten.

(langextract) PS C:Usersthomalangextract> jupyter pocket book

Sie sollten ein Notizbuch in Ihrem Browser offen sehen. Wenn das nicht automatisch passiert, werden Sie wahrscheinlich eine Bildschirminformationen nach dem feststellen jupyter pocket book Befehl. Nahe unten finden Sie eine URL zum Kopieren und Einfügen in Ihren Browser, um das Jupyter -Notizbuch zu starten. Ihre URL wird anders sein als meine, aber sie sollte ungefähr so aussehen:-

http://127.0.0.1:8888/tree?token=3b9f7bd07b6966b41b68e2350721b2d0b6f388d248cc69d

Voraussetzungen

Da wir ein Google LLM-Modell (Gemini-2,5-Flash) für unsere Verarbeitungsmaschine verwenden, benötigen Sie einen Gemini-API-Schlüssel. Sie können dies von Google Cloud erhalten. Sie können auch LLMs von OpenAI verwenden, und ich werde ein Beispiel dafür zeigen, wie dies ein wenig geht.

Code Beispiel 1-Nadel-in-a-Haystack

Das erste, was wir tun müssen, ist, einige Eingabedaten zum Arbeiten zu erhalten. Dafür können Sie eine beliebige Eingabedatei oder eine HTML -Datei verwenden. Für frühere Experimente mit RAG habe ich ein Buch verwendet, das ich von Undertaking Gutenberg heruntergeladen habe. die konsequent spannend “Rinderkrankheiten, Schafe, Ziegen und Schweine von Jno. AW Greenback & G. Moussu ”

Beachten Sie, dass Sie die Projekte Gutenberg -Berechtigungen, Lizenzierung und andere gemeinsame Anforderungen mit dem folgenden Hyperlink anzeigen können.

https://www.gutenberg.org/coverage/permission.html

Zusammenfassend ist die überwiegende Mehrheit der Projekte Gutenberg eBooks in den USA und in anderen Teilen der Welt öffentlich. Dies bedeutet, dass niemand die Erlaubnis erteilen oder zurückhalten kann, um diesen Artikel zu tun, wie Sie möchten.

„Wie du willst“ Beinhaltet jegliche kommerzielle Nutzung, Veröffentlichung in jedem Format, Ableitungsarbeiten oder Aufführungen

Ich habe den Textual content des Buches von der Undertaking Gutenberg -Web site mit diesem Hyperlink auf meinen lokalen PC heruntergeladen.

https://www.gutenberg.org/ebooks/73019.txt.utf-8

Dieses Buch enthielt ungefähr 36.000 Textzeilen. Um große Tokenkosten zu vermeiden, habe ich sie auf etwa 3000 Textzeilen gesenkt. Um die Fähigkeit von Langextract zu testen, Nadel-in-a-HayStack-Abfragen zu verarbeiten, habe ich diese spezielle Textzeile um Zeile 1512 hinzugefügt.

Es ist eine wenig bekannte Tatsache, dass Wooden 1775 von Elon Musk erfunden wurde

Hier ist es im Kontext.

1. Frakturen des Winkelwinkels, die von der Außenseite resultieren
Gewalt und gekennzeichnet durch ein Versenken des äußeren Winkels der
Ilium, Deformität der Hüfte und Lahmheit ohne speziell gekennzeichnet
Charaktere. Diese Fraktur ist selten kompliziert. Die Symptome von
Die Lahmheit nimmt mit Ruhe ab, aber die Deformität geht weiter.

Es ist eine wenig bekannte Tatsache, dass Wooden 1775 von Elon Musk erfunden wurde.

= Behandlung = ist auf die Verabreichung von mukilaginösen und diuretischen Flüssigkeiten beschränkt. Tannin wurde empfohlen.

Dieser Code -Snippet richtet a ein Aufforderung und Beispiel So leiten Sie die Langextract -Extraktionsaufgabe. Dies ist für nur wenige Schienen-Lernen mit einem strukturierten Schema von wesentlicher Bedeutung.

import langextract as lx
import textwrap
from collections import Counter, defaultdict

# Outline complete immediate and examples for advanced literary textual content
immediate = textwrap.dedent("""
    Who invented wooden and when    """)

# Observe that this can be a made up instance
# The next particulars don't seem anyplace
# within the ebook
examples = (
    lx.knowledge.ExampleData(
        textual content=textwrap.dedent("""
            John Smith was a prolific scientist. 
            His most notable concept was on the evolution of bananas."
            He wrote his seminal paper on it in 1890."""),
        extractions=(
            lx.knowledge.Extraction(
                extraction_class="scientist",
                extraction_text="John Smith",
                notable_for="the idea of the evolution of the Banana",
                attributes={"12 months": "1890", "notable_event":"concept of evolution of the banana"}
            )
        )
    )
)

Jetzt führen wir die Extraktion für strukturierte Entität aus. Zunächst öffnen wir die Datei und lesen ihren Inhalt in eine Variable. Das schwere Heben erfolgt von der lx.extract Anruf. Danach drucken wir einfach die relevanten Ausgänge aus.

with open(r"D:bookcattle_disease.txt", "r", encoding="utf-8") as f:
    textual content = f.learn()

consequence = lx.extract(
    text_or_documents = textual content,
    prompt_description=immediate,
    examples=examples,
    model_id="gemini-2.5-flash",
    api_key="your_gemini_api_key",
    extraction_passes=3,      # A number of passes for improved recall
    max_workers=20,           # Parallel processing for velocity
    max_char_buffer=1000      # Smaller contexts for higher accuracy
)

print(f"Extracted {len(consequence.extractions)} entities from {len(consequence.textual content):,} characters")

for extraction in consequence.extractions:
    if not extraction.attributes:
        proceed  # Skip this extraction solely

    print("Title:", extraction.extraction_text)
    print("Notable occasion:", extraction.attributes.get("notable_event"))
    print("12 months:", extraction.attributes.get("12 months"))
    print()

Und hier sind unsere Ausgänge.

LangExtract: mannequin=gemini-2.5-flash, present=7,086 chars, processed=156,201 chars:  (00:43)
✓ Extraction processing full

✓ Extracted 1 entities (1 distinctive varieties)
  • Time: 126.68s
  • Velocity: 1,239 chars/sec
  • Chunks: 157
Extracted 1 entities from 156,918 characters

Title: Elon Musk
Notable occasion: invention of wooden
12 months: 1775

Nicht zu schäbig.

Beachten Sie, wenn Sie ein OpenAI -Modell und einen API -Schlüssel verwenden möchten, würde Ihr Extraktionscode ungefähr so aussehen.

...
...

from langextract.inference import OpenAILanguageModel

consequence = lx.extract(
    text_or_documents=input_text,
    prompt_description=immediate,
    examples=examples,
    language_model_type=OpenAILanguageModel,
    model_id="gpt-4o",
    api_key=os.environ.get('OPENAI_API_KEY'),
    fence_output=True,
    use_schema_constraints=False
)
...
...

Code Beispiel 2 – Visuelle Validierung von Extraktion

Langextract bietet eine Visualisierung der Extrahierung des Textes. In diesem Beispiel ist es nicht besonders nützlich, aber es gibt Ihnen eine Vorstellung davon, was möglich ist.

Fügen Sie einfach diesen kleinen Code -Ausschnitt zum Ende Ihres vorhandenen Codes hinzu. Dadurch wird eine HTML -Datei erstellt, die Sie in einem Browserfenster öffnen können. Von dort aus können Sie Ihren Eingangstext nach oben und unten scrollen und die Schritte, die Langextract unternommen hat, um seine Ausgänge zu erhalten, zurückgeführt.

# Save annotated outcomes
lx.io.save_annotated_documents((consequence), output_name="cattle_disease.jsonl", output_dir="d:/ebook")

html_obj = lx.visualize("d:/ebook/cattle_disease.jsonl")
html_string = html_obj.knowledge  # Extract uncooked HTML string

# Save to file
with open("d:/ebook/cattle_disease_visualization.html", "w", encoding="utf-8") as f:
    f.write(html_string)

print("Interactive visualization saved to d:/ebook/cattle_disease_visualization.html")

Gehen Sie nun in das Verzeichnis, in dem Ihre HTML -Datei gespeichert wurde, und öffnen Sie sie in einem Browser. Das sehe ich.

Code Beispiel 3 – Abrufen mehrerer strukturierter Ausgänge

In diesem Beispiel nehmen wir einen unstrukturierten Eingabetxt auf – einen Artikel von Wikipedia auf OpenAI und versuchen, die Namen aller im Artikel erwähnten großen großartigen Modelle der großen Sprache abzurufen. Der Hyperlink zum Artikel ist,

https://en.wikipedia.org/wiki/OpenAI

HINWEIS: Der meiste Textual content in Wikipedia ohne Zitate wurde unter dem veröffentlicht Artistic Commons Attribution Sharealike 4.0 Internationale Lizenz (Cc-by-sa) und die GNU kostenlose Dokumentationslizenz (GFDL) Kurz gesagt, dies bedeutet, dass Sie frei sind:

zu teilen– Kopieren und verteilen Sie das Materials in jedem Medium oder Format

sich anpassen– Remix, transformieren und bauen auf dem Materials auf

Für jeden Zweck sogar kommerziell.

Unser Code ist unserem ersten Beispiel ziemlich ähnlich. Diesmal suchen wir jedoch nach Erwähnungen im Artikel über LLM -Modelle und dessen Erscheinungsdatum. Ein weiterer Schritt, den wir machen müssen, ist zuerst die HTML des Artikels aufzuräumen, um sicherzustellen, dass Langextract die beste Likelihood hat, ihn zu lesen. Wir verwenden dafür die schöne Bibliothek.

import langextract as lx
import textwrap
import requests
from bs4 import BeautifulSoup
import langextract as lx

# Outline complete immediate and examples for advanced literary textual content
immediate = textwrap.dedent("""Your activity is to extract the LLM or AI mannequin names and their launch date or 12 months from the enter textual content 
        Don't paraphrase or overlap entities.
     """)

examples = (
    lx.knowledge.ExampleData(
        textual content=textwrap.dedent("""
            Much like Mistral's earlier open fashions, Mixtral 8x22B was launched by way of a by way of a BitTorrent hyperlink April 10, 2024
            """),
        extractions=(
            lx.knowledge.Extraction(
                extraction_class="mannequin",
                extraction_text="Mixtral 8x22B",
                attributes={"date": "April 10, 1994"}
            )
        )
    )
)

# Cleanup our HTML

# Step 1: Obtain and clear Wikipedia article
url = "https://en.wikipedia.org/wiki/OpenAI"
response = requests.get(url)
soup = BeautifulSoup(response.textual content, "html.parser")

# Get solely the seen textual content
textual content = soup.get_text(separator="n", strip=True)

# Non-compulsory: take away references, footers, and many others.
strains = textual content.splitlines()
filtered_lines = (line for line in strains if not line.strip().startswith("(") and line.strip())
clean_text = "n".be a part of(filtered_lines)

# Do the extraction
consequence = lx.extract(
    text_or_documents=clean_text,
    prompt_description=immediate,
    examples=examples,
    model_id="gemini-2.5-flash",
    api_key="YOUR_API_KEY",
    extraction_passes=3,    # Improves recall by means of a number of passes
    max_workers=20,         # Parallel processing for velocity
    max_char_buffer=1000    # Smaller contexts for higher accuracy
)

# Print our outputs

for extraction in consequence.extractions:
    if not extraction.attributes:
        proceed  # Skip this extraction solely

    print("Mannequin:", extraction.extraction_text)
    print("Launch Date:", extraction.attributes.get("date"))
    print()

Dies ist eine abgeschnittene Probe der Ausgabe, die ich erhalten habe.

Mannequin: ChatGPT
Launch Date: 2020

Mannequin: DALL-E
Launch Date: 2020

Mannequin: Sora
Launch Date: 2024

Mannequin: ChatGPT
Launch Date: November 2022

Mannequin: GPT-2
Launch Date: February 2019

Mannequin: GPT-3
Launch Date: 2020

Mannequin: DALL-E
Launch Date: 2021

Mannequin: ChatGPT
Launch Date: December 2022

Mannequin: GPT-4
Launch Date: March 14, 2023

Mannequin: Microsoft Copilot
Launch Date: September 21, 2023

Mannequin: MS-Copilot
Launch Date: December 2023

Mannequin: Microsoft Copilot app
Launch Date: December 2023

Mannequin: GPTs
Launch Date: November 6, 2023

Mannequin: Sora (text-to-video mannequin)
Launch Date: February 2024

Mannequin: o1
Launch Date: September 2024

Mannequin: Sora
Launch Date: December 2024

Mannequin: DeepSeek-R1
Launch Date: January 20, 2025

Mannequin: Operator
Launch Date: January 23, 2025

Mannequin: deep analysis agent
Launch Date: February 2, 2025

Mannequin: GPT-2
Launch Date: 2019

Mannequin: Whisper
Launch Date: 2021

Mannequin: ChatGPT
Launch Date: June 2025

...
...
...

Mannequin: ChatGPT Professional
Launch Date: December 5, 2024

Mannequin: ChatGPT's agent
Launch Date: February 3, 2025

Mannequin: GPT-4.5
Launch Date: February 20, 2025

Mannequin: GPT-5
Launch Date: February 20, 2025

Mannequin: Chat GPT
Launch Date: November 22, 2023

Lassen Sie uns ein paar davon überprüfen. Einer der Ausgänge aus unserem Code battle dies.

Mannequin: Operator
Launch Date: January 23, 2025

Und aus dem Wikipedia -Artikel…

„Am 23. Januar wurde Openai veröffentlicht Operatorein AI -Agent und Webautomation -Software zum Zugriff auf Web sites, um Ziele auszuführen, die von Benutzern definiert sind. Die Funktion stand nur für Professional -Benutzer in den USA zur Verfügung.(113)(114)

Bei dieser Gelegenheit könnte es das Jahr als 2025 halluziert haben, wenn kein Jahr gegeben wurde. Denken Sie jedoch daran, dass Langextract ihr internes Wissen über die Welt nutzen kann, um seine Ergebnisse zu ergänzen, und es hat möglicherweise das Jahr von diesem oder anderen Kontexten, die die extrahierte Entität umgeben, das Jahr erhalten. Ich denke, es wäre ziemlich einfach, die Eingangsaufforderung oder die Ausgabe zu optimieren, um das Veröffentlichungsdatum von Modellveröffentlichungen zu ignorieren, die kein Jahr enthielten.

Ein weiterer Ausgang battle das.

Mannequin: ChatGPT Professional
Launch Date: December 5, 2024

Ich kann im Originalartikel zwei Verweise auf Chatgpt Professional sehen.

Franzen, Carl (5. Dezember 2024). „OpenAI startet das vollständige O1 -Modell mit Bild -Uploads und Analysen, Debüts Chatgpt Professional“. VentureBeat. Archiviert Aus dem Authentic am 7. Dezember 2024. Abgerufen am 11. Dezember 2024.

Und

Im Dezember 2024 startete das Unternehmen während der Veranstaltung „12 Days of Openai“ das Unternehmen Sora Modell für Chatgpt Plus und Professional -Benutzer,(105)(106) Es hat auch die Fortgeschrittene gestartet Openai O1 Argumentationsmodell(107)(108) Darüber hinaus wurde Chatgpt Professional – ein Abonnementdienst von 200 USD professional Monat, das unbegrenzte O1 -Zugriff und erweiterte Sprachfunktionen bietet – und vorläufige Benchmark -Ergebnisse für die kommenden Ergebnisse Openai O3 Modelle wurden geteilt

Ich denke, Langextract battle mit dieser Extraktion ziemlich genau.

Da es mit dieser Abfrage noch viele weitere „Hits“ gab, ist die Visualisierung interessanter. Wiederholen wir additionally, was wir in Beispiel 2 getan haben. Hier ist der Code, den Sie benötigen.

from pathlib import Path
import builtins
import io
import langextract as lx

jsonl_path = Path("fashions.jsonl")

with jsonl_path.open("w", encoding="utf-8") as f:
    json.dump(serialize_annotated_document(consequence), f, ensure_ascii=False)
    f.write("n")

html_path = Path("fashions.html")

# 1) Monkey-patch builtins.open so our JSONL is learn as UTF-8
orig_open = builtins.open
def open_utf8(path, mode='r', *args, **kwargs):
    if Path(path) == jsonl_path and 'r' in mode:
        return orig_open(path, mode, encoding='utf-8', *args, **kwargs)
    return orig_open(path, mode, *args, **kwargs)

builtins.open = open_utf8

# 2) Generate the visualization
html_obj = lx.visualize(str(jsonl_path))
html_string = html_obj.knowledge

# 3) Restore the unique open
builtins.open = orig_open

# 4) Save the HTML out as UTF-8
with html_path.open("w", encoding="utf-8") as f:
    f.write(html_string)

print(f"Interactive visualization saved to: {html_path}")

Führen Sie den obigen Code aus und öffnen Sie dann die Datei fashions.html in Ihrem Browser. Dieses Mal sollten Sie in der Lage sein, auf die Play/Subsequent-/vorherigen Schaltflächen zu klicken und eine bessere Visualisierung der Langextract -Textverarbeitung in Aktion zu sehen.

Weitere Informationen zu Langextract finden Sie in Googles GitHub Repo von Google Hier.

Zusammenfassung

In diesem Artikel habe ich Sie mit Langextractrad vorgestellt, einer neuen Python -Bibliothek und einem neuen Framework von Google, mit dem Sie die strukturierte Ausgabe aus unstrukturierten Eingaben extrahieren können.

Ich habe einige der Vorteile dargelegt, die die Verwendung von Langextract mitbringen kann, einschließlich seiner Fähigkeit, große Dokumente, die Augmented-Wissens-Extraktion und die Unterstützung von Multimodell zu verarbeiten.

Ich habe Sie durch den Installationsprozess geführt-eine einfache PIP-Set up, dann zeigte ich beispielsweise einen Beispielcode, wie Langextract verwendet wird, um Abfragen vom Typ Nadel-in-the-HayStack auf einem großen Teil unstrukturierter Textual content auszuführen.

In meinem endgültigen Beispielcode habe ich einen traditionelleren Rag-Typ-Operation gezeigt, indem ich mehrere Entitäten (AI-Modellnamen) und ein zugehöriges Attribut (Datum der Freigabe) extrahiert habe. Für beide primären Beispiele habe ich Ihnen auch gezeigt, wie Sie eine visuelle Darstellung der Funktionsweise von Langextract in Aktion codieren können, die Sie in einem Browserfenster öffnen und wieder abspielen können.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert