Skip to main content

Documentation Index

Fetch the complete documentation index at: https://runcrate.ai/docs/llms.txt

Use this file to discover all available pages before exploring further.

Summarize long-form content — articles, meeting transcripts, research papers, support tickets — using open-source and frontier models through a single API endpoint.
ModelContextBest for
DeepSeek-V3128K tokensGeneral-purpose summaries, cost-effective
Gemini 2.5 Flash1M tokensVery long documents, research papers

Single-document summary

from runcrate import Runcrate

client = Runcrate(api_key="rc_live_YOUR_API_KEY")

article = open("article.txt").read()

response = client.models.chat_completion(
    model="deepseek-ai/DeepSeek-V3",
    messages=[
        {"role": "system", "content": "Return a 3–5 sentence summary capturing the key points."},
        {"role": "user", "content": f"Summarize this article:\n\n{article}"},
    ],
    max_tokens=512,
    temperature=0.3,
)

print(response.choices[0].message.content)

Structured summary with key points

import { runcrate } from '@runcrate/ai';
import { generateText, Output } from 'ai';
import { z } from 'zod';

const SummarySchema = z.object({
  title: z.string().describe('A short title for the content'),
  summary: z.string().describe('A 2–3 sentence overview'),
  keyPoints: z.array(z.string()).describe('3–5 bullet points'),
  sentiment: z.enum(['positive', 'negative', 'neutral', 'mixed']),
});

const { output } = await generateText({
  model: runcrate('deepseek-ai/DeepSeek-V3'),
  output: Output.object({ schema: SummarySchema }),
  prompt: `Analyze and summarize this text:\n\n${articleText}`,
});

console.log(output.title);
console.log(output.keyPoints);

Long documents with Gemini Flash

For documents exceeding 128K tokens — full research papers, legal contracts — use Gemini 2.5 Flash with its 1M-token context window:
from runcrate import Runcrate

client = Runcrate(api_key="rc_live_YOUR_API_KEY")

long_document = open("research-paper.txt").read()

response = client.models.chat_completion(
    model="google/gemini-2.5-flash",
    messages=[
        {"role": "system", "content": "Summarize this research paper. Include: objective, methodology, key findings, and conclusions."},
        {"role": "user", "content": long_document},
    ],
    max_tokens=1024,
)

print(response.choices[0].message.content)

Batch summarization

from runcrate import Runcrate
from concurrent.futures import ThreadPoolExecutor

client = Runcrate(api_key="rc_live_YOUR_API_KEY")

documents = [
    {"id": "mtg-01", "text": "Meeting notes from Monday standup..."},
    {"id": "mtg-02", "text": "Product review meeting discussion..."},
    {"id": "mtg-03", "text": "Quarterly planning session notes..."},
]

def summarize(doc):
    response = client.models.chat_completion(
        model="deepseek-ai/DeepSeek-V3",
        messages=[
            {"role": "system", "content": "Summarize in 3 bullet points. Include action items."},
            {"role": "user", "content": doc["text"]},
        ],
        max_tokens=256,
        temperature=0.2,
    )
    return {"id": doc["id"], "summary": response.choices[0].message.content}

with ThreadPoolExecutor(max_workers=5) as pool:
    results = list(pool.map(summarize, documents))

for r in results:
    print(f"\n--- {r['id']} ---\n{r['summary']}")

Tips

  • Lower temperature (0.2–0.3) produces more faithful summaries.
  • DeepSeek-V3 is the best cost-to-quality ratio for most summarization tasks.
  • Gemini 2.5 Flash is the choice when the source document exceeds 128K tokens.

Next steps