Skip to main content

LangChain integration for the Brime API (search · extract · research) — tools and retriever

Project description

langchain-brime

LangChain meets the live web. Drop the Brime API into any LangChain agent, chain, or RAG pipeline — as four typed tools and a retriever you can plug in unchanged.

pip install langchain-brime

Python 3.9+. Sync and async. Fully typed (py.typed). Passes the official LangChain ToolsUnitTests compliance suite.

What you get

Class Type What it does
BrimeSearch BaseTool Fast SERP search with snippets + synthesised answer.
BrimeExtract BaseTool Any URL → clean markdown (HTML / PDF / DOCX / SPA).
BrimeResearch BaseTool Multi-round agent research with citations.
BrimeRetriever BaseRetriever Live-web retriever for RAG — returns LangChain Documents.

One API key powers all four. One set of tuned defaults. No knobs to babysit.

30 seconds

from langchain.agents import create_agent
from langchain_brime import BrimeSearch, BrimeExtract

agent = create_agent(
    model="anthropic:claude-3-5-haiku-latest",
    tools=[BrimeSearch(), BrimeExtract()],
    system_prompt="You are a research assistant.",
)

result = agent.invoke({
    "messages": [{"role": "user", "content": "What is BM25 ranking? Cite sources."}],
})
print(result["messages"][-1].content)

RAG without the RAG plumbing

BrimeRetriever returns standard LangChain Documents — drop it into any retrieval chain and you're querying the live web with BM25-ranked chunks:

from langchain_brime import BrimeRetriever
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain.chat_models import init_chat_model

retriever = BrimeRetriever(k=5)
llm = init_chat_model("anthropic:claude-3-5-haiku-latest")

prompt = ChatPromptTemplate.from_template(
    "Context:\n{context}\n\nQuestion: {question}\n\nAnswer with citations."
)
chain = ({"context": retriever, "question": RunnablePassthrough()} | prompt | llm)

print(chain.invoke("How does BM25 weight term frequency?").content)

Each Document carries page_content (ranked chunk) and rich metadata: url, title, score, published_date, source="brime".

Async, end-to-end

import asyncio
from langchain_brime import BrimeSearch

async def main():
    result = await BrimeSearch().ainvoke({"query": "python async io patterns"})
    print(result)

asyncio.run(main())

Every tool has _arun. The retriever has _aget_relevant_documents. No surprises.

Authentication

export BRIME_API_KEY="sk-brime-..."
BrimeSearch()                        # uses BRIME_API_KEY
BrimeSearch(api_key="sk-brime-...")  # explicit
BrimeSearch(base_url="https://...")  # staging override (or BRIME_BASE_URL)

Get a key at brime.dev — free tier: 1,000 credits/month, no card.

Tool reference

BrimeSearch

Field Default Notes
query (required) Natural-language query
topic "general" general · news · finance (recency hint)
max_results 5 1–20
time_range None day · week · month · year

Returns a markdown string with a synthesised answer plus a Sources: list.

BrimeExtract

Field Default Notes
urls (req.) List of URLs (1–10)
include_metadata False Add extra metadata fields per result

Returns markdown with a ## <url> heading per page, plus a ## Failed URLs block if any failed.

BrimeResearch

Field Default Notes
query (required) Research question
topic "general" Recency hint
max_results 5 Sources per round, 1–20

Single tuned multi-round flow (~30–90 s) with cited synthesis.

BrimeRetriever

Field Default Notes
k 5 Max documents (1–20)
topic "general" Recency hint
time_range None Recency window
domains None Domain allowlist
exclude_domains None Domain denylist
include_answer False Skip the LLM answer when used purely for retrieval

Why this instead of writing your own wrapper?

  • One package, four classes. Search, extract, research, and retriever — all sharing one HTTP client (brime SDK).
  • Idempotency, handled. Auto Idempotency-Key for extract (Brime API requirement, easy to miss).
  • Async parity throughout. No partially-async surface area.
  • LangChain-tested. Passes the official ToolsUnitTests compliance suite (args schema serialisable, async parity, no override violations).

Compatibility

  • Python 3.9+
  • langchain-core 0.3 – 1.x
  • Backed by brime Python SDK ≥ 0.1.0

Links

License

MIT © Brime

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_brime-0.1.0.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_brime-0.1.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file langchain_brime-0.1.0.tar.gz.

File metadata

  • Download URL: langchain_brime-0.1.0.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for langchain_brime-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0be609bf9999ea0869ba991d590fd86e31bb9573d2eb14ae04cb7ecef59f8c80
MD5 a781b2da9ded504207b42eaa404301c4
BLAKE2b-256 d298f575f75ad1bb8b881f4f6d63e2979e0485d59152de2948614dfa8f448d05

See more details on using hashes here.

File details

Details for the file langchain_brime-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_brime-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 221dce9e43b933103a2b53d75645f86ddcf41c109ca59501de0f78f492f5ad3a
MD5 d9e87489bb431c1c64c3991bbb0f0aa2
BLAKE2b-256 c408268805a88cdaf2b6f44299ab73d1471ecec6ad8fd7550a20d52c47e0335f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page