Skip to content

Add opt-in keyless Keenable search for OfficeQA rollouts - #368

Open
Ilya Bogin (ilya-bogin-keenable) wants to merge 1 commit into
microsoft:mainfrom
keenableai:feat/keenable-officeqa-search
Open

Ilya Bogin (ilya-bogin-keenable) wants to merge 1 commit into
microsoft:mainfrom
keenableai:feat/keenable-officeqa-search

Conversation

@ilya-bogin-keenable

Copy link
Copy Markdown

Adds env.search_mode=keenable, an opt-in web search mode for the OfficeQA controller search loop, in the same shape as #324.

Closes #352

Conditions from #352

  • Opt-in only: _normalize_search_mode returns keenable only when it is spelled out; the default, auto and unknown values stay offline (tests: test_auto_and_other_modes_never_select_keenable, test_fresh_config_never_calls_keenable).
  • No bundled key, credential or account: none in code, config or tests; KEENABLE_API_KEY is read only if the user sets it, and the docs say users who enable the mode use the service under Keenable's own terms.
  • No new required dependency: plain JSON over the core httpx; pyproject.toml and CI are unchanged.
  • Service errors fail the rollout, no fallback: non-200 responses, invalid JSON or evidence and timeouts raise; tests fail a 429 and a 503 with the custom and Parallel paths patched to error if reached.
  • Data-boundary section: "Keenable search (opt-in)" in docs/reference/config.md lists exactly what a request carries (the generated query and max_results, X-Keenable-Title: SkillOpt, SkillOpt's User-Agent, and X-API-Key only when KEENABLE_API_KEY is set) and includes the comparability caveat about the paper's Google-backed search setting.
  • Neutral wording: the docs and CHANGELOG describe the mode, endpoints, data sent and rate limits only, with no performance or quality claims.
  • Inert HTTP boundary in tests: tests/test_officeqa_keenable_search.py (29 tests) runs the client against httpx.MockTransport and asserts the exact request; nothing reaches the live service.
  • One focused PR: five files: the new keenable_search.py, its branch in rollout.py, the config reference, CHANGELOG and the tests.

Tested

  • python -m pytest -q tests/test_officeqa_keenable_search.py tests/test_officeqa_parallel_search.py: 61 passed on Python 3.12 and 3.10 (.[dev,parallel]).
  • Full python -m pytest -q: 2062 passed, 11 skipped, 4 xfailed on both 3.12 and 3.10. The one failure, tests/test_backend_pi.py::test_default_model_from_env, comes from a local pi binary on my PATH; all 21 pi tests pass with that directory removed from PATH.
  • ruff check on the changed files: clean. mkdocs build --strict: passes.
  • As a sanity check only, and not as evidence of benchmark quality: one live keyless round through rollout.process_one(..., search_mode="keenable") with a scripted model and no key set completed and returned evidence for both queries. No keyed run and no live LLM run.

Disclosure: I work at Keenable, which runs this API.

env.search_mode=keenable runs the OfficeQA controller search loop on
Keenable's search API, beside the Parallel mode from microsoft#324. It is never
selected automatically: the default and auto stay offline.

Each generated query is one POST to the keyless endpoint
(/v1/search/public) with an X-Keenable-Title: SkillOpt header; the task
question is not sent. If the user sets KEENABLE_API_KEY, it is sent in an
X-API-Key header to the keyed endpoint instead. No key, credential or
account is bundled. It uses the core httpx dependency, so no extra is
needed. Service errors fail the rollout without falling back, and one
deadline (search_timeout_seconds) covers all queries of a round.

The config reference gets a data-boundary section listing exactly what a
request carries, plus the comparability caveat about the paper's
Google-backed search setting.

Closes microsoft#352
@ilya-bogin-keenable

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Keenable"

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Proposal: Keenable as an opt-in OfficeQA search_mode beside Parallel

1 participant