Skip to main content

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

Project description

langchain-brime

PyPI Python Typed License

Brime API · Docs · LangChain guide · Python SDK · Issues

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

pip install langchain-brime

Python 3.9+. Sync and async. Fully typed (py.typed). SecretStr API keys. Actionable agent errors via handle_tool_error. 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 ≥ 1.4, < 2.0
  • Backed by brime Python SDK ≥ 0.2.0 (retry, request_id, typed error hierarchy)

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.2.0.tar.gz (12.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.2.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: langchain_brime-0.2.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for langchain_brime-0.2.0.tar.gz
Algorithm Hash digest
SHA256 eb31833e215e85ee369ee7583d0c9d9e5fca6e0227528989488c46cd7c1ea17d
MD5 398fb3c5f3aa903760e70dbe8fbcd36b
BLAKE2b-256 4f14269369bca5008bbfbabcb68d44f9e5c4e81951e4a21ba2264bedb0b8960d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: langchain_brime-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for langchain_brime-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e38a5b6555d1d67c0343ce0c8e19493978fb6c3e5808312df8c7c555b99aa781
MD5 d40c932497d40919d9e1bec0ae8ee1a0
BLAKE2b-256 0e3f44a882f954c687d6aac98c79902df5e66f9a4aab79e7745fa1dbaf561c03

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