Skip to content

Commit 0fc33c1

Browse files
authored
Merge branch 'main' into fix/openai-file-search-tool-optional-query-param
2 parents cc95b9e + da92132 commit 0fc33c1

File tree

134 files changed

+1397
-336
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+1397
-336
lines changed

.changeset/gorgeous-pets-tie.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@ai-sdk/anthropic': patch
3+
---
4+
5+
fix(provider/anthorpic): add cacheControl to AnthropicProviderOptions

.changeset/unlucky-clouds-agree.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

content/providers/01-ai-sdk-providers/05-anthropic.mdx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -234,18 +234,13 @@ const result = await generateText({
234234

235235
#### Longer cache TTL
236236

237-
Anthropic also supports a longer 1-hour cache duration. At time of writing,
238-
[this is currently in beta](https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching#1-hour-cache-duration),
239-
so you must pass a `'anthropic-beta'` header set to `'extended-cache-ttl-2025-04-11'`.
237+
Anthropic also supports a longer 1-hour cache duration.
240238

241239
Here's an example:
242240

243241
```ts
244242
const result = await generateText({
245243
model: anthropic('claude-3-5-haiku-latest'),
246-
headers: {
247-
'anthropic-beta': 'extended-cache-ttl-2025-04-11',
248-
},
249244
messages: [
250245
{
251246
role: 'user',
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import { createOpenAI } from '@ai-sdk/openai';
2+
import { generateObject } from 'ai';
3+
import 'dotenv/config';
4+
import { z } from 'zod';
5+
6+
async function main() {
7+
let headers;
8+
const openai = createOpenAI({
9+
fetch: (url, init) => {
10+
headers = {
11+
...init?.headers,
12+
authorization: 'REDACTED',
13+
};
14+
return fetch(url, init);
15+
},
16+
});
17+
const options = {
18+
model: openai('gpt-4o-mini'),
19+
schema: z.object({
20+
recipe: z.object({
21+
name: z.string(),
22+
ingredients: z.array(
23+
z.object({
24+
name: z.string(),
25+
amount: z.string(),
26+
}),
27+
),
28+
steps: z.array(z.string()),
29+
}),
30+
}),
31+
prompt: 'Generate a lasagna recipe.',
32+
};
33+
await generateObject(options);
34+
35+
console.log('REQUEST HEADERS');
36+
console.log(headers);
37+
}
38+
39+
main().catch(console.error);

examples/ai-core/src/generate-text/anthropic-cache-control-beta-1h.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { anthropic } from '@ai-sdk/anthropic';
1+
import { anthropic, AnthropicProviderOptions } from '@ai-sdk/anthropic';
22
import { generateText } from 'ai';
33
import 'dotenv/config';
44
import fs from 'node:fs';
@@ -27,7 +27,7 @@ async function main() {
2727
providerOptions: {
2828
anthropic: {
2929
cacheControl: { type: 'ephemeral', ttl: '1h' },
30-
},
30+
} satisfies AnthropicProviderOptions,
3131
},
3232
},
3333
{

packages/ai/CHANGELOG.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,27 @@
11
# ai
22

3+
## 5.0.44
4+
5+
### Patch Changes
6+
7+
- Updated dependencies [f49f924]
8+
- @ai-sdk/gateway@1.0.23
9+
10+
## 5.0.43
11+
12+
### Patch Changes
13+
14+
- 0294b58: feat(ai): set `ai`, `@ai-sdk/provider-utils`, and runtime in `user-agent` header
15+
- Updated dependencies [0294b58]
16+
- @ai-sdk/provider-utils@3.0.9
17+
- @ai-sdk/gateway@1.0.22
18+
19+
## 5.0.42
20+
21+
### Patch Changes
22+
23+
- de5c066: fix(ai): forwarded providerExecuted flag in validateUIMessages
24+
325
## 5.0.41
426

527
### Patch Changes

packages/ai/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ai",
3-
"version": "5.0.41",
3+
"version": "5.0.44",
44
"description": "AI SDK by Vercel - The AI Toolkit for TypeScript and JavaScript",
55
"license": "Apache-2.0",
66
"sideEffects": false,

packages/ai/src/embed/__snapshots__/embed-many.test.ts.snap

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ exports[`telemetry > should not record telemetry inputs / outputs when disabled
2727
"ai.model.id": "mock-model-id",
2828
"ai.model.provider": "mock-provider",
2929
"ai.operationId": "ai.embedMany",
30+
"ai.request.headers.user-agent": "ai/0.0.0-test",
3031
"ai.settings.maxRetries": 2,
3132
"ai.usage.tokens": 10,
3233
"operation.name": "ai.embedMany",
@@ -39,6 +40,7 @@ exports[`telemetry > should not record telemetry inputs / outputs when disabled
3940
"ai.model.id": "mock-model-id",
4041
"ai.model.provider": "mock-provider",
4142
"ai.operationId": "ai.embedMany.doEmbed",
43+
"ai.request.headers.user-agent": "ai/0.0.0-test",
4244
"ai.settings.maxRetries": 2,
4345
"ai.usage.tokens": 10,
4446
"operation.name": "ai.embedMany.doEmbed",
@@ -61,6 +63,7 @@ exports[`telemetry > should record telemetry data when enabled (multiple calls p
6163
"ai.model.id": "mock-model-id",
6264
"ai.model.provider": "mock-provider",
6365
"ai.operationId": "ai.embedMany",
66+
"ai.request.headers.user-agent": "ai/0.0.0-test",
6467
"ai.settings.maxRetries": 2,
6568
"ai.telemetry.functionId": "test-function-id",
6669
"ai.telemetry.metadata.test1": "value1",
@@ -86,6 +89,7 @@ exports[`telemetry > should record telemetry data when enabled (multiple calls p
8689
"ai.model.id": "mock-model-id",
8790
"ai.model.provider": "mock-provider",
8891
"ai.operationId": "ai.embedMany.doEmbed",
92+
"ai.request.headers.user-agent": "ai/0.0.0-test",
8993
"ai.settings.maxRetries": 2,
9094
"ai.telemetry.functionId": "test-function-id",
9195
"ai.telemetry.metadata.test1": "value1",
@@ -109,6 +113,7 @@ exports[`telemetry > should record telemetry data when enabled (multiple calls p
109113
"ai.model.id": "mock-model-id",
110114
"ai.model.provider": "mock-provider",
111115
"ai.operationId": "ai.embedMany.doEmbed",
116+
"ai.request.headers.user-agent": "ai/0.0.0-test",
112117
"ai.settings.maxRetries": 2,
113118
"ai.telemetry.functionId": "test-function-id",
114119
"ai.telemetry.metadata.test1": "value1",
@@ -138,6 +143,7 @@ exports[`telemetry > should record telemetry data when enabled (single call path
138143
"ai.model.id": "mock-model-id",
139144
"ai.model.provider": "mock-provider",
140145
"ai.operationId": "ai.embedMany",
146+
"ai.request.headers.user-agent": "ai/0.0.0-test",
141147
"ai.settings.maxRetries": 2,
142148
"ai.telemetry.functionId": "test-function-id",
143149
"ai.telemetry.metadata.test1": "value1",
@@ -164,6 +170,7 @@ exports[`telemetry > should record telemetry data when enabled (single call path
164170
"ai.model.id": "mock-model-id",
165171
"ai.model.provider": "mock-provider",
166172
"ai.operationId": "ai.embedMany.doEmbed",
173+
"ai.request.headers.user-agent": "ai/0.0.0-test",
167174
"ai.settings.maxRetries": 2,
168175
"ai.telemetry.functionId": "test-function-id",
169176
"ai.telemetry.metadata.test1": "value1",

packages/ai/src/embed/__snapshots__/embed.test.ts.snap

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ exports[`telemetry > should not record telemetry inputs / outputs when disabled
99
"ai.model.id": "mock-model-id",
1010
"ai.model.provider": "mock-provider",
1111
"ai.operationId": "ai.embed",
12+
"ai.request.headers.user-agent": "ai/0.0.0-test",
1213
"ai.settings.maxRetries": 2,
1314
"ai.usage.tokens": 10,
1415
"operation.name": "ai.embed",
@@ -21,6 +22,7 @@ exports[`telemetry > should not record telemetry inputs / outputs when disabled
2122
"ai.model.id": "mock-model-id",
2223
"ai.model.provider": "mock-provider",
2324
"ai.operationId": "ai.embed.doEmbed",
25+
"ai.request.headers.user-agent": "ai/0.0.0-test",
2426
"ai.settings.maxRetries": 2,
2527
"ai.usage.tokens": 10,
2628
"operation.name": "ai.embed.doEmbed",
@@ -39,6 +41,7 @@ exports[`telemetry > should record telemetry data when enabled 1`] = `
3941
"ai.model.id": "mock-model-id",
4042
"ai.model.provider": "mock-provider",
4143
"ai.operationId": "ai.embed",
44+
"ai.request.headers.user-agent": "ai/0.0.0-test",
4245
"ai.settings.maxRetries": 2,
4346
"ai.telemetry.functionId": "test-function-id",
4447
"ai.telemetry.metadata.test1": "value1",
@@ -59,6 +62,7 @@ exports[`telemetry > should record telemetry data when enabled 1`] = `
5962
"ai.model.id": "mock-model-id",
6063
"ai.model.provider": "mock-provider",
6164
"ai.operationId": "ai.embed.doEmbed",
65+
"ai.request.headers.user-agent": "ai/0.0.0-test",
6266
"ai.settings.maxRetries": 2,
6367
"ai.telemetry.functionId": "test-function-id",
6468
"ai.telemetry.metadata.test1": "value1",

packages/ai/src/embed/embed-many.test.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ import { Embedding, EmbeddingModelUsage } from '../types';
77
import { createResolvablePromise } from '../util/create-resolvable-promise';
88
import { embedMany } from './embed-many';
99

10+
vi.mock('../version', () => {
11+
return {
12+
VERSION: '0.0.0-test',
13+
};
14+
});
15+
1016
const dummyEmbeddings = [
1117
[0.1, 0.2, 0.3],
1218
[0.4, 0.5, 0.6],
@@ -303,13 +309,16 @@ describe('options.headers', () => {
303309
doEmbed: async ({ headers }) => {
304310
assert.deepStrictEqual(headers, {
305311
'custom-request-header': 'request-header-value',
312+
'user-agent': 'ai/0.0.0-test',
306313
});
307314

308315
return { embeddings: dummyEmbeddings };
309316
},
310317
}),
311318
values: testValues,
312-
headers: { 'custom-request-header': 'request-header-value' },
319+
headers: {
320+
'custom-request-header': 'request-header-value',
321+
},
313322
});
314323

315324
assert.deepStrictEqual(result.embeddings, dummyEmbeddings);
@@ -336,7 +345,9 @@ describe('options.providerOptions', () => {
336345

337346
expect(model.doEmbed).toHaveBeenCalledWith({
338347
abortSignal: undefined,
339-
headers: undefined,
348+
headers: {
349+
'user-agent': 'ai/0.0.0-test',
350+
},
340351
providerOptions: {
341352
aProvider: { someKey: 'someValue' },
342353
},

0 commit comments

Comments
 (0)