Requesty (added in #474) is an OpenAI-compatible gateway whose capabilities
were a copy of OpenRouter's: same provider/model naming, same
extra_body.reasoning opt-in, no adapter code of its own. Built-in slots are
kept for providers with their own behaviour; a gateway that speaks an
existing wire format is configured through that provider, and #1532 (API
Route) is being closed on the same grounds.
Migration, identical request shape: LANGCHAIN_PROVIDER=openrouter,
OPENROUTER_BASE_URL=https://router.requesty.ai/v1, OPENROUTER_API_KEY=<the
Requesty key>. Past news and contributor credits in the READMEs are left
as history; the supported-provider lists drop it.
Two conflicts, both resolved toward main:
- README provider line: main had added ModelScope while this branch added
Novita AI. Kept both.
- `test_cli_init.py`: this branch bumped the hardcoded menu numbers 18/19
because inserting Novita shifts the list. Main had since replaced those
literals with `_provider_choice_number(<provider>)`, which looks the number
up from `_PROVIDER_CHOICES` and does not need touching when a provider is
inserted. Took main's helper, so the bumped literals are no longer needed.
Also lists Novita AI in the other five READMEs. The PR added it to the English
provider line only; the same sentence lives in all six and the count-consistency
tests compare them to each other, so five locales would have advertised a
shorter list than the code ships.
The models listed for Novita were older ids that no longer reflect what
the platform leads with. Point the recommendations at the three current
flagships instead, each verified against api.novita.ai:
moonshotai/kimi-k3 1M context, native vision
zai-org/glm-5.2 1M context, long-horizon agentic work
deepseek/deepseek-v4-flash-0731 1M context, cheapest of the three
Context windows, output limits, input modalities and pricing were taken
from the live /openai/v1/models response rather than carried over.
Signed-off-by: jax-novita <jax-novita@users.noreply.github.com>
Wire Novita AI's OpenAI-compatible endpoint
(https://api.novita.ai/openai, Bearer API key) through the provider
registry, capabilities, legacy CLI onboarding, .env.example, and the
README provider list. Novita rides the generic OpenAI-compatible path
with no special capability flags; the default model is
deepseek/deepseek-v3.2, which supports function calling.
Model IDs use ``vendor/model`` naming and were verified against the live
public catalog at https://api.novita.ai/openai/v1/models.
Signed-off-by: jax-novita <jax@novita.ai>
Three fixes for the native zai provider on glm-5.1:
- get_llm_credentials now falls back to the provider catalog's
default_base_url when no *_BASE_URL is set, so CLI/manual-.env users
reach the canonical endpoint (Z.ai /api/coding/paas/v4) instead of
silently defaulting to api.openai.com. Web Settings already did this;
the backend credential path did not. Benefits all 22 providers.
- stream_chat falls back to a non-streaming invoke when a provider
streams zero chunks ('No generation chunks were returned'), instead of
raising ProviderStreamError. Scoped to the empty-stream case; genuine
provider errors still raise.
- ProviderStreamError appends a base-URL hint when the endpoint returns
an HTML error page (a common misconfiguration signal).
Fixes#758.
Self-fix on merge: moved langchain-anthropic from core dependencies to an
[anthropic] optional extra (like [deepseek]) — _build_anthropic lazy-imports it
and raises an actionable install hint, so the base install stays lean. Resolved
llm.py conflicts against #563's centralized get_llm_credentials + the anthropic
native adapter-mode branch. Closes#694.
Wire iFlytek Spark's OpenAI-compatible HTTP endpoint
(https://spark-api-open.xf-yun.com/v1, Bearer APIPassword) through the
provider registry, capabilities, legacy CLI onboarding, .env.example, and
the README provider list, with "iflytek" accepted as an alias. Spark rides
the generic OpenAI-compatible path with no special capability flags; the
default model is 4.0Ultra, which supports function calling.
Signed-off-by: FenjuFu <92919259+FenjuFu@users.noreply.github.com>
Add a first-class `glm` alias of the existing `zhipu` provider so a model
name like `glm-4.6`/`glm-5.1` resolves to the Zhipu capability record and
base URL instead of silently falling back to the OpenAI slot.
- capabilities.py: share one `_ZHIPU_CAPABILITIES` record between `zhipu`
and the new `glm` alias (mirrors kimi/moonshot), and infer `zhipu` for
model ids starting with `glm`.
- llm_providers.json: register a `glm` entry aliasing the Zhipu env names
and default model so onboarding/diagnostics surface it.
- tests: cover the alias, model-name inference, env-name resolution, the
unchanged openai fallback, and the new registry default.
Signed-off-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Add MiniMax-M3 as the new default model and retain MiniMax-M2.7 as
the legacy alternative (incl. -highspeed). Update llm_providers.json
registry, cli onboard provider choices, .env.example example, and the
provider-default regression tests.
Signed-off-by: Octopus <liyuan851277048@icloud.com>
Signed-off-by: octo-patch <liyuan851277048@icloud.com>