Strukturētu Datu Iegūšana ar LangSmith, Pydantic, LangChain un Claude 3.7 Sonnet: Praktiskais Kodēšanas Piemērs
Strukturētu datu iegūšana ar mūsdienīgiem rīkiem
Atklājiet strukturētu datu iegūšanas iespējas, izmantojot LangChain un Claude 3.7 Sonnet, pārveidojot neapstrādātu tekstu par rīcībā izmantojamiem ieguldījumiem. Šis pamācība koncentrējas uz LLM rīku izsaukumu izsekošanu, izmantojot LangSmith, ļaujot reāllaika atkļūdošanu un sistēmas veiktspējas uzraudzību. Mēs izmantojam Pydantic shēmas precīzai datu formatēšanai un LangChain elastīgo uzvedņu veidošanu, lai vadītu Claude darbību.
!pip install --upgrade langchain-core
!pip install langchain_anthropic
Lai konfigurētu LangSmith izsekošanu un atkļūdošanu, varat iestatīt vides mainīgos:
LANGSMITH_TRACING=True
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY="Jūsu API atslēga"
LANGSMITH_PROJECT="extraction_api"
Datu shēmas definēšana
Nākamais solis ir definēt shēmu informācijai, kuru vēlamies iegūt. Izmantosim Pydantic modeļus, lai izveidotu strukturētu personas attēlojumu:
from typing import Optional
from pydantic import BaseModel, Field
class Person(BaseModel):
"""Informācija par personu."""
name: Optional[str] = Field(default=None, description="Personas vārds")
hair_color: Optional[str] = Field(
default=None, description="Personas matu krāsa, ja zināma"
)
height_in_meters: Optional[str] = Field(
default=None, description="Augums metros"
)</code></pre></div></div>
Uzvednes veidnes konfigurēšana
Tagad definēsim uzvednes veidni, kas norāda Claude, kā veikt datu iegūšanas uzdevumu:
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
prompt_template = ChatPromptTemplate.from_messages(
[
(
"system",
"Jūs esat eksperta datu iegūšanas algoritms. "
"Iegūstiet tikai atbilstošu informāciju no teksta. "
"Ja nezināt pieprasītā atribūta vērtību, "
"atgrieziet null šim atribūtam.",
),
("human", "{text}"),
]
)
Modeļa inicializēšana
Inicializēsim Claude modeli, kas veiks mūsu informācijas iegūšanu:
import getpass
import os
if not os.environ.get("ANTHROPIC_API_KEY"):
os.environ["ANTHROPIC_API_KEY"] = getpass.getpass("Ievadiet Anthropic API atslēgu: ")
from langchain.chat_models import init_chat_model
llm = init_chat_model("claude-3-7-sonnet-20250219", model_provider="anthropic")
Konfigurēsim modeli, lai tas atgrieztu strukturētu izvadi atbilstoši mūsu shēmai:
structured_llm = llm.with_structured_output(schema=Person)
Sistēmas testēšana
Pārbaudīsim mūsu datu iegūšanas sistēmu ar vienkāršu piemēru:
text = "Alans Smitss ir 6 pēdu garš un viņam ir blondi mati."
prompt = prompt_template.invoke({"text": text})
result = structured_llm.invoke(prompt)
print(result)
Tagad izmēģināsim sarežģītāku piemēru:
from typing import List
class Data(BaseModel):
"""Konteineris iegūtai informācijai par personām."""
people: List[Person] = Field(default_factory=list, description="Personu saraksts, kas minēts tekstā")
structured_llm = llm.with_structured_output(schema=Data)
text = "Mani sauc Džefs, man ir melni mati un es esmu 6 pēdu garš. Annai ir tāda pati matu krāsa kā man."
prompt = prompt_template.invoke({"text": text})
result = structured_llm.invoke(prompt)
print(result)
Šis pamācība parāda, kā izveidet strukturētu informācijas iegūšanas sistēmu, kas pārveido nestrukturētu tekstu par organizētiem datiem par personām. Pieeja izmanto Pydantic shēmas, pielāgotas uzvednes un piemēru virzītu uzlabošanos, neprasot specializētas apmācības pipelīnes.
Atrast Colab piezīmju grāmatu. Neaizmirstiet sekot mums Twitter un pievienoties mūsu Telegram kanālam un LinkedIn grupai. Pievienojieties arī mūsu 85k+ ML SubReddit.
https://www.marktechpost.com/