@rouvanpm/rouva 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/index.d.mts +12 -10
- package/dist/index.d.ts +12 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ console.log(response.choices[0].message.content)
|
|
|
24
24
|
|
|
25
25
|
## Provider agnostic
|
|
26
26
|
|
|
27
|
-
Rouva works with all connected providers — Anthropic, OpenAI, Gemini, DeepSeek, Mistral, Moonshot, xAI, Z.ai
|
|
27
|
+
Rouva works with all connected providers — Anthropic, OpenAI, Gemini, DeepSeek, Mistral, Moonshot, xAI, Z.ai, Alibaba Qwen and MiniMax. You can request a specific model, force a specific provider, or omit both and let Rouva route to the cheapest capable model automatically.
|
|
28
28
|
|
|
29
29
|
```typescript
|
|
30
30
|
// Request a specific model
|
|
@@ -98,14 +98,14 @@ const res = await rouva.chat.completions.create({
|
|
|
98
98
|
})
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
- **`temperature`** — sampling temperature between 0 and 1. The gateway omits it for models that only accept their default: OpenAI reasoning models (gpt-5 / gpt-6 families) and the Claude models that reject it (Opus 4.7 and newer, Sonnet 5 and newer, Fable).
|
|
101
|
+
- **`temperature`** — sampling temperature between 0 and 1. The gateway omits it for models that only accept their default: OpenAI reasoning models (gpt-5 / gpt-6 families) and the Claude models that reject it (Opus 4.7 and newer, Sonnet 5 and newer, Haiku 5.5, Fable), and models whose sampling is fixed (Kimi K3 / K3.1 Pro, MiniMax).
|
|
102
102
|
- **`max_tokens`** / **`max_completion_tokens`** — either name works. Values below 1024 also steer auto-routing away from reasoning models, which would otherwise spend the whole budget on hidden reasoning tokens.
|
|
103
103
|
- **`top_p`** — nucleus sampling; `top_p: 1` is treated as omitted. OpenAI reasoning models don't support it: routing avoids them when it's set, and pinning one returns a 400. The gateway omits it for the Claude models that reject it (as for `temperature`).
|
|
104
104
|
- **`stop`** — a string or up to 4 stop sequences (Anthropic receives them as `stop_sequences`). OpenAI and xAI reasoning models (e.g. gpt-5, grok-4.5 / 4.6 / 4.7) reject it: routing avoids them when it's set, and pinning one returns a 400.
|
|
105
105
|
- **`metadata`** — up to 10 string key-value pairs (keys up to 64 characters, values up to 256, no null bytes) stored with the request's usage record; not sent to the provider.
|
|
106
106
|
- **`seed`** — best-effort deterministic sampling. Only OpenAI honors it, so it requires an OpenAI `model` and pins the request to that exact model (no routing, no fallbacks).
|
|
107
107
|
- **`response_format`** — JSON mode or a JSON schema; see [Structured output](#structured-output).
|
|
108
|
-
- **`reasoning_effort`** — `'none'` … `'xhigh'`, or `'max'` for Claude. Which values a model takes depends on the model; routing only picks one that takes yours; a listed OpenAI or Claude model you name that doesn't gets a 400, and other providers' models get the value as sent. On gpt-6-luna / gpt-6-sol, `'none'` turns reasoning off. See [the docs](https://rouva.io/docs#reasoning-effort).
|
|
108
|
+
- **`reasoning_effort`** — `'none'` … `'xhigh'`, or `'max'` for Claude. Which values a model takes depends on the model; routing only picks one that takes yours; a listed OpenAI or Claude model you name that doesn't gets a 400, and other providers' models get the value as sent. On gpt-6-luna / gpt-6-sol / gpt-6.1-terra, `'none'` turns reasoning off. See [the docs](https://rouva.io/docs#reasoning-effort).
|
|
109
109
|
- **`parallel_tool_calls`** — with `tools`: `false` allows at most one tool call per turn (Claude included).
|
|
110
110
|
|
|
111
111
|
Unsupported OpenAI options (`logit_bias`, `logprobs`, `n > 1`, the legacy `functions`/`function_call` fields, …) are rejected by the gateway with an explicit 400 rather than silently ignored.
|
|
@@ -130,7 +130,7 @@ Non-tools requests on `/v1` honor the named model exactly unless the workspace o
|
|
|
130
130
|
|
|
131
131
|
## Tool use
|
|
132
132
|
|
|
133
|
-
Tools are forwarded to your target provider verbatim — define them in the **provider's own format** (OpenAI `{ type: "function", function: {...} }` or Anthropic `{ name, description, input_schema }`) and pin the matching `model`. Tool schemas are provider-specific, so `model` is required and the gateway returns a 400 without it. `gpt-6.1-sol` and `gpt-5.6-*` take tools only through OpenAI's Responses API: the gateway uses it for you and converts both ways, so you still send and receive Chat Completions (`seed`, `stop` and a `max_tokens` below 16 are a 400 there). `rouva.run()` still refuses these models.
|
|
133
|
+
Tools are forwarded to your target provider verbatim — define them in the **provider's own format** (OpenAI `{ type: "function", function: {...} }` or Anthropic `{ name, description, input_schema }`) and pin the matching `model`. Tool schemas are provider-specific, so `model` is required and the gateway returns a 400 without it. `gpt-6.1-sol`, `gpt-6-astra` and `gpt-5.6-*` take tools only through OpenAI's Responses API: the gateway uses it for you and converts both ways, so you still send and receive Chat Completions (`seed`, `stop` and a `max_tokens` below 16 are a 400 there). `rouva.run()` still refuses these models.
|
|
134
134
|
|
|
135
135
|
A tools request only ever moves to another model of the **same provider**: an account routing override for the task (when it targets the same provider), or — on the `/v1` endpoint with Intelligent Routing enabled — the cheapest capable model within that provider, using the named `model` as a cost ceiling (see [OpenAI-compatible endpoint](#openai-compatible-endpoint)). Otherwise the named model is honored exactly.
|
|
136
136
|
|
package/dist/index.d.mts
CHANGED
|
@@ -50,9 +50,9 @@ interface ContentBlockMessage {
|
|
|
50
50
|
* valid when `tools` is set on the request.
|
|
51
51
|
*/
|
|
52
52
|
type ChatMessage = Message | AssistantToolCallMessage | ToolResultMessage | ContentBlockMessage;
|
|
53
|
-
type RouvaProvider = 'anthropic' | 'openai' | 'gemini' | 'deepseek' | 'mistral' | 'moonshot' | 'xai' | 'zai' | 'alibaba' | (string & {});
|
|
53
|
+
type RouvaProvider = 'anthropic' | 'openai' | 'gemini' | 'deepseek' | 'mistral' | 'moonshot' | 'xai' | 'zai' | 'alibaba' | 'minimax' | (string & {});
|
|
54
54
|
/**
|
|
55
|
-
* Supported models across all providers (the gateway's list as of SDK 0.
|
|
55
|
+
* Supported models across all providers (the gateway's list as of SDK 0.5.1).
|
|
56
56
|
* Omit `model` entirely to let Rouva route to the cheapest capable model automatically.
|
|
57
57
|
*
|
|
58
58
|
* Other IDs are accepted by the type for forward compatibility. On
|
|
@@ -64,7 +64,7 @@ type RouvaProvider = 'anthropic' | 'openai' | 'gemini' | 'deepseek' | 'mistral'
|
|
|
64
64
|
*
|
|
65
65
|
* `'gpt-5.6'` is a deprecated alias the gateway maps to `'gpt-5.6-sol'`.
|
|
66
66
|
*/
|
|
67
|
-
type RouvaModel = 'claude-fable-5-1' | 'claude-fable-5' | 'claude-opus-5-5' | 'claude-opus-5' | 'claude-opus-4-8' | 'claude-opus-4-7' | 'claude-opus-4-6' | 'claude-sonnet-5-5' | 'claude-sonnet-5' | 'claude-sonnet-4-6' | 'claude-haiku-4-5-20251001' | 'gpt-6.1-sol' | 'gpt-6-sol' | 'gpt-6-luna' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5.6' | 'gpt-5' | 'gpt-5.4-mini' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4o' | 'gpt-4o-mini' | 'gemini-3.8-flash' | 'gemini-3.7-flash' | 'gemini-3.6-flash' | 'gemini-3.5-flash-lite' | 'gemini-2.5-pro' | 'gemini-2.5-flash' | 'deepseek-flash' | 'deepseek-flash-think' | 'deepseek-v4-pro' | 'mistral-large-latest' | 'mistral-small-latest' | 'kimi-k3' | 'kimi-k2.6' | 'grok-4.7' | 'grok-4.6' | 'grok-4.5' | 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'glm-5.3' | 'glm-5.2' | 'glm-4.7-flash' | 'qwen3.8-omni-flash' | 'qwen3.8-flash' | 'qwen3.7-plus' | 'qwen-max' | 'qwen-plus' | 'qwen-flash' | (string & {});
|
|
67
|
+
type RouvaModel = 'claude-fable-5-1' | 'claude-fable-5' | 'claude-opus-5-5' | 'claude-opus-5' | 'claude-opus-4-8' | 'claude-opus-4-7' | 'claude-opus-4-6' | 'claude-sonnet-5-5' | 'claude-sonnet-5' | 'claude-sonnet-4-6' | 'claude-haiku-5-5' | 'claude-haiku-4-5-20251001' | 'gpt-6-astra' | 'gpt-6.1-sol' | 'gpt-6.1-terra' | 'gpt-6-sol' | 'gpt-6-luna' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5.6' | 'gpt-5' | 'gpt-5.4-mini' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4o' | 'gpt-4o-mini' | 'gemini-4-argon' | 'gemini-3.8-flash' | 'gemini-3.7-flash' | 'gemini-3.6-flash' | 'gemini-3.5-flash-lite' | 'gemini-2.5-pro' | 'gemini-2.5-flash' | 'deepseek-flash' | 'deepseek-flash-think' | 'deepseek-v4-pro' | 'mistral-large-latest' | 'mistral-small-latest' | 'kimi-k3.1-pro' | 'kimi-k3' | 'kimi-k2.6' | 'grok-4.7' | 'grok-4.6' | 'grok-4.5' | 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'glm-5.3' | 'glm-5.2' | 'glm-4.7-flash' | 'qwen3.8-omni-flash' | 'qwen3.8-flash' | 'qwen3.7-plus' | 'qwen-max' | 'qwen-plus' | 'qwen-flash' | 'MiniMax-M3.1-Flash' | 'MiniMax-M3' | (string & {});
|
|
68
68
|
/** Anthropic-style text block — the array form of the `system` param */
|
|
69
69
|
interface SystemTextBlock {
|
|
70
70
|
type: 'text';
|
|
@@ -108,7 +108,8 @@ interface ChatCompletionParams {
|
|
|
108
108
|
* Sampling temperature 0–1.
|
|
109
109
|
* The gateway omits it for models that only accept their default: OpenAI
|
|
110
110
|
* reasoning models (gpt-5 / gpt-6 families) and the Claude models that reject
|
|
111
|
-
* it (Opus 4.7 and newer, Sonnet 5 and newer, Fable)
|
|
111
|
+
* it (Opus 4.7 and newer, Sonnet 5 and newer, Haiku 5.5, Fable), and for
|
|
112
|
+
* models whose sampling is fixed (Kimi K3 / K3.1 Pro, MiniMax).
|
|
112
113
|
*/
|
|
113
114
|
temperature?: number;
|
|
114
115
|
/**
|
|
@@ -116,7 +117,8 @@ interface ChatCompletionParams {
|
|
|
116
117
|
* default) is treated as omitted. OpenAI reasoning models (gpt-5 / gpt-6
|
|
117
118
|
* families, o-series) don't support it: routing avoids them when top_p is
|
|
118
119
|
* set, and pinning one returns a 400. The gateway omits it for the Claude
|
|
119
|
-
* models that reject it (Opus 4.7 and newer, Sonnet 5 and newer, Fable)
|
|
120
|
+
* models that reject it (Opus 4.7 and newer, Sonnet 5 and newer, Haiku 5.5, Fable),
|
|
121
|
+
* and for models whose sampling is fixed (Kimi K3 / K3.1 Pro, MiniMax).
|
|
120
122
|
*/
|
|
121
123
|
top_p?: number;
|
|
122
124
|
/**
|
|
@@ -147,11 +149,11 @@ interface ChatCompletionParams {
|
|
|
147
149
|
* How hard a reasoning model thinks (gateway support since 2026-10-21).
|
|
148
150
|
* OpenAI models take it as is; Claude gets it as `output_config.effort`.
|
|
149
151
|
* Values depend on the model: gpt-5 / -mini / -nano take minimal–high;
|
|
150
|
-
* gpt-5.4-mini, gpt-5.6-*, gpt-6-luna / -sol take none–xhigh;
|
|
151
|
-
* low–xhigh; Claude Sonnet / Opus 4.6 low, medium,
|
|
152
|
-
* models also xhigh; GPT-4 models and Claude Haiku 4.5 don't take it. Routing
|
|
152
|
+
* gpt-5.4-mini, gpt-5.6-*, gpt-6-luna / -sol, gpt-6.1-terra take none–xhigh;
|
|
153
|
+
* gpt-6.1-sol and gpt-6-astra low–xhigh; Claude Sonnet / Opus 4.6 low, medium,
|
|
154
|
+
* high, max; newer Claude models (incl. Haiku 5.5) also xhigh; GPT-4 models and Claude Haiku 4.5 don't take it. Routing
|
|
153
155
|
* only picks a model that takes the value; a listed OpenAI or Claude model you
|
|
154
|
-
* name that doesn't is a 400 (other providers' models get the value as sent). On gpt-6-luna / -sol, `'none'` turns reasoning off (temperature,
|
|
156
|
+
* name that doesn't is a 400 (other providers' models get the value as sent). On gpt-6-luna / -sol and gpt-6.1-terra, `'none'` turns reasoning off (temperature,
|
|
155
157
|
* top_p and tools then work) and any other value turns it on (top_p is then
|
|
156
158
|
* a 400; tools are served through OpenAI's Responses API). `rouva.run()`
|
|
157
159
|
* doesn't accept it.
|
|
@@ -176,7 +178,7 @@ interface ChatCompletionParams {
|
|
|
176
178
|
* Anthropic `{ name, description, input_schema }`). Requires `model`.
|
|
177
179
|
* Tool schemas are provider-specific, so a tools request only ever moves to
|
|
178
180
|
* another model of the SAME provider (a routing override, or cheaper-model
|
|
179
|
-
* routing on /v1). gpt-6.1-sol and gpt-5.6-* take tools only through
|
|
181
|
+
* routing on /v1). gpt-6.1-sol, gpt-6-astra and gpt-5.6-* take tools only through
|
|
180
182
|
* OpenAI's Responses API: the gateway uses it for you and converts both ways
|
|
181
183
|
* (you still send and receive Chat Completions), and there `seed`, `stop` and
|
|
182
184
|
* a `max_tokens` below 16 are a 400. `rouva.run()` still refuses these models.
|
package/dist/index.d.ts
CHANGED
|
@@ -50,9 +50,9 @@ interface ContentBlockMessage {
|
|
|
50
50
|
* valid when `tools` is set on the request.
|
|
51
51
|
*/
|
|
52
52
|
type ChatMessage = Message | AssistantToolCallMessage | ToolResultMessage | ContentBlockMessage;
|
|
53
|
-
type RouvaProvider = 'anthropic' | 'openai' | 'gemini' | 'deepseek' | 'mistral' | 'moonshot' | 'xai' | 'zai' | 'alibaba' | (string & {});
|
|
53
|
+
type RouvaProvider = 'anthropic' | 'openai' | 'gemini' | 'deepseek' | 'mistral' | 'moonshot' | 'xai' | 'zai' | 'alibaba' | 'minimax' | (string & {});
|
|
54
54
|
/**
|
|
55
|
-
* Supported models across all providers (the gateway's list as of SDK 0.
|
|
55
|
+
* Supported models across all providers (the gateway's list as of SDK 0.5.1).
|
|
56
56
|
* Omit `model` entirely to let Rouva route to the cheapest capable model automatically.
|
|
57
57
|
*
|
|
58
58
|
* Other IDs are accepted by the type for forward compatibility. On
|
|
@@ -64,7 +64,7 @@ type RouvaProvider = 'anthropic' | 'openai' | 'gemini' | 'deepseek' | 'mistral'
|
|
|
64
64
|
*
|
|
65
65
|
* `'gpt-5.6'` is a deprecated alias the gateway maps to `'gpt-5.6-sol'`.
|
|
66
66
|
*/
|
|
67
|
-
type RouvaModel = 'claude-fable-5-1' | 'claude-fable-5' | 'claude-opus-5-5' | 'claude-opus-5' | 'claude-opus-4-8' | 'claude-opus-4-7' | 'claude-opus-4-6' | 'claude-sonnet-5-5' | 'claude-sonnet-5' | 'claude-sonnet-4-6' | 'claude-haiku-4-5-20251001' | 'gpt-6.1-sol' | 'gpt-6-sol' | 'gpt-6-luna' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5.6' | 'gpt-5' | 'gpt-5.4-mini' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4o' | 'gpt-4o-mini' | 'gemini-3.8-flash' | 'gemini-3.7-flash' | 'gemini-3.6-flash' | 'gemini-3.5-flash-lite' | 'gemini-2.5-pro' | 'gemini-2.5-flash' | 'deepseek-flash' | 'deepseek-flash-think' | 'deepseek-v4-pro' | 'mistral-large-latest' | 'mistral-small-latest' | 'kimi-k3' | 'kimi-k2.6' | 'grok-4.7' | 'grok-4.6' | 'grok-4.5' | 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'glm-5.3' | 'glm-5.2' | 'glm-4.7-flash' | 'qwen3.8-omni-flash' | 'qwen3.8-flash' | 'qwen3.7-plus' | 'qwen-max' | 'qwen-plus' | 'qwen-flash' | (string & {});
|
|
67
|
+
type RouvaModel = 'claude-fable-5-1' | 'claude-fable-5' | 'claude-opus-5-5' | 'claude-opus-5' | 'claude-opus-4-8' | 'claude-opus-4-7' | 'claude-opus-4-6' | 'claude-sonnet-5-5' | 'claude-sonnet-5' | 'claude-sonnet-4-6' | 'claude-haiku-5-5' | 'claude-haiku-4-5-20251001' | 'gpt-6-astra' | 'gpt-6.1-sol' | 'gpt-6.1-terra' | 'gpt-6-sol' | 'gpt-6-luna' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5.6' | 'gpt-5' | 'gpt-5.4-mini' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4o' | 'gpt-4o-mini' | 'gemini-4-argon' | 'gemini-3.8-flash' | 'gemini-3.7-flash' | 'gemini-3.6-flash' | 'gemini-3.5-flash-lite' | 'gemini-2.5-pro' | 'gemini-2.5-flash' | 'deepseek-flash' | 'deepseek-flash-think' | 'deepseek-v4-pro' | 'mistral-large-latest' | 'mistral-small-latest' | 'kimi-k3.1-pro' | 'kimi-k3' | 'kimi-k2.6' | 'grok-4.7' | 'grok-4.6' | 'grok-4.5' | 'grok-4.3' | 'grok-4.20-0309-reasoning' | 'glm-5.3' | 'glm-5.2' | 'glm-4.7-flash' | 'qwen3.8-omni-flash' | 'qwen3.8-flash' | 'qwen3.7-plus' | 'qwen-max' | 'qwen-plus' | 'qwen-flash' | 'MiniMax-M3.1-Flash' | 'MiniMax-M3' | (string & {});
|
|
68
68
|
/** Anthropic-style text block — the array form of the `system` param */
|
|
69
69
|
interface SystemTextBlock {
|
|
70
70
|
type: 'text';
|
|
@@ -108,7 +108,8 @@ interface ChatCompletionParams {
|
|
|
108
108
|
* Sampling temperature 0–1.
|
|
109
109
|
* The gateway omits it for models that only accept their default: OpenAI
|
|
110
110
|
* reasoning models (gpt-5 / gpt-6 families) and the Claude models that reject
|
|
111
|
-
* it (Opus 4.7 and newer, Sonnet 5 and newer, Fable)
|
|
111
|
+
* it (Opus 4.7 and newer, Sonnet 5 and newer, Haiku 5.5, Fable), and for
|
|
112
|
+
* models whose sampling is fixed (Kimi K3 / K3.1 Pro, MiniMax).
|
|
112
113
|
*/
|
|
113
114
|
temperature?: number;
|
|
114
115
|
/**
|
|
@@ -116,7 +117,8 @@ interface ChatCompletionParams {
|
|
|
116
117
|
* default) is treated as omitted. OpenAI reasoning models (gpt-5 / gpt-6
|
|
117
118
|
* families, o-series) don't support it: routing avoids them when top_p is
|
|
118
119
|
* set, and pinning one returns a 400. The gateway omits it for the Claude
|
|
119
|
-
* models that reject it (Opus 4.7 and newer, Sonnet 5 and newer, Fable)
|
|
120
|
+
* models that reject it (Opus 4.7 and newer, Sonnet 5 and newer, Haiku 5.5, Fable),
|
|
121
|
+
* and for models whose sampling is fixed (Kimi K3 / K3.1 Pro, MiniMax).
|
|
120
122
|
*/
|
|
121
123
|
top_p?: number;
|
|
122
124
|
/**
|
|
@@ -147,11 +149,11 @@ interface ChatCompletionParams {
|
|
|
147
149
|
* How hard a reasoning model thinks (gateway support since 2026-10-21).
|
|
148
150
|
* OpenAI models take it as is; Claude gets it as `output_config.effort`.
|
|
149
151
|
* Values depend on the model: gpt-5 / -mini / -nano take minimal–high;
|
|
150
|
-
* gpt-5.4-mini, gpt-5.6-*, gpt-6-luna / -sol take none–xhigh;
|
|
151
|
-
* low–xhigh; Claude Sonnet / Opus 4.6 low, medium,
|
|
152
|
-
* models also xhigh; GPT-4 models and Claude Haiku 4.5 don't take it. Routing
|
|
152
|
+
* gpt-5.4-mini, gpt-5.6-*, gpt-6-luna / -sol, gpt-6.1-terra take none–xhigh;
|
|
153
|
+
* gpt-6.1-sol and gpt-6-astra low–xhigh; Claude Sonnet / Opus 4.6 low, medium,
|
|
154
|
+
* high, max; newer Claude models (incl. Haiku 5.5) also xhigh; GPT-4 models and Claude Haiku 4.5 don't take it. Routing
|
|
153
155
|
* only picks a model that takes the value; a listed OpenAI or Claude model you
|
|
154
|
-
* name that doesn't is a 400 (other providers' models get the value as sent). On gpt-6-luna / -sol, `'none'` turns reasoning off (temperature,
|
|
156
|
+
* name that doesn't is a 400 (other providers' models get the value as sent). On gpt-6-luna / -sol and gpt-6.1-terra, `'none'` turns reasoning off (temperature,
|
|
155
157
|
* top_p and tools then work) and any other value turns it on (top_p is then
|
|
156
158
|
* a 400; tools are served through OpenAI's Responses API). `rouva.run()`
|
|
157
159
|
* doesn't accept it.
|
|
@@ -176,7 +178,7 @@ interface ChatCompletionParams {
|
|
|
176
178
|
* Anthropic `{ name, description, input_schema }`). Requires `model`.
|
|
177
179
|
* Tool schemas are provider-specific, so a tools request only ever moves to
|
|
178
180
|
* another model of the SAME provider (a routing override, or cheaper-model
|
|
179
|
-
* routing on /v1). gpt-6.1-sol and gpt-5.6-* take tools only through
|
|
181
|
+
* routing on /v1). gpt-6.1-sol, gpt-6-astra and gpt-5.6-* take tools only through
|
|
180
182
|
* OpenAI's Responses API: the gateway uses it for you and converts both ways
|
|
181
183
|
* (you still send and receive Chat Completions), and there `seed`, `stop` and
|
|
182
184
|
* a `max_tokens` below 16 are a 400. `rouva.run()` still refuses these models.
|
package/package.json
CHANGED