Skip to main content

A Haystack component for web search via the Brave Search API

Project description

haystack-brave-search

PyPI version Python versions License: MIT

A Haystack component for web search using the Brave Search API.

Installation

pip install haystack-brave-search

Requirements

  • Python 3.12+
  • A Brave Search API key

Usage

Standalone

from haystack_brave_search import BraveWebSearch

# Parameters set at initialisation are used as defaults for every call
searcher = BraveWebSearch(api_key="your-api-key", top_k=5, country="BE", language="en")
result = searcher.run(query="Haystack AI framework")

# Any parameter can be overridden at run time
result = searcher.run(query="Haystack AI framework", top_k=3, country="US", language="en")

for doc in result["documents"]:
    print(doc.meta["title"])
    print(doc.meta["url"])
    print(doc.content)

In a Haystack Pipeline

from haystack import Pipeline
from haystack.components.builders import PromptBuilder
from haystack_brave_search import BraveWebSearch

prompt_template = """
Given the following search results:
{% for doc in documents %}
- {{ doc.meta.title }}: {{ doc.content }}
{% endfor %}

Answer the question: {{ query }}
"""

pipe = Pipeline()
pipe.add_component("search", BraveWebSearch(api_key="your-api-key", top_k=5))
pipe.add_component("prompt", PromptBuilder(template=prompt_template))

pipe.connect("search.documents", "prompt.documents")

result = pipe.run({
    "search": {"query": "What is RAG?"},
    "prompt": {"query": "What is RAG?"}
})

# Override search parameters at run time without changing the component
result = pipe.run({
    "search": {"query": "What is RAG?", "top_k": 3, "country": "BE", "language": "en"},
    "prompt": {"query": "What is RAG?"}
})

print(result["prompt"]["prompt"])

With AsyncPipeline

from haystack import AsyncPipeline
from haystack_brave_search import BraveWebSearch

pipe = AsyncPipeline()
pipe.add_component("search", BraveWebSearch(api_key="your-api-key"))

Parameters

Initialisation (__init__)

Parameter Type Default Description
api_key str required Your Brave Search API key
top_k int 5 Default number of results to return
country str "ALL" Default country code to localise results (e.g. "BE", "GR")
language str "en" Default language code using ISO 639-1 (e.g. "en", "el")

Run time (run)

Parameter Type Default Description
query str required Search query
top_k int None Overrides the initialisation value for this call only
country str None Overrides the initialisation value for this call only
language str None Overrides the initialisation value for this call only

Run-time values take precedence over the defaults set at initialisation. Omitting a run-time parameter falls back to the initialisation value.

Output

The run() method returns a dict with a documents key containing a list of Haystack Document objects:

  • document.content — snippet/description of the result

  • document.meta["title"] — page title

  • document.meta["url"] — page URL

Environment Variable

You can avoid hardcoding the API key by using an environment variable:

import os
from haystack_brave_search import BraveWebSearch

searcher = BraveWebSearch(api_key=os.environ["BRAVE_API_KEY"])

License

MIT

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

haystack_brave_search-0.1.3.tar.gz (2.8 kB view details)

Uploaded Source

Built Distribution

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

haystack_brave_search-0.1.3-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file haystack_brave_search-0.1.3.tar.gz.

File metadata

  • Download URL: haystack_brave_search-0.1.3.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for haystack_brave_search-0.1.3.tar.gz
Algorithm Hash digest
SHA256 97e74651d7fada2ecf8d6f0fba54e1058178ddbb9da38ad2aa37388cf8024a8b
MD5 f90f6cb5149801bbb2b3aa0aace3725d
BLAKE2b-256 a7f7178be3389a85ffefc615253e5034b1993730f3432d22b8d3fd07c26b1e9f

See more details on using hashes here.

File details

Details for the file haystack_brave_search-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: haystack_brave_search-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for haystack_brave_search-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6593ecf20117f97b55573a464db8201c796415eff26c7dfdeecfbef2bc7c2e58
MD5 5499b48e35446ac758c8c147678c5c5d
BLAKE2b-256 dc65c05e73428725433deab53184b2b14bb1dd6c4bcd93af5624c81ccda03db5

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