@deepcitation/deepcitation-js
v1.1.50
Published
DeepCitation JavaScript SDK for deterministic AI citation verification
Maintainers
Readme
@deepcitation/deepcitation-js
Instantly trustworthy AI content with eliminated hallucination risk.
Documentation · Get API Key · Examples
Overview
LLMs hallucinate citations and cite pages that don't exist. Citations alone are not enough.
DeepCitation solves this by deterministically verifying every citation against your sources. We provide visual proof for every claim, making content instantly trustworthy and safer to present to users.
Before: "Recent results indicate 35% EF [1]" → ❓ Did the LLM make this up?
After: "Recent results indicate 35% EF [1]" → ✅ Verified on page 1, line 12 (with screenshot)Installation
npm install @deepcitation/deepcitation-jsDocumentation
Full documentation is available at deepcitation.com/docs.
Quick Start
DeepCitation works in three steps: Pre-Prompt, Post-Prompt, and Display.
Step 1: Pre-Prompt
Upload attachments and enhance your prompt with citation instructions.
import { DeepCitation, wrapCitationPrompt } from "@deepcitation/deepcitation-js";
const deepcitation = new DeepCitation({ apiKey: process.env.DEEPCITATION_API_KEY });
// Upload source files
const { fileDataParts, deepTextPromptPortion } = await deepcitation.prepareFiles([
{ file: pdfBuffer, filename: "report.pdf" },
]);
// Wrap prompts with citation instructions
const { enhancedSystemPrompt, enhancedUserPrompt } = wrapCitationPrompt({
systemPrompt: "You are a helpful assistant...",
userPrompt: "Analyze this document",
deepTextPromptPortion,
});
// Call your LLM
const response = await llm.chat({
messages: [
{ role: "system", content: enhancedSystemPrompt },
{ role: "user", content: enhancedUserPrompt },
],
});Step 2: Post-Prompt
Verify citations against the attachments.
const result = await deepcitation.verify({
llmOutput: response.content,
});
// result.verifications contains verification status + visual proof
const { verifications } = result;Step 3: Display
Parse the LLM output and render verified citations inline with React components.
import { CitationComponent } from "@deepcitation/deepcitation-js/react";
import { parseCitation, generateCitationKey } from "@deepcitation/deepcitation-js";
import "@deepcitation/deepcitation-js/react/styles.css";
function Response({ llmOutput, verifications }) {
const renderWithCitations = (text: string) => {
const parts = text.split(/(<cite\s+[^>]*\/>)/g);
return parts.map((part, index) => {
if (part.startsWith("<cite")) {
const { citation } = parseCitation(part);
const citationKey = generateCitationKey(citation);
return (
<CitationComponent
key={index}
citation={citation}
verification={verifications[citationKey]}
/>
);
}
return <span key={index}>{part}</span>;
});
};
return <div>{renderWithCitations(llmOutput)}</div>;
}Examples
Check out the examples directory for complete, runnable examples:
- basic-verification – Core 3-step workflow
- nextjs-ai-sdk – Full-stack Next.js chat app
cd examples/basic-verification
npm install
cp .env.example .env # Add your API keys
npm run start:openaiSupported Formats
- Documents: PDF (Text & Scanned), DOCX, XLSX, PPTX, HTML
- Images: JPG, PNG, TIFF, WebP, HEIC
- Web: Public URLs
Support
- Feature requests: GitHub Discussions
- Bug reports: GitHub Issues
Contributing
We welcome contributions! Please start a discussion in GitHub Discussions before submitting a pull request.
License
MIT License - see LICENSE for details.
