@zhivex-ai/qwen 0.16.1 → 0.16.3
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 +99 -2
- package/dist/annotations.d.ts +3 -0
- package/dist/annotations.d.ts.map +1 -0
- package/dist/annotations.js +42 -0
- package/dist/annotations.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +266 -62
- package/dist/index.js.map +1 -1
- package/dist/inference-audio.d.ts +2 -0
- package/dist/inference-audio.d.ts.map +1 -1
- package/dist/search-usage.d.ts +3 -0
- package/dist/search-usage.d.ts.map +1 -0
- package/dist/search-usage.js +11 -0
- package/dist/search-usage.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -52,7 +52,7 @@ const result = await generateText({
|
|
|
52
52
|
});
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
- Auto mode permits audio/video on Responses, including with hosted web search. Chat is selected for `maxTokens
|
|
55
|
+
- Auto mode permits audio/video on Responses, including with hosted web search. Chat is selected for ordinary requests with `maxTokens` alone, thinking budgets, or `tool_stream`; explicit incompatible combinations are rejected.
|
|
56
56
|
- Audio uses `AudioPart` (URL, base64, or bytes), with format inferred from the MIME type or overridden by `format`. Set `AudioPart.providerMetadata.use_multichannel: true` for two/four-channel spatial audio. Video uses a `video/*` `FilePart`. Audio/video is restricted to user messages; document files are rejected.
|
|
57
57
|
- Chat maps media to `input_audio` and `video_url`; Responses maps it to `input_audio.audio_url` and `input_video.video_url`.
|
|
58
58
|
- Thinking defaults to upstream `xhigh`. All seven shared efforts are accepted; Chat maps `minimal` to `low`, `high`/`max` to `xhigh`, and `none` disables thinking. Chat preserves thinking history. Effort and budget cannot be combined.
|
|
@@ -141,7 +141,7 @@ Token Plan terms limit these credentials to interactive use in programming and a
|
|
|
141
141
|
The default `apiMode: "auto"` selects the protocol required by the request:
|
|
142
142
|
|
|
143
143
|
- Responses for hosted tools, Qwen OCR file URLs, and `previous_response_id` continuation.
|
|
144
|
-
- Chat Completions for structured output, audio/video input (except Omni 3.8, which also supports Responses), `maxTokens
|
|
144
|
+
- Chat Completions for structured output, audio/video input (except Omni 3.8, which also supports Responses), ordinary requests with `maxTokens` alone, `reasoning.budgetTokens`, or `providerOptions.tool_stream`. Hosted search supports bounded Responses on documented families; see [output limits](#bounded-responses-search-and-citations).
|
|
145
145
|
- Either path for ordinary text and local function tools; automatic mode prefers Responses.
|
|
146
146
|
|
|
147
147
|
Use `providerOptions: { apiMode: "responses" }` or `{ apiMode: "chat" }` only when you need to force a compatible path. Unsupported combinations fail before the network request instead of silently dropping fields.
|
|
@@ -604,3 +604,100 @@ The provider exposes `decisionModel().decide()`, `textEmbeddingModel().embedNati
|
|
|
604
604
|
See the [support matrix, usage and validation boundaries](../../docs/QWEN_CLOUD_SUPPORT.md), [Decision model with a small measured comparison](../../docs/QWEN_CLOUD_DECISION.md), and [native ASR contract](../../docs/QWEN_CLOUD_ASR.md). Public Cloud-specific types are exported from this package. Live tests are opt-in and favor tiny requests and Flash/Lite models.
|
|
605
605
|
|
|
606
606
|
Detailed contracts: [audio and realtime](../../docs/QWEN_CLOUD_AUDIO.md), [embeddings](../../docs/QWEN_CLOUD_EMBEDDINGS.md), and [media and worlds](../../docs/QWEN_CLOUD_MEDIA.md). Use `qwen.temporaryKeys.create({ expiresInSeconds: 60 })` on your server to issue short-lived tokens for client SDKs; the returned token inherits the primary key permissions. `inferenceURL` explicitly overrides binary speech transport when using a custom gateway.
|
|
607
|
+
|
|
608
|
+
### Responses argument and stream errors
|
|
609
|
+
|
|
610
|
+
Responses function arguments must be JSON objects. Both `generate` and `stream`
|
|
611
|
+
reject invalid, empty or missing arguments with `ProviderToolCallError`, provider
|
|
612
|
+
`qwen`, transport `responses`, and diagnostic code
|
|
613
|
+
`QWEN_RESPONSES_TOOL_CALL_INVALID`. Reasons use the shared finite error contract;
|
|
614
|
+
non-object JSON uses `invalid_json`. Errors contain a fixed message, no raw
|
|
615
|
+
arguments or parser cause, and only validated terminal token accounting when
|
|
616
|
+
available. They are not automatically retried or repaired.
|
|
617
|
+
|
|
618
|
+
The streaming adapter buffers function calls until the response terminates and
|
|
619
|
+
validates the entire batch before emitting any `tool-call`. A malformed member,
|
|
620
|
+
incomplete response, truncated stream or contradictory completion rejects the
|
|
621
|
+
batch. Matching duplicate completion events materialize a call only once. Valid
|
|
622
|
+
call IDs and Qwen receipt metadata are preserved. Text and provider events may
|
|
623
|
+
already have been emitted; this does not undo prior steps or hosted effects.
|
|
624
|
+
`effectsPossible` is conservative when provider-side items have been observed;
|
|
625
|
+
the shared runtime additionally accounts for effects in prior local steps.
|
|
626
|
+
Cancellation keeps its original error instead of becoming a parser failure.
|
|
627
|
+
|
|
628
|
+
Malformed SSE JSON in Responses or Chat throws a separate bounded
|
|
629
|
+
`QwenStreamEventError` (`QWEN_SSE_EVENT_INVALID`, reason `invalid_json` or
|
|
630
|
+
`invalid_event`, explicit transport). It never retains the event body or a
|
|
631
|
+
sensitive `SyntaxError` cause. This diagnostic fix does not establish the cause
|
|
632
|
+
of historical Harness failures or certify model behavior.
|
|
633
|
+
|
|
634
|
+
Offline regression: `bun run test packages/qwen/tests/responses-invalid-arguments.test.ts`.
|
|
635
|
+
For an installed-artifact check, build and pack Core/Qwen with `bun pm pack`,
|
|
636
|
+
install both tarballs into an isolated consumer with a Core override pointing to
|
|
637
|
+
the same local tarball, copy `scripts/qwen-responses-packed-smoke.mjs` into that
|
|
638
|
+
consumer and run it with Bun. The smoke covers ten valid/invalid generate,
|
|
639
|
+
stream and SSE cases without provider credentials. Local tarball results do not
|
|
640
|
+
constitute registry publication or a live Harness matrix.
|
|
641
|
+
|
|
642
|
+
### Bounded Responses search and citations
|
|
643
|
+
|
|
644
|
+
For documented Qwen 3.5/3.6/3.7/3.8 Responses model IDs, Qwen3-Max and supported
|
|
645
|
+
DeepSeek/GLM/Kimi Responses profiles, `maxTokens` maps to `max_output_tokens` when
|
|
646
|
+
using Responses, including hosted `qwenWebSearchTool()`. The limit must be a safe
|
|
647
|
+
integer of at least 16. A `providerOptions.max_output_tokens` limit is also
|
|
648
|
+
validated; conflicting limits are rejected. Unknown families cannot silently
|
|
649
|
+
ignore a requested limit. Automatic mode retains Chat for ordinary requests with
|
|
650
|
+
`maxTokens` alone; hosted search or explicit `apiMode: "responses"` uses Responses.
|
|
651
|
+
Thinking budgets and other Chat-only options remain incompatible with hosted tools.
|
|
652
|
+
In Qwen 3.8 the limit includes reasoning plus answer tokens; the other documented
|
|
653
|
+
families limit answer tokens. `incomplete` responses finish with `length`, preserving
|
|
654
|
+
usage; incomplete callable batches still raise the existing typed error.
|
|
655
|
+
|
|
656
|
+
Streaming emits public URL annotations from `response.content_part.done`,
|
|
657
|
+
`response.output_item.done` and terminal snapshots as:
|
|
658
|
+
|
|
659
|
+
```json
|
|
660
|
+
{"type":"provider-data","provider":"qwen","data":{"type":"response.annotations","itemId":"msg_1","outputIndex":0,"contentIndex":0,"annotations":[{"type":"url_citation","url":"https://example.com","title":"Source","start_index":0,"end_index":5}]}}
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
Append these annotation deltas per output/content index; identical citations are
|
|
664
|
+
emitted once per response. Message IDs and character indices are retained when
|
|
665
|
+
available. Empty annotations do not produce fabricated sources. Only public URL
|
|
666
|
+
citation fields are forwarded, not message bodies, logprobs or arbitrary metadata.
|
|
667
|
+
Limits: 1024 annotations per part, 4096 distinct citations per response, 8192 URL
|
|
668
|
+
characters, 16384 title characters and 1024 ID characters. Invalid/unsupported
|
|
669
|
+
annotations and fields beyond these bounds are omitted. Non-streaming messages
|
|
670
|
+
carry the same data part; citation parts are never replayed as Responses input.
|
|
671
|
+
Partial citations already delivered remain available if the stream fails.
|
|
672
|
+
|
|
673
|
+
The [Responses contract](https://help.aliyun.com/en/model-studio/qwen-api-via-openai-responses)
|
|
674
|
+
notes that annotations are usually empty. This transport support does not certify
|
|
675
|
+
that every model/region returns citations, nor does token usage include hosted-search
|
|
676
|
+
charges. Consumers must certify their chosen route before enabling it.
|
|
677
|
+
|
|
678
|
+
### Internal search counters and limits
|
|
679
|
+
|
|
680
|
+
`generate()` message parts and streaming `provider-data` preserve
|
|
681
|
+
`usage.x_tools.web_search.count` as Core/SDK `HostedToolUsage` data:
|
|
682
|
+
|
|
683
|
+
```json
|
|
684
|
+
{"type":"hosted-tool-usage","audience":"internal","provider":"qwen","route":"responses","tool":"web_search","attemptId":"sdk-invocation-id","responseId":"upstream-id","unit":"call","quantity":2,"source":"usage.x_tools.web_search.count","aggregation":"snapshot","completeness":"complete","terminal":true}
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
A nonnegative safe integer is reported, including zero. Missing/invalid counts
|
|
688
|
+
produce `completeness: "unknown"` with no quantity, even if citations are empty.
|
|
689
|
+
Search-enabled streams start with an unknown nonterminal record; their terminal
|
|
690
|
+
record replaces it. Identical terminal snapshots are not double-counted.
|
|
691
|
+
IDs are bounded to 1024 characters. No raw queries or message payloads are added.
|
|
692
|
+
They are not replayed into provider input. Follow the
|
|
693
|
+
[shared metering contract](../../docs/OBSERVABILITY.md#hosted-search-metering)
|
|
694
|
+
for snapshot aggregation, retries, budgeting and UI filtering.
|
|
695
|
+
|
|
696
|
+
`model.capabilities.hostedTools` describes Responses metering as `provider-counter`
|
|
697
|
+
and its effective hosted-search limit as `unverified`. `max_tool_calls` and
|
|
698
|
+
`web_search` config limits `max_tool_calls`/`max_uses` are rejected rather than
|
|
699
|
+
silently relying on OpenAI compatibility. `maxTokens` limits output tokens only.
|
|
700
|
+
The documented limit on Qwen's separate Anthropic-compatible route does not
|
|
701
|
+
certify Responses and is not exposed by this adapter.
|
|
702
|
+
|
|
703
|
+
Counter evidence: [Model Studio web search](https://www.alibabacloud.com/help/en/model-studio/web-search).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAG1D,eAAO,MAAM,yBAAyB,eAEtB,GAAG,eAAe,OAAO,gBAAgB,OAAO,WAAW,OAAO,KAAG,SAAS,GAAG,SAuBhG,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Public citation fields only: never forward a message, reasoning or logprobs.
|
|
2
|
+
export const createAnnotationCollector = () => {
|
|
3
|
+
const seen = new Set();
|
|
4
|
+
return (part, outputIndex, contentIndex, itemId) => {
|
|
5
|
+
if (!Number.isSafeInteger(outputIndex) || Number(outputIndex) < 0 ||
|
|
6
|
+
!Number.isSafeInteger(contentIndex) || Number(contentIndex) < 0 || !Array.isArray(part?.annotations))
|
|
7
|
+
return;
|
|
8
|
+
const annotations = [];
|
|
9
|
+
for (const raw of part.annotations.slice(0, 1024)) {
|
|
10
|
+
if (!raw || typeof raw !== "object" || raw.type !== "url_citation")
|
|
11
|
+
continue;
|
|
12
|
+
const source = raw.url_citation ?? raw;
|
|
13
|
+
if (typeof source.url !== "string" || source.url.length > 8192)
|
|
14
|
+
continue;
|
|
15
|
+
try {
|
|
16
|
+
const url = new URL(source.url);
|
|
17
|
+
if (!["http:", "https:"].includes(url.protocol) || url.username || url.password)
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
const annotation = { type: "url_citation", url: source.url };
|
|
24
|
+
if (typeof source.title === "string" && source.title.length <= 16384)
|
|
25
|
+
annotation.title = source.title;
|
|
26
|
+
for (const key of ["start_index", "end_index"]) {
|
|
27
|
+
if (Number.isSafeInteger(source[key]) && source[key] >= 0)
|
|
28
|
+
annotation[key] = source[key];
|
|
29
|
+
}
|
|
30
|
+
const key = JSON.stringify([outputIndex, contentIndex, annotation]);
|
|
31
|
+
if (seen.has(key) || seen.size >= 4096)
|
|
32
|
+
continue;
|
|
33
|
+
seen.add(key);
|
|
34
|
+
annotations.push(annotation);
|
|
35
|
+
}
|
|
36
|
+
if (!annotations.length)
|
|
37
|
+
return;
|
|
38
|
+
return { type: "response.annotations", outputIndex: Number(outputIndex), contentIndex: Number(contentIndex),
|
|
39
|
+
...(typeof itemId === "string" && itemId.length <= 1024 ? { itemId } : {}), annotations };
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,IAAS,EAAE,WAAoB,EAAE,YAAqB,EAAE,MAAgB,EAAyB,EAAE;QACzG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC;YAC7D,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;YAAE,OAAO;QACjH,MAAM,WAAW,GAAgC,EAAE,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc;gBAAE,SAAS;YAC7E,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC;YACvC,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI;gBAAE,SAAS;YACzE,IAAI,CAAC;gBAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;oBAAE,SAAS;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvJ,MAAM,UAAU,GAA8B,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACxF,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK;gBAAE,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACtG,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC/C,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;YACpE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;gBAAE,SAAS;YACjD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,MAAM;YAAE,OAAO;QAChC,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;YACzG,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;IAC9F,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|