A Haystack component for web search via the Brave Search API
Project description
haystack-brave-search
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97e74651d7fada2ecf8d6f0fba54e1058178ddbb9da38ad2aa37388cf8024a8b
|
|
| MD5 |
f90f6cb5149801bbb2b3aa0aace3725d
|
|
| BLAKE2b-256 |
a7f7178be3389a85ffefc615253e5034b1993730f3432d22b8d3fd07c26b1e9f
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6593ecf20117f97b55573a464db8201c796415eff26c7dfdeecfbef2bc7c2e58
|
|
| MD5 |
5499b48e35446ac758c8c147678c5c5d
|
|
| BLAKE2b-256 |
dc65c05e73428725433deab53184b2b14bb1dd6c4bcd93af5624c81ccda03db5
|