mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-10-27 05:30:39 +00:00
* fix(models): route gpt-6 tool calls through the OpenAI Responses API by default The locked langchain-openai==1.2.1 routes gpt-6 models configured with langchain_openai:ChatOpenAI through /v1/chat/completions, where OpenAI rejects function tools for the gpt-6 family with an HTTP 400. Upstream only added the gpt-6 + tools -> Responses API branch in 1.7.x, so backport that routing decision at the model factory instead of bumping the dependency (large uv.lock churn, wider regression surface). _apply_openai_responses_api_default() injects use_responses_api: true + output_version: responses/v1 for BaseChatOpenAI subclasses whose model starts with gpt-6, unless the operator configured an explicit value. Fixes #6841 * fix(models): narrow gpt-6 Responses API default per review Addresses review findings on #6863: - Custom endpoints (base_url/openai_api_base) are never touched, so OpenAI-compatible gateways/proxies (LiteLLM, vLLM, one-api) keep their chat-completions routing instead of being silently re-pointed at /responses. - AzureChatOpenAI is skipped too (MRO-based, so env-configured Azure and any subclass are covered): Azure's Responses API requires api-version >= 2025-04-01-preview. - An explicit use_responses_api still always wins; a lone explicit output_version is preserved while use_responses_api: true is still injected, so gpt-6 no longer silently falls back to /v1/chat/completions. - The default injection is logged so operators can trace the /responses switch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(models): treat env-var-wired gateways as custom endpoints for gpt-6 Addresses the remaining review findings on #6863: - A gateway wired purely via OPENAI_BASE_URL/OPENAI_API_BASE (the openai SDK fallback when no base_url is passed) is now treated like an explicit endpoint, so a gpt-6 model behind an env-var-wired gateway is not silently re-pointed at <gateway>/responses. The known api_base-subclass blind spot is documented in the comment block. - Regression tests pin the env-var endpoint gate and the explicit-wins precedence (an explicit use_responses_api still wins on a custom endpoint). * test(models): isolate Responses routing from endpoint environment --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Willem Jiang <willem.jiang@gmail.com>