[feat]: add Requesty provider (OpenAI-compatible router) - #4993
Conversation
Adds Requesty (https://router.requesty.ai) as a built-in OpenAI-compatible provider, modeled on the existing Parasail provider. Closes #4740. Affected packages: - core/providers/requesty/ - new provider (chat + streaming, responses, list models); delegates to openai.* - core/schemas/bifrost.go - ModelProvider enum + StandardProviders - core/bifrost.go - provider import + init switch case - core/utils.go - dynamicallyConfigurableProviders - core/internal/llmtests/account.go - test key mapping (REQUESTY_API_KEY), provider list, network config - transports/config.schema.json - provider schema entry + base-provider enum - ui/lib/constants/ - provider name/label, model placeholder, key-required, placeholder icon - .github/workflows/ - REQUESTY_API_KEY in pr-tests and release-pipeline - docs/ - provider page, docs.json nav, supported-providers overview - core/changelog.md, transports/changelog.md Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
✅ Files skipped from review due to trivial changes (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughSummary by CodeRabbit
WalkthroughThis PR adds Requesty as a supported provider, wires it into core provider creation and test configuration, adds CI secret plumbing, updates UI/provider metadata, and documents the provider surface. ChangesRequesty Provider Integration
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 golangci-lint (2.12.2)level=error msg="[linters_context] typechecking error: pattern ./...: directory prefix . does not contain main module or its selected dependencies" 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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
ui/lib/constants/icons.tsx (1)
768-789: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winPlaceholder icon ships to production.
The added
requestyicon is explicitly noted as a placeholder monogram, unlike all other providers in this file which use official brand SVGs or/images/*.webpassets. Shipping a non-brand placeholder in the provider list/selector is user-visible and should be swapped for the real Requesty logo before this lands, or tracked as a follow-up if brand assets aren't available yet.Do you want me to open a follow-up issue to track replacing this with the official Requesty SVG?
🤖 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 `@ui/lib/constants/icons.tsx` around lines 768 - 789, The requesty entry in icons.tsx is a placeholder monogram and should not ship as the visible provider icon. Replace the current placeholder SVG in the requesty icon renderer with the official Requesty brand asset, following the same pattern used by the other provider icons in this file, or remove it until the real asset is available. Keep the change localized to the requesty symbol so the provider selector uses the correct brand icon.
🤖 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 `@core/providers/requesty/requesty.go`:
- Around line 96-141: The streaming chat completion path in Requesty still
hardcodes the chat completions URL, so `ChatCompletionStream` should mirror
`ChatCompletion` and use `providerUtils.GetPathFromContext(ctx,
"/v1/chat/completions")` instead of a fixed string. Update the
`RequestyProvider.ChatCompletionStream` call to
`openai.HandleOpenAIChatCompletionStreaming` to respect
`request_path_overrides.chat_completion_stream`, and make the same change in the
corresponding `ParasailProvider.ChatCompletionStream` implementation.
In `@docs/providers/supported-providers/overview.mdx`:
- Line 37: The support matrix entry for Requesty is marking Responses as native
support, but it should be fallback support instead. Update the Requesty row in
overview.mdx so both Responses columns use the fallback marker rather than the
green check, keeping Chat Completions unchanged. Use the Requesty provider row
in the matrix to locate the affected cells.
In `@docs/providers/supported-providers/requesty.mdx`:
- Around line 18-22: Update the supported-providers table in requesty.mdx so the
Responses API entry uses the public endpoint `/v1/responses` instead of
`/v1/chat/completions`. Keep the explanatory note below unchanged, and verify
the row in the table remains aligned with the corresponding operation name
“Responses API” and the existing Chat Completions entry.
---
Nitpick comments:
In `@ui/lib/constants/icons.tsx`:
- Around line 768-789: The requesty entry in icons.tsx is a placeholder monogram
and should not ship as the visible provider icon. Replace the current
placeholder SVG in the requesty icon renderer with the official Requesty brand
asset, following the same pattern used by the other provider icons in this file,
or remove it until the real asset is available. Keep the change localized to the
requesty symbol so the provider selector uses the correct brand icon.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: ab240d52-fa01-4a91-a7e6-a078a4dfbbeb
📒 Files selected for processing (18)
.github/workflows/pr-tests.yml.github/workflows/release-pipeline.ymlcore/bifrost.gocore/changelog.mdcore/internal/llmtests/account.gocore/providers/requesty/cachedcontents.gocore/providers/requesty/requesty.gocore/providers/requesty/requesty_test.gocore/schemas/bifrost.gocore/utils.godocs/docs.jsondocs/providers/supported-providers/overview.mdxdocs/providers/supported-providers/requesty.mdxtransports/changelog.mdtransports/config.schema.jsonui/lib/constants/config.tsui/lib/constants/icons.tsxui/lib/constants/logs.ts
…rections Addresses PR #4993 review (CodeRabbit + Greptile): - core/providers/requesty/requesty.go - ChatCompletionStream now uses providerUtils.GetPathFromContext so request_path_overrides.chat_completion_stream is respected (matches the non-streaming path) - docs/providers/supported-providers/requesty.mdx - Responses API row uses /v1/responses; removed reference to non-existent dashboard screenshot - docs/providers/supported-providers/overview.mdx - Responses columns marked fallback since Requesty converts Responses to Chat Completions Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Summary
Adds Requesty (https://router.requesty.ai) as a built-in provider. Requesty is an OpenAI-compatible LLM router (similar to OpenRouter), so it is implemented as an OpenAI-compatible provider that delegates to the shared
openai.*handlers — mirroring the existing Parasail/OpenRouter providers.Closes #4740.
Changes
core/providers/requesty/— chat completions (+ streaming), Responses API (via chat fallback), and list-models; all other operations return the standard "unsupported" error. Default base URLhttps://router.requesty.ai, bearer auth.ModelProviderenum +StandardProviders(core/schemas/bifrost.go), provider import + init-switch case (core/bifrost.go),dynamicallyConfigurableProviders(core/utils.go).transports/config.schema.json(provider$ref+ base-provider enum).ui/lib/constants/{logs,config,icons}).core/internal/llmtests/account.go(mapsREQUESTY_API_KEY, provider list, network config) +requesty_test.go(skips when the key is unset).REQUESTY_API_KEYadded topr-tests.ymlandrelease-pipeline.yml.docs/providers/supported-providers/requesty.mdx, nav entry, and overview table row.core/changelog.md,transports/changelog.md.Type of change
Affected areas
How to test
Or configure a
requestyprovider withREQUESTY_API_KEYand send an OpenAI-format chat completion for a model such asopenai/gpt-4o-mini.Breaking changes
Related issues
Closes #4740
Security considerations
No new secret handling beyond the standard provider API-key flow (
REQUESTY_API_KEY), identical to other providers.Checklist
docs/contributingguidelines (branched from/targetingdev)requesty_test.go)[type]: descriptionformat with affected packages listedgo build/UI build not run in my environment —gofmtpasses (syntax + formatting) and the provider is structurally identical to Parasail; leaving the full compile to CI