Contexte pour LLM
Requiert une clé API : Obtenir une à https://api.search.brave.com
Plan : Inclus dans le plan Search. Voir https://api-dashboard.search.brave.com/app/subscriptions/subscribe
L'API Brave LLM Context fournit du contenu web pré-extrait et classé par pertinence, optimisé pour ancrer les réponses des LLM dans des résultats de recherche en temps réel. Contrairement aux API de recherche web traditionnelles qui retournent des liens et des extraits, LLM Context extrait le contenu réel de la page — chunks de texte, tableaux, blocs de code et données structurées — afin que votre LLM ou agent IA puisse raisonner directement dessus.
LLM Context vs AI Grounding
| Fonctionnalité | LLM Context (ceci) | AI Grounding (answers) |
|---|---|---|
| Sortie | Contenu brut extrait pour VOTRE LLM | Réponses IA complètes avec citations |
| Interface | REST API (GET/POST) | Compatible OpenAI /chat/completions |
| Recherches | Une seule recherche par requête | Multi-recherche (recherche itérative) |
| Vitesse | Rapide (<1s) | Plus lent |
| Plan | Search | Answers |
| Endpoint | /res/v1/llm/context |
/res/v1/chat/completions |
| Idéal pour | Agents IA, pipelines RAG, appels d'outils | Interfaces de chat, mode recherche |
Endpoint
GET https://api.search.brave.com/res/v1/llm/context
POST https://api.search.brave.com/res/v1/llm/context
Authentification : en-tête X-Subscription-Token: <API_KEY>
En-têtes optionnels :
Accept-Encoding: gzip— Activer la compression gzip
Démarrage rapide
Requête GET
curl -s "https://api.search.brave.com/res/v1/llm/context?q=tallest+mountains+in+the+world" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}"
Requête POST (corps JSON)
curl -s --compressed -X POST "https://api.search.brave.com/res/v1/llm/context" \
-H "Accept: application/json" \
-H "Accept-Encoding: gzip" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"q": "tallest mountains in the world"}'
Avec Goggles (En ligne)
curl -s "https://api.search.brave.com/res/v1/llm/context" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-G \
--data-urlencode "q=rust programming" \
--data-urlencode 'goggles=$discard
$site=docs.rs
$site=rust-lang.org'
Paramètres
Paramètres de requête
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
q |
string | Oui | - | Requête de recherche (1-400 caractères, max 50 mots) |
country |
string | Non | US |
Pays de recherche (code pays à 2 lettres ou ALL) |
search_lang |
string | Non | en |
Préférence de langue (code langue 2+ caractères) |
count |
int | Non | 20 |
Max résultats de recherche à considérer (1-50) |
Paramètres de taille de contexte
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
maximum_number_of_urls |
int | Non | 20 |
Max URL en réponse (1-50) |
maximum_number_of_tokens |
int | Non | 8192 |
Tokens max environ dans le contexte (1024-32768) |
maximum_number_of_snippets |
int | Non | 50 |
Max extraits sur toutes les URL (1-100) |
maximum_number_of_tokens_per_url |
int | Non | 4096 |
Max tokens par URL individuelle (512-8192) |
maximum_number_of_snippets_per_url |
int | Non | 50 |
Max extraits par URL individuelle (1-100) |
Paramètres de filtrage et locaux
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
context_threshold_mode |
string | Non | balanced |
Seuil de pertinence pour inclure le contenu (strict/balanced/lenient) |
enable_local |
bool | Non | null |
Contrôle du rappel local (true/false/null, voir ci-dessous) |
goggles |
string/list | Non | null |
URL Goggle ou définition en ligne pour le classement personnalisé |
Directives de taille de contexte
| Type de tâche | count | max_tokens | Exemple |
|---|---|---|---|
| Factuel simple | 5 | 2 048 | « En quelle année Python a-t-il été créé ? » |
| Requêtes standard | 20 | 8 192 | « Bonnes pratiques pour les hooks React » |
| Recherche complexe | 50 | 16 384 | « Comparer les frameworks IA pour la production » |
Des fenêtres de contexte plus grandes fournissent plus d'informations mais augmentent la latence et le coût (de votre inférence). Commencez par les valeurs par défaut et ajustez.
Modes de seuil
| Mode | Comportement |
|---|---|
strict |
Seuil plus élevé — résultats moins nombreux mais plus pertinents |
balanced |
Par défaut — bon équilibre entre couverture et pertinence |
lenient |
Seuil plus bas — plus de résultats, peut inclure du contenu moins pertinent |
Rappel local
Le paramètre enable_local contrôle le rappel conscient de la localisation :
| Valeur | Comportement |
|---|---|
null (non défini) |
Auto-détection — rappel local activé quand un en-tête de localisation est fourni |
true |
Forcer local — toujours utiliser le rappel local, même sans en-têtes de localisation |
false |
Forcer standard — toujours utiliser le classement web standard, même avec les en-têtes de localisation |
Pour la plupart des cas d'usage, omettez enable_local et laissez l'API auto-détecter à partir des en-têtes de localisation.
En-têtes de localisation
| En-tête | Type | Description |
|---|---|---|
X-Loc-Lat |
float | Latitude (-90.0 à 90.0) |
X-Loc-Long |
float | Longitude (-180.0 à 180.0) |
X-Loc-City |
string | Nom de ville |
X-Loc-State |
string | Code état/région (ISO 3166-2) |
X-Loc-State-Name |
string | Nom état/région |
X-Loc-Country |
string | Code pays à 2 lettres |
X-Loc-Postal-Code |
string | Code postal |
Priorité :
X-Loc-Lat+X-Loc-Longont la priorité. Quand fournis, les en-têtes textuels (City, State, Country, Postal-Code) ne sont pas utilisés pour la résolution de localisation. Fournissez les en-têtes textuels uniquement quand vous n'avez pas de coordonnées.
Exemple : Avec coordonnées
curl -s "https://api.search.brave.com/res/v1/llm/context" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-H "X-Loc-Lat: 37.7749" \
-H "X-Loc-Long: -122.4194" \
-G \
--data-urlencode "q=best coffee shops near me"
Exemple : Avec nom de lieu
curl -s "https://api.search.brave.com/res/v1/llm/context" \
-H "Accept: application/json" \
-H "X-Subscription-Token: ${BRAVE_SEARCH_API_KEY}" \
-H "X-Loc-City: San Francisco" \
-H "X-Loc-State: CA" \
-H "X-Loc-Country: US" \
-G \
--data-urlencode "q=best coffee shops near me"
Goggles (classement personnalisé) — Unique à Brave
Goggles vous permettent de contrôler quelles sources ancrent votre LLM — essentiel pour la qualité du RAG.
| Cas d'usage | Règles Goggle |
|---|---|
| Docs officielles uniquement | $discard\n$site=docs.python.org |
| Exclure contenu utilisateur | $discard,site=reddit.com\n$discard,site=stackoverflow.com |
| Sources académiques | $discard\n$site=arxiv.org\n$site=.edu |
| Sans paywalls | $discard,site=medium.com |
| Méthode | Exemple |
|---|---|
| Hébergée | --data-urlencode "goggles=https://raw.githubusercontent.com/brave/goggles-quickstart/main/goggles/1k_short.goggle" |
| En ligne | --data-urlencode 'goggles=$discard\n$site=example.com' |
Les goggles hébergées doivent être sur GitHub/GitLab, inclure les en-têtes
! name:,! description:,! author:, et être enregistrées à https://search.brave.com/goggles/create. Les règles en ligne ne nécessitent pas d'enregistrement.
Syntaxe : $boost=N / $downrank=N (1–10), $discard, $site=example.com. Combiner avec des virgules : $site=example.com,boost=3. Séparer les règles avec \n (%0A).
Liste blanche : $discard\n$site=docs.python.org\n$site=developer.mozilla.org — Liste noire : $discard,site=pinterest.com\n$discard,site=quora.com
Ressources : Découvrir · Syntaxe · Démarrage rapide
Format de réponse
Réponse standard
{
"grounding": {
"generic": [
{
"url": "https://example.com/page",
"title": "Page Title",
"snippets": [
"Relevant text chunk extracted from the page...",
"Another relevant passage from the same page..."
]
}
],
"map": []
},
"sources": {
"https://example.com/page": {
"title": "Page Title",
"hostname": "example.com",
"age": ["Wednesday, January 15, 2025", "2025-01-15", "392 days ago"]
}
}
}
Réponse locale (avec enable_local)
{
"grounding": {
"generic": [...],
"poi": {
"name": "Business Name",
"url": "https://business.com",
"title": "Title of business.com website",
"snippets": ["Business details and information..."]
},
"map": [
{
"name": "Place Name",
"url": "https://place.com",
"title": "Title of place.com website",
"snippets": ["Place information and details..."]
}
]
},
"sources": {
"https://business.com": {
"title": "Business Name",
"hostname": "business.com",
"age": null
}
}
}
Champs de réponse
| Champ | Type | Description |
|---|---|---|
grounding |
object | Conteneur pour tout le contenu d'ancrage par type |
grounding.generic |
array | Tableau d'objets URL avec contenu extrait (données d'ancrage principales) |
grounding.generic[].url |
string | URL source |
grounding.generic[].title |
string | Titre de page |
grounding.generic[].snippets |
array | Chunks intelligents extraits pertinents pour la requête |
grounding.poi |
object/null | Données point d'intérêt (uniquement avec rappel local) |
grounding.poi.name |
string/null | Nom point d'intérêt |
grounding.poi.url |
string/null | URL source POI |
grounding.poi.title |
string/null | Titre page POI |
grounding.poi.snippets |
array/null | Extraits texte POI |
grounding.map |
array | Résultats carte/lieu (uniquement avec rappel local) |
grounding.map[].name |
string/null | Nom du lieu |
grounding.map[].url |
string/null | URL source lieu |
grounding.map[].title |
string/null | Titre page lieu |
grounding.map[].snippets |
array/null | Extraits texte lieu |
sources |
object | Métadonnées pour toutes les URL référencées, indexées par URL |
sources[url].title |
string | Titre de page |
sources[url].hostname |
string | Hostname source |
sources[url].age |
array/null | Dates modification page (quand disponible) |
Note : Les extraits peuvent contenir du texte brut OU des données structurées sérialisées en JSON (tableaux, schémas, blocs de code). Les LLM gèrent bien ce format mixte.
Cas d'usage
- Agents IA : Donnez à votre agent un outil de recherche web qui retourne du contenu prêt à l'emploi en un seul appel
- Pipelines RAG : Ancrer les réponses LLM dans du contenu web frais et pertinent
- Assistants IA et Chatbots : Fournir des réponses factuelles soutenues par de vraies sources
- Réponses à des questions : Récupérer un contexte ciblé pour des requêtes spécifiques
- Vérification des faits : Vérifier les affirmations par rapport au contenu web actuel
- Recherche de contenu : Rassembler du matériel source sur n'importe quel sujet en un appel API
Bonnes pratiques
- Budget en tokens : Commencer par les valeurs par défaut (
maximum_number_of_tokens=8192,count=20). Réduire pour des recherches simples, augmenter pour la recherche complexe. - Qualité des sources : Utiliser Goggles pour restreindre aux sources de confiance. Définir
context_threshold_mode=strictquand la précision > le rappel. - Performance : Utiliser le plus petit
countetmaximum_number_of_tokensqui répondent à vos besoins. Pour les requêtes locales, fournir les en-têtes de localisation.