feat(web_search): add olostep provider

Adds Olostep (https://www.olostep.com) as an optional web_search backend
using the official olostep Python SDK (client.answers.create()).

Changes:
- pyproject.toml: adds olostep>=0.1.0 optional dependency
- schema.py: adds olostep to provider comment in WebSearchConfig
- web.py: adds _search_olostep() with lazy import and provider branching
- docs/configuration.md: documents Olostep setup under web search config
- tests: unit tests for the new provider

Backward compatible: existing users see no behavior change unless they
opt into provider: "olostep". No hard dependency at runtime path.

Co-authored-by: umerkay <umerkk164@gmail.com>
This commit is contained in:
chengyongru
2026-04-28 19:09:38 +08:00
committed by Xubin Ren
co-authored by umerkay
parent 0053e68423
commit 28f9bbff31
5 changed files with 157 additions and 1 deletions
+17
View File
@@ -546,6 +546,7 @@ By default, web search uses `duckduckgo`, and it works out of the box without an
| `tavily` | `apiKey` | `TAVILY_API_KEY` | No |
| `jina` | `apiKey` | `JINA_API_KEY` | Free tier (10M tokens) |
| `kagi` | `apiKey` | `KAGI_API_KEY` | No |
| `olostep` | `apiKey` | `OLOSTEP_API_KEY` | No |
| `searxng` | `baseUrl` | `SEARXNG_BASE_URL` | Yes (self-hosted) |
| `duckduckgo` (default) | — | — | Yes |
@@ -605,6 +606,22 @@ By default, web search uses `duckduckgo`, and it works out of the box without an
}
```
**Olostep:**
```json
{
"tools": {
"web": {
"search": {
"provider": "olostep",
"apiKey": "YOUR_OLOSTEP_API_KEY"
}
}
}
}
```
You can also set `OLOSTEP_API_KEY` in the environment instead of storing it in config.
**SearXNG** (self-hosted, no API key needed):
```json
{