Skip to content

feat(providers): add Yandex Cloud AI Studio model provider - #35554

Closed
pamnard wants to merge 1 commit into
NousResearch:mainfrom
pamnard:feat/yandex-ai-studio-provider
Closed

feat(providers): add Yandex Cloud AI Studio model provider#35554
pamnard wants to merge 1 commit into
NousResearch:mainfrom
pamnard:feat/yandex-ai-studio-provider

Conversation

@pamnard

@pamnard pamnard commented May 30, 2026

Copy link
Copy Markdown

Summary

Add first-class support for Yandex Cloud AI Studio (Model Gallery LLM API). This is the inference backend (llm.api.cloud.yandex.net), not SpeechKit TTS/STT (#27815, #23995).

  • Provider id: yandex (aliases: yandex-ai-studio, yandex-aistudio)
  • Auth: YANDEX_API_KEY + YANDEX_FOLDER_ID
  • OpenAI-compatible endpoint: https://llm.api.cloud.yandex.net/v1
  • Sends x-folder-id and x-data-logging-enabled: false on requests
  • Model ids normalized to Yandex gpt://<folder_id>/<model> URIs
  • Does not send extra_body.thinking (rejected by the API for DeepSeek V4 Flash)
  • Documents env vars in .env.example and provider in cli-config.yaml.example

Related

Test plan

Platform tested

  • Linux (Ubuntu)

Add first-class support for Yandex Model Gallery via the OpenAI-compatible
LLM API, including folder headers, gpt:// model URI normalization, and tests.

Related to gateway ${VAR} expansion: NousResearch#21275
@alt-glitch alt-glitch added type/feature New feature or request comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have labels May 30, 2026

@tonydwb tonydwb left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Summary

Verdict: Approved

Review Findings

This PR adds the Yandex Cloud AI Studio as a new model provider — a new OpenAI-compatible provider plugin with full registry integration.

✅ Looks Good

  • Clean provider profile: Follows the standard ProviderProfile pattern with all required fields (env_vars, auth_type, base_url, fallback_models).
  • Model normalization: normalize_yandex_model() correctly produces gpt://<folder_id>/<model> URIs, with YANDEX_FOLDER_ID env var placeholder expansion support.
  • Dynamic headers: YANDEX_FOLDER_ID is read at access time via _yandex_headers(), not cached at init — correct for runtime env changes.
  • API extras: build_api_kwargs_extras() returns ({}, {}) — explicitly documents that Yandex rejects extra_body.thinking for DeepSeek V4 Flash. This prevents hard-to-debug errors.
  • fetch_models: Uses stdlib urllib.request (no extra deps), proper auth header and timeout handling.
  • Test coverage: 86 lines of tests covering registry registration, aliases, model normalization, build_api_kwargs_extras, and dynamic folder headers.
  • Integration hooks: Updated .env.example, cli-config.yaml.example, and model_normalize.py.
  • Plugin metadata: Proper plugin.yaml with standard fields.

No Issues Found


Reviewed by Hermes Agent

@tonydwb tonydwb left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review Summary

Verdict: Approved

Review

Adds first-class Yandex Cloud AI Studio model provider — well-structured plugin with proper auth, model URI normalization, and thorough test coverage.

✅ Looks Good

  • Complete plugin: provider id, aliases, auth (YANDEX_API_KEY + YANDEX_FOLDER_ID), OpenAI-compatible endpoint, model URI normalization.
  • API compatibility: Sends x-folder-id and x-data-logging-enabled: false headers.
  • Edge case handled: Strips extra_body.thinking which Yandex rejects.
  • Good test coverage: 13 tests, plus .env.example and cli-config.yaml.example updated.
  • Clean diff: 105 lines plugin + 86 lines tests + documentation updates.

Reviewed by Hermes Agent (cron job)

@teknium1

Copy link
Copy Markdown
Contributor

Thanks for the complete Yandex profile, normalization logic, and focused tests. This is an automated hermes-sweeper review.

  • The PR adds plugins/model-providers/yandex/ as a bundled model-provider (plugins/model-providers/yandex/plugin.yaml:1-2, plugins/model-providers/yandex/__init__.py:91-105).
  • Current maintainer policy does not accept new third-party/vendor integrations in the core tree: AGENTS.md:126-136 requires them to ship as standalone plugin repositories because the project does not own or maintain those backends.
  • The supported alternative is a standalone Yandex plugin installed at $HERMES_HOME/plugins/model-providers/yandex/ or distributed through a pip entry point; the existing provider discovery path supports both (website/docs/developer-guide/model-provider-plugin.md:9-23,249-258).

Please publish the provider as a standalone plugin repo and share it in #plugins-skills-and-skins; the policy is a coupling and maintenance decision, not a judgment on the implementation quality.


Closed as not-planned per standing maintainer policy (in-tree-provider-integration). This is a design-direction decision, not a code-quality judgment — see the Contribution Rubric in AGENTS.md for what the project is looking for. If you believe this policy was misapplied to your change, comment here and a maintainer will take a look.

@teknium1 teknium1 closed this Jul 13, 2026
@teknium1 teknium1 added the sweeper:not-planned Sweeper: closed per standing maintainer policy (design direction) label Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have sweeper:not-planned Sweeper: closed per standing maintainer policy (design direction) type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants