Skip to content

feat: add Requesty as an OpenAI-compatible chat model provider#1368

Open
Thibaultjaigu wants to merge 1 commit into
sourcebot-dev:mainfrom
Thibaultjaigu:add-requesty-provider
Open

feat: add Requesty as an OpenAI-compatible chat model provider#1368
Thibaultjaigu wants to merge 1 commit into
sourcebot-dev:mainfrom
Thibaultjaigu:add-requesty-provider

Conversation

@Thibaultjaigu

@Thibaultjaigu Thibaultjaigu commented Jun 24, 2026

Copy link
Copy Markdown

Adds Requesty as an OpenAI-compatible chat model provider, mirroring the existing OpenRouter provider.

Requesty (requesty.ai) is an OpenAI-compatible LLM gateway — one API across many models, using the same provider/model naming as OpenRouter (base https://router.requesty.ai/v1, REQUESTY_API_KEY). Since there's no Requesty-specific AI SDK package, it routes through @ai-sdk/openai-compatible (already a dependency).

Changes

  • packages/web/src/features/chat/llm.server.tscase 'requesty' building the model via createOpenAICompatible (default base https://router.requesty.ai/v1, overridable via config.baseUrl; key from config.token ?? env.REQUESTY_API_KEY; headers mirroring openrouter).
  • packages/schemas/src/v3/languageModel.schema.tsRequestyLanguageModel zod definition mirroring OpenRouterLanguageModel; regenerated languageModel.json + types via yarn generate (the diff is purely the Requesty addition).
  • packages/shared/src/env.server.tsREQUESTY_API_KEY optional env.
  • packages/web/src/features/chat/types.ts — provider type.
  • packages/web/src/features/chat/components/chatBox/modelProviderLogo.tsxcase 'requesty' (falls back to default; no asset fabricated).
  • packages/setupWizard/src/models.ts — wizard entry.
  • docs/docs/configuration/language-model-providers.mdx + generated schema snippets — Requesty section in the existing per-provider docs table.

Testing

  • tsc --noEmit on @sourcebot/schemas → 0 errors; the edited web files (llm.server, types) → no new errors (remaining errors are pre-existing @/public/*.svg/*.png module-decl + a test-prop issue, present for all providers).
  • yarn generate reproduces the committed schema json (zod source and generated json are consistent).
  • Verified live: POST https://router.requesty.ai/v1/chat/completions with model: openai/gpt-4o-mini → HTTP 200 with a real completion.

Docs: https://docs.requesty.ai • Keys: https://app.requesty.ai/api-keys

I work at Requesty. This mirrors the existing OpenRouter provider as closely as possible. Happy to adjust or close it if it's not a fit.

Summary by CodeRabbit

  • New Features

    • Added support for the Requesty language model provider across setup, chat, and schema validation.
    • Requesty can now be selected as a provider and configured with a model name, API key, optional base URL, headers, and temperature.
    • Added UI support for displaying a Requesty provider icon.
  • Documentation

    • Updated configuration docs with Requesty setup details and an example configuration.

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Adds the Requesty OpenAI-compatible LLM gateway as a new language model provider. Changes span the RequestyLanguageModel TypeScript interface and JSON schemas, server-side model factory (llm.server.ts), REQUESTY_API_KEY env var registration, setup wizard provider list, a UI logo fallback, and documentation.

Changes

Requesty provider integration

Layer / File(s) Summary
RequestyLanguageModel type contracts and schemas
packages/schemas/src/v3/languageModel.type.ts, packages/schemas/src/v3/index.type.ts, packages/schemas/src/v3/languageModel.schema.ts, packages/schemas/src/v3/index.schema.ts, schemas/v3/languageModel.json
Defines the RequestyLanguageModel TypeScript interface with provider: "requesty", required model, optional token/baseUrl/temperature/headers, and adds it to the LanguageModel union. Extends JSON schema definitions and oneOf variant lists in all schema files.
Server-side runtime implementation
packages/shared/src/env.server.ts, packages/web/src/features/chat/types.ts, packages/web/src/features/chat/llm.server.ts
Registers REQUESTY_API_KEY as an optional env var, adds "requesty" to languageModelProviders, and implements a case 'requesty' in getAISDKLanguageModelAndOptions using createOpenAICompatible with the Requesty base URL.
Setup wizard and provider logo
packages/setupWizard/src/models.ts, packages/web/src/features/chat/components/chatBox/modelProviderLogo.tsx
Maps requesty to REQUESTY_API_KEY in PROVIDER_ENV_KEYS, routes the requesty case through the openrouter config path in collectModelConfig, adds Requesty to the interactive provider choices, and returns a Box icon for requesty in ModelProviderLogo.
Documentation and schema reference docs
docs/docs/configuration/language-model-providers.mdx, docs/snippets/schemas/v3/languageModel.schema.mdx, docs/snippets/schemas/v3/index.schema.mdx
Adds a Requesty subsection with a JSON configuration example to the provider docs, and extends the rendered schema reference pages with the RequestyLanguageModel definition and oneOf variant.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • sourcebot-dev/sourcebot#424: Both PRs extend LanguageModel union and getAISDKLanguageModelAndOptions to support a new provider variant using createOpenAICompatible.
  • sourcebot-dev/sourcebot#449: The requesty schema adds headers with env/googleCloudSecret backing, directly touching the header-resolution plumbing introduced in that PR.
  • sourcebot-dev/sourcebot#1103: Both PRs modify getAISDKLanguageModelAndOptions and per-provider optional temperature configuration in the LLM pipeline.

Suggested reviewers

  • msukkari
  • brendan-kellam
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: adding Requesty as an OpenAI-compatible chat model provider.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/docs/configuration/language-model-providers.mdx`:
- Line 347: The sentence in the Requesty provider description uses third-person
phrasing; update the copy in the language-model-providers docs to address the
reader directly in second person and present tense. Reword the “Models are
referenced…” sentence so it speaks to “you” while keeping the same meaning, and
make sure the surrounding Requesty description still reads naturally with the
existing Requesty link and examples.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 09fc2c97-8d3e-4810-90ba-052a37c8d919

📥 Commits

Reviewing files that changed from the base of the PR and between 5e1b8ee and e60c3ad.

📒 Files selected for processing (13)
  • docs/docs/configuration/language-model-providers.mdx
  • docs/snippets/schemas/v3/index.schema.mdx
  • docs/snippets/schemas/v3/languageModel.schema.mdx
  • packages/schemas/src/v3/index.schema.ts
  • packages/schemas/src/v3/index.type.ts
  • packages/schemas/src/v3/languageModel.schema.ts
  • packages/schemas/src/v3/languageModel.type.ts
  • packages/setupWizard/src/models.ts
  • packages/shared/src/env.server.ts
  • packages/web/src/features/chat/components/chatBox/modelProviderLogo.tsx
  • packages/web/src/features/chat/llm.server.ts
  • packages/web/src/features/chat/types.ts
  • schemas/v3/languageModel.json


### Requesty

[Requesty](https://requesty.ai) is an OpenAI-compatible LLM gateway. Models are referenced in `provider/model` format (e.g. `openai/gpt-4o-mini`). See the [Requesty docs](https://docs.requesty.ai).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use second-person phrasing in this docs sentence.

Line 347 is written in third person (“Models are referenced…”). Reword it to address the reader directly.

✍️ Proposed edit
-[Requesty](https://requesty.ai) is an OpenAI-compatible LLM gateway. Models are referenced in `provider/model` format (e.g. `openai/gpt-4o-mini`). See the [Requesty docs](https://docs.requesty.ai).
+Use [Requesty](https://requesty.ai) as an OpenAI-compatible LLM gateway. You reference models in `provider/model` format (for example, `openai/gpt-4o-mini`). See the [Requesty docs](https://docs.requesty.ai).

As per coding guidelines, "Write documentation in second person ('you') and present tense."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[Requesty](https://requesty.ai) is an OpenAI-compatible LLM gateway. Models are referenced in `provider/model` format (e.g. `openai/gpt-4o-mini`). See the [Requesty docs](https://docs.requesty.ai).
Use [Requesty](https://requesty.ai) as an OpenAI-compatible LLM gateway. You reference models in `provider/model` format (for example, `openai/gpt-4o-mini`). See the [Requesty docs](https://docs.requesty.ai).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/docs/configuration/language-model-providers.mdx` at line 347, The
sentence in the Requesty provider description uses third-person phrasing; update
the copy in the language-model-providers docs to address the reader directly in
second person and present tense. Reword the “Models are referenced…” sentence so
it speaks to “you” while keeping the same meaning, and make sure the surrounding
Requesty description still reads naturally with the existing Requesty link and
examples.

Source: Coding guidelines

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.

1 participant