這是 LangExtract 的非官方 Node.js SDK。它與 Google 沒有關聯或認可。有關官方 Python 函式庫,請訪問 官方 GitHub 儲存庫.
使用 npm 或 yarn 安裝 LangExtract Node.js SDK:
# npm
npm install langextract
# yarn
yarn add langextract
# pnpm
pnpm add langextract
透過這個簡單的範例開始在 Node.js 中使用 LangExtract:
使用 TypeScript 從文字中擷取資訊:
import { extract, ExampleData } from "langextract";
const examples: ExampleData[] = [
{
text: "John Smith is 30 years old and works at Google.",
extractions: [
{
extractionClass: "person",
extractionText: "John Smith",
attributes: {
age: "30",
employer: "Google"
}
}
]
}
];
async function extractPersonInfo() {
const result = await extract("Alice Johnson is 25 and works at Microsoft.", {
promptDescription: "Extract person information including name, age, and employer",
examples: examples,
modelType: "gemini",
apiKey: process.env.LANGEXTRACT_API_KEY
});
console.log(result.extractions);
}
為 Gemini 等雲端模型設定您的 API 金鑰:
# .env 檔案
LANGEXTRACT_API_KEY=your-api-key-here
SDK 支援多個 LLM 提供商:
從文字中擷取資訊的主要方法
async function extract(
text: string,
options: {
promptDescription: string;
examples: ExampleData[];
modelType: "gemini" | "openai" | "ollama";
apiKey?: string;
modelId?: string;
}
): Promise<ExtractionResult>
產生擷取結果的互動式 HTML 視覺化
function visualize(
results: ExtractionResult[],
options?: {
theme?: "light" | "dark";
highlightColors?: string[];
}
): string
平行處理多個文件
async function batchExtract(
documents: string[],
options: ExtractOptions & {
concurrency?: number;
onProgress?: (completed: number, total: number) => void;
}
): Promise<ExtractionResult[]>
從簡單文字中擷取實體
const result = await extract("The product costs $99.99", {
promptDescription: "Extract product price",
examples: [{
text: "Price: $50",
extractions: [{
extractionClass: "price",
extractionText: "$50"
}]
}],
modelType: "gemini"
});
使用屬性和自訂擷取類別
const examples = [{
text: "Dr. Smith prescribed 500mg aspirin",
extractions: [{
extractionClass: "medication",
extractionText: "aspirin",
attributes: {
dosage: "500mg",
prescriber: "Dr. Smith"
}
}]
}];
高效處理多個文件
const documents = [
"Document 1 content...",
"Document 2 content...",
"Document 3 content..."
];
const results = await batchExtract(documents, {
promptDescription: "Extract entities",
examples: examples,
modelType: "gemini",
concurrency: 3,
onProgress: (done, total) => {
console.log(`Progress: ${done}/${total}`);
}
});
產生並儲存互動式視覺化
const html = visualize(results, {
theme: "light",
highlightColors: ["#3B82F6", "#10B981", "#F59E0B"]
});
// Save to file
import { writeFileSync } from "fs";
writeFileSync("results.html", html);
包含型別定義的完整 TypeScript 支援:
正確的錯誤處理模式:
處理 API 錯誤和驗證失敗
try {
const result = await extract(text, options);
console.log("Extraction successful:", result);
} catch (error) {
if (error.code === "INVALID_API_KEY") {
console.error("Invalid API key provided");
} else if (error.code === "RATE_LIMIT_EXCEEDED") {
console.error("Rate limit exceeded, retry after:", error.retryAfter);
} else if (error.code === "VALIDATION_ERROR") {
console.error("Validation error:", error.details);
} else {
console.error("Unexpected error:", error.message);
}
}