From ef7b1121eb15e78379f4a8e8efc15f673a74b95d Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Thu, 14 Aug 2025 21:44:10 +0900 Subject: [PATCH 01/19] enabled built-in tools code_interpreter,file_search on Azure Responses API --- packages/azure/src/azure-openai-provider.ts | 7 +++++++ packages/azure/src/azure-openai-tools.ts | 9 +++++++++ packages/openai/src/internal/index.ts | 2 ++ 3 files changed, 18 insertions(+) create mode 100644 packages/azure/src/azure-openai-tools.ts diff --git a/packages/azure/src/azure-openai-provider.ts b/packages/azure/src/azure-openai-provider.ts index a7332d79f285..c742a942eb5f 100644 --- a/packages/azure/src/azure-openai-provider.ts +++ b/packages/azure/src/azure-openai-provider.ts @@ -16,6 +16,7 @@ import { TranscriptionModelV2, } from '@ai-sdk/provider'; import { FetchFunction, loadApiKey, loadSetting } from '@ai-sdk/provider-utils'; +import { azureOpenaiTools } from './azure-openai-tools'; export interface AzureOpenAIProvider extends ProviderV2 { (deploymentId: string): LanguageModelV2; @@ -71,6 +72,11 @@ Creates an Azure OpenAI model for text embeddings. * Creates an Azure OpenAI model for speech generation. */ speech(deploymentId: string): SpeechModelV2; + + /** + * AzureOpenAI-specific tools. + */ + tools: typeof azureOpenaiTools; } export interface AzureOpenAIProviderSettings { @@ -238,6 +244,7 @@ export function createAzure( provider.responses = createResponsesModel; provider.transcription = createTranscriptionModel; provider.speech = createSpeechModel; + provider.tools = azureOpenaiTools; return provider; } diff --git a/packages/azure/src/azure-openai-tools.ts b/packages/azure/src/azure-openai-tools.ts new file mode 100644 index 000000000000..d45d1b8f0c8f --- /dev/null +++ b/packages/azure/src/azure-openai-tools.ts @@ -0,0 +1,9 @@ +import { + codeInterpreter, + fileSearch, +} from '@ai-sdk/openai/internal'; + +export const azureOpenaiTools = { + codeInterpreter, + fileSearch, +}; \ No newline at end of file diff --git a/packages/openai/src/internal/index.ts b/packages/openai/src/internal/index.ts index ab8e78cd7674..dc308659af57 100644 --- a/packages/openai/src/internal/index.ts +++ b/packages/openai/src/internal/index.ts @@ -11,3 +11,5 @@ export * from '../transcription/openai-transcription-options'; export * from '../speech/openai-speech-model'; export * from '../speech/openai-speech-options'; export * from '../responses/openai-responses-language-model'; +export * from '../tool/code-interpreter'; +export * from '../tool/file-search'; \ No newline at end of file From d248f7d737edc12c0d577259a022e4d4238fef44 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Fri, 15 Aug 2025 21:05:04 +0900 Subject: [PATCH 02/19] make changeset --- .changeset/aoai_tools_codei_files.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/aoai_tools_codei_files.md diff --git a/.changeset/aoai_tools_codei_files.md b/.changeset/aoai_tools_codei_files.md new file mode 100644 index 000000000000..afbe77e0bab8 --- /dev/null +++ b/.changeset/aoai_tools_codei_files.md @@ -0,0 +1,6 @@ +--- +'@ai-sdk/openai': patch +'@ai-sdk/azure': patch +--- + +feat(azure): enables code_interpreter and file_search capabilities in the Azure provider through the Responses API From d269ed4b108690fc1e079bff997ef07378f2a79f Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Sat, 23 Aug 2025 23:42:47 +0900 Subject: [PATCH 03/19] document add file_search code_interpreter --- .../01-ai-sdk-providers/04-azure.mdx | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/content/providers/01-ai-sdk-providers/04-azure.mdx b/content/providers/01-ai-sdk-providers/04-azure.mdx index 2d193a92be9d..c56e603f658b 100644 --- a/content/providers/01-ai-sdk-providers/04-azure.mdx +++ b/content/providers/01-ai-sdk-providers/04-azure.mdx @@ -324,6 +324,69 @@ The following OpenAI-specific metadata is returned: - **reasoningTokens** _number_ The number of reasoning tokens that the model generated. +#### File Search + +The Azure OpenAI responses API supports file search through the `azure.tools.fileSearch` tool. + +You can force the use of the file search tool by setting the `toolChoice` parameter to `{ type: 'tool', toolName: 'file_search' }`. + +```ts +const result = await generateText({ + model: azure.responses('gpt-5'), + prompt: 'What does the document say about user authentication?', + tools: { + file_search: azure.tools.fileSearch({ + // optional configuration: + vectorStoreIds: ['vs_123', 'vs_456'], + maxNumResults: 10, + ranking: { + ranker: 'auto', + }, + }), + }, + // Force file search tool: + toolChoice: { type: 'tool', toolName: 'file_search' }, +}); +``` + + + The tool must be named `file_search` when using Azure OpenAI's file search + functionality. This name is required by Azure OpenAI's API specification and cannot + be customized. + + +#### Code Interpreter + +The Azure OpenAI responses API supports the code interpreter tool through the `azure.tools.codeInterpreter` tool. This allows models to write and execute Python code. + +```ts +import { azure } from '@ai-sdk/azure'; +import { generateText } from 'ai'; + +const result = await generateText({ + model: azure.responses('gpt-5'), + prompt: 'Write and run Python code to calculate the factorial of 10', + tools: { + code_interpreter: azure.tools.codeInterpreter({ + // optional configuration: + container: { + fileIds: ['assistant-123', 'assistant-456'], // optional file IDs to make available + }, + }), + }, +}); +``` + +The code interpreter tool can be configured with: + +- **container**: Either a container ID string or an object with `fileIds` to specify uploaded files that should be available to the code interpreter + + + The tool must be named `code_interpreter` when using Azure OpenAI's code interpreter + functionality. This name is required by Azure OpenAI's API specification and cannot + be customized. + + #### PDF support The Azure OpenAI Responses API supports reading PDF files. From 69843d1c8f488bdb50b2848e8a9a3e4d529cabc0 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Wed, 27 Aug 2025 22:16:47 +0900 Subject: [PATCH 04/19] add test --- .../azure/src/azure-openai-provider.test.ts | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/packages/azure/src/azure-openai-provider.test.ts b/packages/azure/src/azure-openai-provider.test.ts index e63141210cad..d5800e63c77c 100644 --- a/packages/azure/src/azure-openai-provider.test.ts +++ b/packages/azure/src/azure-openai-provider.test.ts @@ -719,5 +719,84 @@ describe('responses', () => { }, ]); }); + + it('should send include provider option for file search results', async () => { + prepareJsonResponse(); + + const {warnings} = await provider.responses('test-deployment').doGenerate({ + prompt: TEST_PROMPT, + tools: [ + { + type: 'provider-defined', + id: 'openai.file_search', + name: 'file_search', + args: { + vectorStoreIds: ['vs_123', 'vs_456'], + maxNumResults: 10, + ranking: { + ranker: 'auto', + }, + }, + }, + ], + }); + + expect(await server.calls[0].requestBodyJson).toMatchInlineSnapshot(` + { + "input": [ + { + "content": [ + { + "text": "Hello", + "type": "input_text", + }, + ], + "role": "user", + }, + ], + "model": "test-deployment", + "tools": [ + { + "max_num_results": 10, + "ranking_options": { + "ranker": "auto", + }, + "type": "file_search", + "vector_store_ids": [ + "vs_123", + "vs_456", + ], + }, + ], + } + `); + + expect(warnings).toStrictEqual([]); + }); + + it('should send include provider option for file search results', async () => { + prepareJsonResponse(); + + const {warnings} = await provider.responses('test-deployment').doGenerate({ + prompt: TEST_PROMPT, + providerOptions: { + openai: { + include: ['file_search_call.results'], + } + } + }); + + expect(await server.calls[0].requestBodyJson).toStrictEqual({ + model: 'test-deployment', + input: [ + { role: 'user', content: [{ type: 'input_text', text: 'Hello' }] }, + ], + include: ['file_search_call.results'], + }); + + expect(warnings).toStrictEqual([]); + }); + + }); }); From 06f0659bb86b92d1ad1b9a94d8f36e8e7e28b27b Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Wed, 27 Aug 2025 22:48:19 +0900 Subject: [PATCH 05/19] prettier-fix --- .../01-ai-sdk-providers/04-azure.mdx | 10 +++---- .../azure/src/azure-openai-provider.test.ts | 30 ++++++++++--------- packages/azure/src/azure-openai-tools.ts | 7 ++--- packages/openai/src/internal/index.ts | 2 +- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/content/providers/01-ai-sdk-providers/04-azure.mdx b/content/providers/01-ai-sdk-providers/04-azure.mdx index c56e603f658b..d4861fa34077 100644 --- a/content/providers/01-ai-sdk-providers/04-azure.mdx +++ b/content/providers/01-ai-sdk-providers/04-azure.mdx @@ -351,8 +351,8 @@ const result = await generateText({ The tool must be named `file_search` when using Azure OpenAI's file search - functionality. This name is required by Azure OpenAI's API specification and cannot - be customized. + functionality. This name is required by Azure OpenAI's API specification and + cannot be customized. #### Code Interpreter @@ -382,9 +382,9 @@ The code interpreter tool can be configured with: - **container**: Either a container ID string or an object with `fileIds` to specify uploaded files that should be available to the code interpreter - The tool must be named `code_interpreter` when using Azure OpenAI's code interpreter - functionality. This name is required by Azure OpenAI's API specification and cannot - be customized. + The tool must be named `code_interpreter` when using Azure OpenAI's code + interpreter functionality. This name is required by Azure OpenAI's API + specification and cannot be customized. #### PDF support diff --git a/packages/azure/src/azure-openai-provider.test.ts b/packages/azure/src/azure-openai-provider.test.ts index d5800e63c77c..13f52cb81699 100644 --- a/packages/azure/src/azure-openai-provider.test.ts +++ b/packages/azure/src/azure-openai-provider.test.ts @@ -723,9 +723,11 @@ describe('responses', () => { it('should send include provider option for file search results', async () => { prepareJsonResponse(); - const {warnings} = await provider.responses('test-deployment').doGenerate({ - prompt: TEST_PROMPT, - tools: [ + const { warnings } = await provider + .responses('test-deployment') + .doGenerate({ + prompt: TEST_PROMPT, + tools: [ { type: 'provider-defined', id: 'openai.file_search', @@ -739,7 +741,7 @@ describe('responses', () => { }, }, ], - }); + }); expect(await server.calls[0].requestBodyJson).toMatchInlineSnapshot(` { @@ -777,14 +779,16 @@ describe('responses', () => { it('should send include provider option for file search results', async () => { prepareJsonResponse(); - const {warnings} = await provider.responses('test-deployment').doGenerate({ - prompt: TEST_PROMPT, - providerOptions: { - openai: { - include: ['file_search_call.results'], - } - } - }); + const { warnings } = await provider + .responses('test-deployment') + .doGenerate({ + prompt: TEST_PROMPT, + providerOptions: { + openai: { + include: ['file_search_call.results'], + }, + }, + }); expect(await server.calls[0].requestBodyJson).toStrictEqual({ model: 'test-deployment', @@ -796,7 +800,5 @@ describe('responses', () => { expect(warnings).toStrictEqual([]); }); - - }); }); diff --git a/packages/azure/src/azure-openai-tools.ts b/packages/azure/src/azure-openai-tools.ts index d45d1b8f0c8f..8462308d64fd 100644 --- a/packages/azure/src/azure-openai-tools.ts +++ b/packages/azure/src/azure-openai-tools.ts @@ -1,9 +1,6 @@ -import { - codeInterpreter, - fileSearch, -} from '@ai-sdk/openai/internal'; +import { codeInterpreter, fileSearch } from '@ai-sdk/openai/internal'; export const azureOpenaiTools = { codeInterpreter, fileSearch, -}; \ No newline at end of file +}; diff --git a/packages/openai/src/internal/index.ts b/packages/openai/src/internal/index.ts index dc308659af57..6e74ed5e850c 100644 --- a/packages/openai/src/internal/index.ts +++ b/packages/openai/src/internal/index.ts @@ -12,4 +12,4 @@ export * from '../speech/openai-speech-model'; export * from '../speech/openai-speech-options'; export * from '../responses/openai-responses-language-model'; export * from '../tool/code-interpreter'; -export * from '../tool/file-search'; \ No newline at end of file +export * from '../tool/file-search'; From bd8394a9b5a55901e366e9e04d7ec0070f1bebf6 Mon Sep 17 00:00:00 2001 From: tsuzaki430 <58161200+tsuzaki430@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:49:34 +0900 Subject: [PATCH 06/19] Update packages/azure/src/azure-openai-provider.test.ts Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> --- packages/azure/src/azure-openai-provider.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/azure/src/azure-openai-provider.test.ts b/packages/azure/src/azure-openai-provider.test.ts index 13f52cb81699..206a274e81e4 100644 --- a/packages/azure/src/azure-openai-provider.test.ts +++ b/packages/azure/src/azure-openai-provider.test.ts @@ -776,7 +776,7 @@ describe('responses', () => { expect(warnings).toStrictEqual([]); }); - it('should send include provider option for file search results', async () => { + it('should forward include provider options to request body', async () => { prepareJsonResponse(); const { warnings } = await provider From dfde37348a0401308e80f2f21028eaa2f66f81dd Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Fri, 29 Aug 2025 13:41:27 +0900 Subject: [PATCH 07/19] fix changeset error --- .changeset/aoai_tools_codei_files.md | 6 ------ .changeset/fruity-webs-return.md | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 .changeset/aoai_tools_codei_files.md create mode 100644 .changeset/fruity-webs-return.md diff --git a/.changeset/aoai_tools_codei_files.md b/.changeset/aoai_tools_codei_files.md deleted file mode 100644 index afbe77e0bab8..000000000000 --- a/.changeset/aoai_tools_codei_files.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@ai-sdk/openai': patch -'@ai-sdk/azure': patch ---- - -feat(azure): enables code_interpreter and file_search capabilities in the Azure provider through the Responses API diff --git a/.changeset/fruity-webs-return.md b/.changeset/fruity-webs-return.md new file mode 100644 index 000000000000..ab89653ecdae --- /dev/null +++ b/.changeset/fruity-webs-return.md @@ -0,0 +1,6 @@ +--- +'@ai-sdk/openai': minor +'@ai-sdk/azure': minor +--- + +enables code_interpreter and file_search capabilities in the Azure provider through the Responses API From 64730584d663839ff5588dd97bc809b6fa140ed0 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Fri, 29 Aug 2025 13:43:07 +0900 Subject: [PATCH 08/19] fix changeset 2 --- .changeset/fruity-webs-return.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/fruity-webs-return.md b/.changeset/fruity-webs-return.md index ab89653ecdae..684672097026 100644 --- a/.changeset/fruity-webs-return.md +++ b/.changeset/fruity-webs-return.md @@ -1,6 +1,6 @@ --- -'@ai-sdk/openai': minor -'@ai-sdk/azure': minor +'@ai-sdk/openai': patch +'@ai-sdk/azure': patch --- enables code_interpreter and file_search capabilities in the Azure provider through the Responses API From 8722bf46393e75584912561244da374973692d1b Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Mon, 8 Sep 2025 21:18:16 +0900 Subject: [PATCH 09/19] add example for file search --- .../azure-responses-file-search.ts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 examples/ai-core/src/generate-text/azure-responses-file-search.ts diff --git a/examples/ai-core/src/generate-text/azure-responses-file-search.ts b/examples/ai-core/src/generate-text/azure-responses-file-search.ts new file mode 100644 index 000000000000..537680029022 --- /dev/null +++ b/examples/ai-core/src/generate-text/azure-responses-file-search.ts @@ -0,0 +1,45 @@ +import { azure } from '@ai-sdk/azure'; +import { generateText } from 'ai'; +import 'dotenv/config'; + +/** + * prepare 1 + * Please add parameters in your .env file for initialize Azure OpenAI. + * AZURE_RESOURCE_NAME="" + * AZURE_API_KEY="" + * + * prepare 2 + * Please create vector store and put file in your vector. + * URL:AOAI vector store portal + * https://oai.azure.com/resource/vectorstore + */ + + +const VectorStoreId = 'vs_xxxxxxxxxxxxxxxxxxxxxxxx'; // put your vector store id. + +async function main() { + // Basic text generation + const basicResult = await generateText({ + model: azure.responses('gpt-4.1-mini'), + prompt: 'What is quantum computing?', // please question about your documents. + tools: { + file_search: azure.tools.fileSearch({ + // optional configuration: + vectorStoreIds: [VectorStoreId], + maxNumResults: 10, + ranking: { + ranker: 'auto', + }, + }), + }, + // Force file search tool: + toolChoice: { type: 'tool', toolName: 'file_search' }, + }); + + console.log('\n=== Basic Text Generation ==='); + console.log(basicResult.text); + console.log(basicResult.toolCalls); + console.log(basicResult.toolResults); +} + +main().catch(console.error); From 17ff6c0b726d16257983ad674ff4091403a7fd45 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Mon, 8 Sep 2025 21:43:45 +0900 Subject: [PATCH 10/19] add example for code interpreter --- .../azure-responses-code-interpreter.ts | 31 +++++++++++++++++ .../azure-responses-code-interpreter.ts | 33 +++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts create mode 100644 examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts diff --git a/examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts b/examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts new file mode 100644 index 000000000000..6e5145fbd719 --- /dev/null +++ b/examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts @@ -0,0 +1,31 @@ +import { azure } from '@ai-sdk/azure'; +import { generateText } from 'ai'; +import 'dotenv/config'; + +/** + * prepare + * Please add parameters in your .env file for initialize Azure OpenAI.. + * AZURE_RESOURCE_NAME="" + * AZURE_API_KEY="" + */ + + +async function main() { + // Basic text generation + const basicResult = await generateText({ + model: azure.responses('gpt-5-mini'), + prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + tools: { + code_interpreter: azure.tools.codeInterpreter({ + }), + }, + }); + + console.log('\n=== Basic Text Generation ==='); + console.log(basicResult.text); + console.log('\n=== Other Outputs ==='); + console.log(basicResult.toolCalls); + console.log(basicResult.toolResults); +} + +main().catch(console.error); diff --git a/examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts b/examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts new file mode 100644 index 000000000000..5542710ce9e1 --- /dev/null +++ b/examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts @@ -0,0 +1,33 @@ +import { azure } from '@ai-sdk/azure'; +import { streamText } from 'ai'; +import 'dotenv/config'; + +/** + * prepare + * Please add parameters in your .env file for initialize Azure OpenAI.. + * AZURE_RESOURCE_NAME="" + * AZURE_API_KEY="" + */ + + +async function main() { + // Basic text generation + const result = streamText({ + model: azure.responses('gpt-5-mini'), + prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + tools: { + code_interpreter: azure.tools.codeInterpreter({ + }), + }, + }); + + console.log('\n=== Basic Text Generation ==='); + for await (const textPart of result.textStream) { + process.stdout.write(textPart); + } + console.log('\n=== Other Outputs ==='); + console.log(await result.toolCalls); + console.log(await result.toolResults); +} + +main().catch(console.error); From 0071e4b7378d92550bc22879a42b7fd2b509ac3e Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Mon, 8 Sep 2025 21:57:09 +0900 Subject: [PATCH 11/19] add example for openai code interpreter --- .../openai-responses-code-interpreter.ts | 24 +++++++++++++++++ .../openai-responses-code-interpreter.ts | 26 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts create mode 100644 examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts diff --git a/examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts b/examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts new file mode 100644 index 000000000000..755bd085ca8e --- /dev/null +++ b/examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts @@ -0,0 +1,24 @@ +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; +import 'dotenv/config'; + + +async function main() { + // Basic text generation + const basicResult = await generateText({ + model: openai.responses('gpt-4.1-mini'), + prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + tools: { + code_interpreter: openai.tools.codeInterpreter({ + }), + }, + }); + + console.log('\n=== Basic Text Generation ==='); + console.log(basicResult.text); + console.log('\n=== Other Outputs ==='); + console.log(basicResult.toolCalls); + console.log(basicResult.toolResults); +} + +main().catch(console.error); diff --git a/examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts b/examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts new file mode 100644 index 000000000000..7569a7968d76 --- /dev/null +++ b/examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts @@ -0,0 +1,26 @@ +import { openai } from '@ai-sdk/openai'; +import { streamText } from 'ai'; +import 'dotenv/config'; + + +async function main() { + // Basic text generation + const result = streamText({ + model: openai.responses('gpt-4.1-mini'), + prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + tools: { + code_interpreter: openai.tools.codeInterpreter({ + }), + }, + }); + + console.log('\n=== Basic Text Generation ==='); + for await (const textPart of result.textStream) { + process.stdout.write(textPart); + } + console.log('\n=== Other Outputs ==='); + console.log(await result.toolCalls); + console.log(await result.toolResults); +} + +main().catch(console.error); From 3756af2b4c63ff406cc162b13d3d33fddb7eb6e6 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Mon, 8 Sep 2025 22:05:09 +0900 Subject: [PATCH 12/19] prettier-fix --- .../generate-text/azure-responses-code-interpreter.ts | 7 +++---- .../src/generate-text/azure-responses-file-search.ts | 5 ++--- .../generate-text/openai-responses-code-interpreter.ts | 7 +++---- .../src/stream-text/azure-responses-code-interpreter.ts | 9 ++++----- .../src/stream-text/openai-responses-code-interpreter.ts | 9 ++++----- 5 files changed, 16 insertions(+), 21 deletions(-) diff --git a/examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts b/examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts index 6e5145fbd719..03924c553e97 100644 --- a/examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts +++ b/examples/ai-core/src/generate-text/azure-responses-code-interpreter.ts @@ -9,15 +9,14 @@ import 'dotenv/config'; * AZURE_API_KEY="" */ - async function main() { // Basic text generation const basicResult = await generateText({ model: azure.responses('gpt-5-mini'), - prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + prompt: + 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', tools: { - code_interpreter: azure.tools.codeInterpreter({ - }), + code_interpreter: azure.tools.codeInterpreter({}), }, }); diff --git a/examples/ai-core/src/generate-text/azure-responses-file-search.ts b/examples/ai-core/src/generate-text/azure-responses-file-search.ts index 537680029022..b2deef94528b 100644 --- a/examples/ai-core/src/generate-text/azure-responses-file-search.ts +++ b/examples/ai-core/src/generate-text/azure-responses-file-search.ts @@ -7,21 +7,20 @@ import 'dotenv/config'; * Please add parameters in your .env file for initialize Azure OpenAI. * AZURE_RESOURCE_NAME="" * AZURE_API_KEY="" - * + * * prepare 2 * Please create vector store and put file in your vector. * URL:AOAI vector store portal * https://oai.azure.com/resource/vectorstore */ - const VectorStoreId = 'vs_xxxxxxxxxxxxxxxxxxxxxxxx'; // put your vector store id. async function main() { // Basic text generation const basicResult = await generateText({ model: azure.responses('gpt-4.1-mini'), - prompt: 'What is quantum computing?', // please question about your documents. + prompt: 'What is quantum computing?', // please question about your documents. tools: { file_search: azure.tools.fileSearch({ // optional configuration: diff --git a/examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts b/examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts index 755bd085ca8e..50744ffa37b2 100644 --- a/examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts +++ b/examples/ai-core/src/generate-text/openai-responses-code-interpreter.ts @@ -2,15 +2,14 @@ import { openai } from '@ai-sdk/openai'; import { generateText } from 'ai'; import 'dotenv/config'; - async function main() { // Basic text generation const basicResult = await generateText({ model: openai.responses('gpt-4.1-mini'), - prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + prompt: + 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', tools: { - code_interpreter: openai.tools.codeInterpreter({ - }), + code_interpreter: openai.tools.codeInterpreter({}), }, }); diff --git a/examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts b/examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts index 5542710ce9e1..43d9d511dc62 100644 --- a/examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts +++ b/examples/ai-core/src/stream-text/azure-responses-code-interpreter.ts @@ -9,15 +9,14 @@ import 'dotenv/config'; * AZURE_API_KEY="" */ - async function main() { // Basic text generation const result = streamText({ model: azure.responses('gpt-5-mini'), - prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + prompt: + 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', tools: { - code_interpreter: azure.tools.codeInterpreter({ - }), + code_interpreter: azure.tools.codeInterpreter({}), }, }); @@ -27,7 +26,7 @@ async function main() { } console.log('\n=== Other Outputs ==='); console.log(await result.toolCalls); - console.log(await result.toolResults); + console.log(await result.toolResults); } main().catch(console.error); diff --git a/examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts b/examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts index 7569a7968d76..9b229937f417 100644 --- a/examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts +++ b/examples/ai-core/src/stream-text/openai-responses-code-interpreter.ts @@ -2,15 +2,14 @@ import { openai } from '@ai-sdk/openai'; import { streamText } from 'ai'; import 'dotenv/config'; - async function main() { // Basic text generation const result = streamText({ model: openai.responses('gpt-4.1-mini'), - prompt: 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', + prompt: + 'Create a program that generates five random numbers between 1 and 100 with two decimal places, and show me the execution results.', tools: { - code_interpreter: openai.tools.codeInterpreter({ - }), + code_interpreter: openai.tools.codeInterpreter({}), }, }); @@ -20,7 +19,7 @@ async function main() { } console.log('\n=== Other Outputs ==='); console.log(await result.toolCalls); - console.log(await result.toolResults); + console.log(await result.toolResults); } main().catch(console.error); From 71db15500a5d83d97f8935d32b3795fa1cb07385 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Mon, 8 Sep 2025 23:13:39 +0900 Subject: [PATCH 13/19] add example for file search to compare openai vs azure --- .../openai-responses-file-search.ts | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 examples/ai-core/src/generate-text/openai-responses-file-search.ts diff --git a/examples/ai-core/src/generate-text/openai-responses-file-search.ts b/examples/ai-core/src/generate-text/openai-responses-file-search.ts new file mode 100644 index 000000000000..cd349fff19bc --- /dev/null +++ b/examples/ai-core/src/generate-text/openai-responses-file-search.ts @@ -0,0 +1,39 @@ +import { openai } from '@ai-sdk/openai'; +import { generateText } from 'ai'; +import 'dotenv/config'; + +/** + * prepare + * Please create vector store and put file in your vector. + * URL:openai vector store dashboard + * https://platform.openai.com/storage/vector_stores/ + */ + +const VectorStoreId = 'vs_xxxxxxxxxxxxxxxxxxxxxxxx'; // put your vector store id. + +async function main() { + // Basic text generation + const basicResult = await generateText({ + model: openai.responses('gpt-4.1-mini'), + prompt: 'What is quantum computing?', // please question about your documents. + tools: { + file_search: openai.tools.fileSearch({ + // optional configuration: + vectorStoreIds: [VectorStoreId], + maxNumResults: 10, + ranking: { + ranker: 'auto', + }, + }), + }, + // Force file search tool: + toolChoice: { type: 'tool', toolName: 'file_search' }, + }); + + console.log('\n=== Basic Text Generation ==='); + console.log(basicResult.text); + console.log(basicResult.toolCalls); + console.log(basicResult.toolResults); +} + +main().catch(console.error); From cad907a9e285e6dcac5ad9744eb4e33f1ced49e5 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Wed, 10 Sep 2025 00:39:43 +0900 Subject: [PATCH 14/19] add filesearch example for streamText --- .../openai-responses-file-search.ts | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 examples/ai-core/src/stream-text/openai-responses-file-search.ts diff --git a/examples/ai-core/src/stream-text/openai-responses-file-search.ts b/examples/ai-core/src/stream-text/openai-responses-file-search.ts new file mode 100644 index 000000000000..384d286748ae --- /dev/null +++ b/examples/ai-core/src/stream-text/openai-responses-file-search.ts @@ -0,0 +1,42 @@ +import { openai } from '@ai-sdk/openai'; +import { streamText } from 'ai'; +import 'dotenv/config'; + +/** + * prepare + * Please create vector store and put file in your vector. + * URL:openai vector store dashboard + * https://platform.openai.com/storage/vector_stores/ + */ + +const VectorStoreId = 'vs_xxxxxxxxxxxxxxxxxxxxxxxx'; // put your vector store id. + +async function main() { + // Basic text generation + const result = await streamText({ + model: openai.responses('gpt-4.1-mini'), + prompt: 'What is quantum computing?', // please question about your documents. + tools: { + file_search: openai.tools.fileSearch({ + // optional configuration: + vectorStoreIds: [VectorStoreId], + maxNumResults: 10, + ranking: { + ranker: 'auto', + }, + }), + }, + // Force file search tool: + toolChoice: { type: 'tool', toolName: 'file_search' }, + }); + + console.log('\n=== Basic Text Generation ==='); + for await (const textPart of result.textStream) { + process.stdout.write(textPart); + } + console.log('\n=== Other Outputs ==='); + console.dir(await result.toolCalls, { depth: null }); + console.dir(await result.toolResults, { depth: null }); +} + +main().catch(console.error); From 264de2d1c76107ca91dc92b2ecd0dba8ee91d640 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Wed, 10 Sep 2025 00:45:31 +0900 Subject: [PATCH 15/19] small fix --- .../ai-core/src/generate-text/openai-responses-file-search.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/ai-core/src/generate-text/openai-responses-file-search.ts b/examples/ai-core/src/generate-text/openai-responses-file-search.ts index cd349fff19bc..7211051fe9f7 100644 --- a/examples/ai-core/src/generate-text/openai-responses-file-search.ts +++ b/examples/ai-core/src/generate-text/openai-responses-file-search.ts @@ -32,8 +32,8 @@ async function main() { console.log('\n=== Basic Text Generation ==='); console.log(basicResult.text); - console.log(basicResult.toolCalls); - console.log(basicResult.toolResults); + console.dir(basicResult.toolCalls, { depth: null }); + console.dir(basicResult.toolResults, { depth: null }); } main().catch(console.error); From f4b787ebd4240420144d1bb3b5a132bb100659b6 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Thu, 25 Sep 2025 11:03:05 +0900 Subject: [PATCH 16/19] merge --- packages/codemod/README.md | 142 ++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/packages/codemod/README.md b/packages/codemod/README.md index 36157d366ab7..ecbb0ccb6795 100644 --- a/packages/codemod/README.md +++ b/packages/codemod/README.md @@ -53,82 +53,82 @@ npx @ai-sdk/codemod v5/rename-format-stream-part . ### v4 Codemods (v3 → v4 Migration) -| Codemod | Description | -| ----------------------------------------------------- | -------------------------------------------------------------- | +| Codemod | Description | +| ------- | ----------- | | `v4/remove-ai-stream-methods-from-stream-text-result` | Transforms v4/remove ai stream methods from stream text result | -| `v4/remove-anthropic-facade` | Transforms v4/remove anthropic facade | -| `v4/remove-await-streamobject` | Transforms v4/remove await streamobject | -| `v4/remove-await-streamtext` | Transforms v4/remove await streamtext | -| `v4/remove-deprecated-provider-registry-exports` | Transforms v4/remove deprecated provider registry exports | -| `v4/remove-experimental-ai-fn-exports` | Transforms v4/remove experimental ai fn exports | -| `v4/remove-experimental-message-types` | Transforms v4/remove experimental message types | -| `v4/remove-experimental-streamdata` | Transforms v4/remove experimental streamdata | -| `v4/remove-experimental-tool` | Transforms v4/remove experimental tool | -| `v4/remove-experimental-useassistant` | Transforms v4/remove experimental useassistant | -| `v4/remove-google-facade` | Transforms v4/remove google facade | -| `v4/remove-isxxxerror` | Transforms v4/remove isxxxerror | -| `v4/remove-metadata-with-headers` | Transforms v4/remove metadata with headers | -| `v4/remove-mistral-facade` | Transforms v4/remove mistral facade | -| `v4/remove-openai-facade` | Transforms v4/remove openai facade | -| `v4/rename-format-stream-part` | Transforms v4/rename format stream part | -| `v4/rename-parse-stream-part` | Transforms v4/rename parse stream part | -| `v4/replace-baseurl` | Transforms v4/replace baseurl | -| `v4/replace-continuation-steps` | Transforms v4/replace continuation steps | -| `v4/replace-langchain-toaistream` | Transforms v4/replace langchain toaistream | -| `v4/replace-nanoid` | Transforms v4/replace nanoid | -| `v4/replace-roundtrips-with-maxsteps` | Transforms v4/replace roundtrips with maxsteps | -| `v4/replace-token-usage-types` | Transforms v4/replace token usage types | -| `v4/rewrite-framework-imports` | Transforms v4/rewrite framework imports | +| `v4/remove-anthropic-facade` | Transforms v4/remove anthropic facade | +| `v4/remove-await-streamobject` | Transforms v4/remove await streamobject | +| `v4/remove-await-streamtext` | Transforms v4/remove await streamtext | +| `v4/remove-deprecated-provider-registry-exports` | Transforms v4/remove deprecated provider registry exports | +| `v4/remove-experimental-ai-fn-exports` | Transforms v4/remove experimental ai fn exports | +| `v4/remove-experimental-message-types` | Transforms v4/remove experimental message types | +| `v4/remove-experimental-streamdata` | Transforms v4/remove experimental streamdata | +| `v4/remove-experimental-tool` | Transforms v4/remove experimental tool | +| `v4/remove-experimental-useassistant` | Transforms v4/remove experimental useassistant | +| `v4/remove-google-facade` | Transforms v4/remove google facade | +| `v4/remove-isxxxerror` | Transforms v4/remove isxxxerror | +| `v4/remove-metadata-with-headers` | Transforms v4/remove metadata with headers | +| `v4/remove-mistral-facade` | Transforms v4/remove mistral facade | +| `v4/remove-openai-facade` | Transforms v4/remove openai facade | +| `v4/rename-format-stream-part` | Transforms v4/rename format stream part | +| `v4/rename-parse-stream-part` | Transforms v4/rename parse stream part | +| `v4/replace-baseurl` | Transforms v4/replace baseurl | +| `v4/replace-continuation-steps` | Transforms v4/replace continuation steps | +| `v4/replace-langchain-toaistream` | Transforms v4/replace langchain toaistream | +| `v4/replace-nanoid` | Transforms v4/replace nanoid | +| `v4/replace-roundtrips-with-maxsteps` | Transforms v4/replace roundtrips with maxsteps | +| `v4/replace-token-usage-types` | Transforms v4/replace token usage types | +| `v4/rewrite-framework-imports` | Transforms v4/rewrite framework imports | ### v5 Codemods (v4 → v5 Migration) -| Codemod | Description | -| --------------------------------------------------------------------- | ------------------------------------------------------------------------------ | -| `v5/flatten-streamtext-file-properties` | Transforms v5/flatten streamtext file properties | -| `v5/import-LanguageModelV2-from-provider-package` | Transforms v5/import LanguageModelV2 from provider package | -| `v5/migrate-to-data-stream-protocol-v2` | Transforms v5/migrate to data stream protocol v2 | -| `v5/move-image-model-maxImagesPerCall` | Transforms v5/move image model maxImagesPerCall | -| `v5/move-langchain-adapter` | Transforms v5/move langchain adapter | -| `v5/move-maxsteps-to-stopwhen` | Transforms v5/move maxsteps to stopwhen | -| `v5/move-provider-options` | Transforms v5/move provider options | -| `v5/move-react-to-ai-sdk` | Transforms v5/move react to ai sdk | -| `v5/move-ui-utils-to-ai` | Transforms v5/move ui utils to ai | -| `v5/remove-experimental-wrap-language-model` | Transforms v5/remove experimental wrap language model | -| `v5/remove-get-ui-text` | Transforms v5/remove get ui text | -| `v5/remove-openai-compatibility` | Transforms v5/remove openai compatibility | -| `v5/remove-sendExtraMessageFields` | Transforms v5/remove sendExtraMessageFields | -| `v5/rename-IDGenerator-to-IdGenerator` | Transforms v5/rename IDGenerator to IdGenerator | -| `v5/rename-converttocoremessages-to-converttomodelmessages` | Transforms v5/rename converttocoremessages to converttomodelmessages | -| `v5/rename-core-message-to-model-message` | Transforms v5/rename core message to model message | -| `v5/rename-datastream-methods-to-uimessage` | Transforms v5/rename datastream methods to uimessage | -| `v5/rename-datastream-transform-stream` | Transforms v5/rename datastream transform stream | -| `v5/rename-languagemodelv1providermetadata` | Transforms v5/rename languagemodelv1providermetadata | -| `v5/rename-max-tokens-to-max-output-tokens` | Transforms v5/rename max tokens to max output tokens | -| `v5/rename-message-to-ui-message` | Transforms v5/rename message to ui message | -| `v5/rename-mime-type-to-media-type` | Transforms v5/rename mime type to media type | +| Codemod | Description | +| ------- | ----------- | +| `v5/flatten-streamtext-file-properties` | Transforms v5/flatten streamtext file properties | +| `v5/import-LanguageModelV2-from-provider-package` | Transforms v5/import LanguageModelV2 from provider package | +| `v5/migrate-to-data-stream-protocol-v2` | Transforms v5/migrate to data stream protocol v2 | +| `v5/move-image-model-maxImagesPerCall` | Transforms v5/move image model maxImagesPerCall | +| `v5/move-langchain-adapter` | Transforms v5/move langchain adapter | +| `v5/move-maxsteps-to-stopwhen` | Transforms v5/move maxsteps to stopwhen | +| `v5/move-provider-options` | Transforms v5/move provider options | +| `v5/move-react-to-ai-sdk` | Transforms v5/move react to ai sdk | +| `v5/move-ui-utils-to-ai` | Transforms v5/move ui utils to ai | +| `v5/remove-experimental-wrap-language-model` | Transforms v5/remove experimental wrap language model | +| `v5/remove-get-ui-text` | Transforms v5/remove get ui text | +| `v5/remove-openai-compatibility` | Transforms v5/remove openai compatibility | +| `v5/remove-sendExtraMessageFields` | Transforms v5/remove sendExtraMessageFields | +| `v5/rename-IDGenerator-to-IdGenerator` | Transforms v5/rename IDGenerator to IdGenerator | +| `v5/rename-converttocoremessages-to-converttomodelmessages` | Transforms v5/rename converttocoremessages to converttomodelmessages | +| `v5/rename-core-message-to-model-message` | Transforms v5/rename core message to model message | +| `v5/rename-datastream-methods-to-uimessage` | Transforms v5/rename datastream methods to uimessage | +| `v5/rename-datastream-transform-stream` | Transforms v5/rename datastream transform stream | +| `v5/rename-languagemodelv1providermetadata` | Transforms v5/rename languagemodelv1providermetadata | +| `v5/rename-max-tokens-to-max-output-tokens` | Transforms v5/rename max tokens to max output tokens | +| `v5/rename-message-to-ui-message` | Transforms v5/rename message to ui message | +| `v5/rename-mime-type-to-media-type` | Transforms v5/rename mime type to media type | | `v5/rename-pipedatastreamtoresponse-to-pipeuimessagestreamtoresponse` | Transforms v5/rename pipedatastreamtoresponse to pipeuimessagestreamtoresponse | -| `v5/rename-reasoning-properties` | Transforms v5/rename reasoning properties | -| `v5/rename-reasoning-to-reasoningText` | Transforms v5/rename reasoning to reasoningText | -| `v5/rename-request-options` | Transforms v5/rename request options | -| `v5/rename-todatastreamresponse-to-touimessagestreamresponse` | Transforms v5/rename todatastreamresponse to touimessagestreamresponse | -| `v5/rename-tool-parameters-to-inputschema` | Transforms v5/rename tool parameters to inputschema | -| `v5/replace-bedrock-snake-case` | Transforms v5/replace bedrock snake case | -| `v5/replace-content-with-parts` | Transforms v5/replace content with parts | -| `v5/replace-experimental-provider-metadata` | Transforms v5/replace experimental provider metadata | -| `v5/replace-image-type-with-file-type` | Transforms v5/replace image type with file type | -| `v5/replace-llamaindex-adapter` | Transforms v5/replace llamaindex adapter | -| `v5/replace-oncompletion-with-onfinal` | Transforms v5/replace oncompletion with onfinal | -| `v5/replace-provider-metadata-with-provider-options` | Transforms v5/replace provider metadata with provider options | -| `v5/replace-rawresponse-with-response` | Transforms v5/replace rawresponse with response | -| `v5/replace-redacted-reasoning-type` | Transforms v5/replace redacted reasoning type | -| `v5/replace-simulate-streaming` | Transforms v5/replace simulate streaming | -| `v5/replace-textdelta-with-text` | Transforms v5/replace textdelta with text | -| `v5/replace-usage-token-properties` | Transforms v5/replace usage token properties | -| `v5/replace-zod-import-with-v3` | Transforms v5/replace zod import with v3 | -| `v5/require-createIdGenerator-size-argument` | Transforms v5/require createIdGenerator size argument | -| `v5/restructure-file-stream-parts` | Transforms v5/restructure file stream parts | -| `v5/restructure-source-stream-parts` | Transforms v5/restructure source stream parts | -| `v5/rsc-package` | Transforms v5/rsc package | +| `v5/rename-reasoning-properties` | Transforms v5/rename reasoning properties | +| `v5/rename-reasoning-to-reasoningText` | Transforms v5/rename reasoning to reasoningText | +| `v5/rename-request-options` | Transforms v5/rename request options | +| `v5/rename-todatastreamresponse-to-touimessagestreamresponse` | Transforms v5/rename todatastreamresponse to touimessagestreamresponse | +| `v5/rename-tool-parameters-to-inputschema` | Transforms v5/rename tool parameters to inputschema | +| `v5/replace-bedrock-snake-case` | Transforms v5/replace bedrock snake case | +| `v5/replace-content-with-parts` | Transforms v5/replace content with parts | +| `v5/replace-experimental-provider-metadata` | Transforms v5/replace experimental provider metadata | +| `v5/replace-image-type-with-file-type` | Transforms v5/replace image type with file type | +| `v5/replace-llamaindex-adapter` | Transforms v5/replace llamaindex adapter | +| `v5/replace-oncompletion-with-onfinal` | Transforms v5/replace oncompletion with onfinal | +| `v5/replace-provider-metadata-with-provider-options` | Transforms v5/replace provider metadata with provider options | +| `v5/replace-rawresponse-with-response` | Transforms v5/replace rawresponse with response | +| `v5/replace-redacted-reasoning-type` | Transforms v5/replace redacted reasoning type | +| `v5/replace-simulate-streaming` | Transforms v5/replace simulate streaming | +| `v5/replace-textdelta-with-text` | Transforms v5/replace textdelta with text | +| `v5/replace-usage-token-properties` | Transforms v5/replace usage token properties | +| `v5/replace-zod-import-with-v3` | Transforms v5/replace zod import with v3 | +| `v5/require-createIdGenerator-size-argument` | Transforms v5/require createIdGenerator size argument | +| `v5/restructure-file-stream-parts` | Transforms v5/restructure file stream parts | +| `v5/restructure-source-stream-parts` | Transforms v5/restructure source stream parts | +| `v5/rsc-package` | Transforms v5/rsc package | ## CLI Options From 051a17172fd1652419a52da4418a214b408806f2 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Fri, 26 Sep 2025 09:24:03 +0900 Subject: [PATCH 17/19] fix type error --- packages/azure/src/azure-openai-tools.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/azure/src/azure-openai-tools.ts b/packages/azure/src/azure-openai-tools.ts index 8462308d64fd..15018f42574a 100644 --- a/packages/azure/src/azure-openai-tools.ts +++ b/packages/azure/src/azure-openai-tools.ts @@ -1,6 +1,9 @@ import { codeInterpreter, fileSearch } from '@ai-sdk/openai/internal'; -export const azureOpenaiTools = { +export const azureOpenaiTools: { + codeInterpreter: typeof codeInterpreter; + fileSearch: typeof fileSearch; +} = { codeInterpreter, fileSearch, }; From 5f40e14f66995c96a95fc4675915e9e25578266c Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Fri, 26 Sep 2025 09:50:26 +0900 Subject: [PATCH 18/19] add test azure file search in ai-core --- .../azure-responses-file-search.ts | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 examples/ai-core/src/stream-text/azure-responses-file-search.ts diff --git a/examples/ai-core/src/stream-text/azure-responses-file-search.ts b/examples/ai-core/src/stream-text/azure-responses-file-search.ts new file mode 100644 index 000000000000..ec075033251d --- /dev/null +++ b/examples/ai-core/src/stream-text/azure-responses-file-search.ts @@ -0,0 +1,48 @@ +import { azure } from '@ai-sdk/azure'; +import { streamText } from 'ai'; +import 'dotenv/config'; + +/** + * prepare 1 + * Please add parameters in your .env file for initialize Azure OpenAI. + * AZURE_RESOURCE_NAME="" + * AZURE_API_KEY="" + * + * prepare 2 + * Please create vector store and put file in your vector. + * URL:AOAI vector store portal + * https://oai.azure.com/resource/vectorstore + */ + +const VectorStoreId = 'vs_xxxxxxxxxxxxxxxxxxxxxxxx'; // put your vector store id. + +async function main() { + // Basic text generation + const result = await streamText({ + model: azure.responses('gpt-4.1-mini'), + prompt: 'What is quantum computing?', // please question about your documents. + tools: { + file_search: azure.tools.fileSearch({ + // optional configuration: + vectorStoreIds: [VectorStoreId], + maxNumResults: 10, + ranking: { + ranker: 'auto', + }, + }), + }, + // Force file search tool: + toolChoice: { type: 'tool', toolName: 'file_search' }, + }); + + console.log('\n=== Basic Text Generation ==='); + for await (const textPart of result.textStream) { + process.stdout.write(textPart); + } + console.log('\n=== Other Outputs ==='); + console.dir(await result.toolCalls, { depth: Infinity }); + console.dir(await result.toolResults, { depth: Infinity }); + console.dir(await result.sources, { depth: Infinity }); +} + +main().catch(console.error); From ebff7ee48dc987b8907c1b5f85ef65a6ede25358 Mon Sep 17 00:00:00 2001 From: tsuzaki430 Date: Fri, 26 Sep 2025 09:50:41 +0900 Subject: [PATCH 19/19] prettier-fix --- packages/codemod/README.md | 142 ++++++++++++++++++------------------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/packages/codemod/README.md b/packages/codemod/README.md index ecbb0ccb6795..36157d366ab7 100644 --- a/packages/codemod/README.md +++ b/packages/codemod/README.md @@ -53,82 +53,82 @@ npx @ai-sdk/codemod v5/rename-format-stream-part . ### v4 Codemods (v3 → v4 Migration) -| Codemod | Description | -| ------- | ----------- | +| Codemod | Description | +| ----------------------------------------------------- | -------------------------------------------------------------- | | `v4/remove-ai-stream-methods-from-stream-text-result` | Transforms v4/remove ai stream methods from stream text result | -| `v4/remove-anthropic-facade` | Transforms v4/remove anthropic facade | -| `v4/remove-await-streamobject` | Transforms v4/remove await streamobject | -| `v4/remove-await-streamtext` | Transforms v4/remove await streamtext | -| `v4/remove-deprecated-provider-registry-exports` | Transforms v4/remove deprecated provider registry exports | -| `v4/remove-experimental-ai-fn-exports` | Transforms v4/remove experimental ai fn exports | -| `v4/remove-experimental-message-types` | Transforms v4/remove experimental message types | -| `v4/remove-experimental-streamdata` | Transforms v4/remove experimental streamdata | -| `v4/remove-experimental-tool` | Transforms v4/remove experimental tool | -| `v4/remove-experimental-useassistant` | Transforms v4/remove experimental useassistant | -| `v4/remove-google-facade` | Transforms v4/remove google facade | -| `v4/remove-isxxxerror` | Transforms v4/remove isxxxerror | -| `v4/remove-metadata-with-headers` | Transforms v4/remove metadata with headers | -| `v4/remove-mistral-facade` | Transforms v4/remove mistral facade | -| `v4/remove-openai-facade` | Transforms v4/remove openai facade | -| `v4/rename-format-stream-part` | Transforms v4/rename format stream part | -| `v4/rename-parse-stream-part` | Transforms v4/rename parse stream part | -| `v4/replace-baseurl` | Transforms v4/replace baseurl | -| `v4/replace-continuation-steps` | Transforms v4/replace continuation steps | -| `v4/replace-langchain-toaistream` | Transforms v4/replace langchain toaistream | -| `v4/replace-nanoid` | Transforms v4/replace nanoid | -| `v4/replace-roundtrips-with-maxsteps` | Transforms v4/replace roundtrips with maxsteps | -| `v4/replace-token-usage-types` | Transforms v4/replace token usage types | -| `v4/rewrite-framework-imports` | Transforms v4/rewrite framework imports | +| `v4/remove-anthropic-facade` | Transforms v4/remove anthropic facade | +| `v4/remove-await-streamobject` | Transforms v4/remove await streamobject | +| `v4/remove-await-streamtext` | Transforms v4/remove await streamtext | +| `v4/remove-deprecated-provider-registry-exports` | Transforms v4/remove deprecated provider registry exports | +| `v4/remove-experimental-ai-fn-exports` | Transforms v4/remove experimental ai fn exports | +| `v4/remove-experimental-message-types` | Transforms v4/remove experimental message types | +| `v4/remove-experimental-streamdata` | Transforms v4/remove experimental streamdata | +| `v4/remove-experimental-tool` | Transforms v4/remove experimental tool | +| `v4/remove-experimental-useassistant` | Transforms v4/remove experimental useassistant | +| `v4/remove-google-facade` | Transforms v4/remove google facade | +| `v4/remove-isxxxerror` | Transforms v4/remove isxxxerror | +| `v4/remove-metadata-with-headers` | Transforms v4/remove metadata with headers | +| `v4/remove-mistral-facade` | Transforms v4/remove mistral facade | +| `v4/remove-openai-facade` | Transforms v4/remove openai facade | +| `v4/rename-format-stream-part` | Transforms v4/rename format stream part | +| `v4/rename-parse-stream-part` | Transforms v4/rename parse stream part | +| `v4/replace-baseurl` | Transforms v4/replace baseurl | +| `v4/replace-continuation-steps` | Transforms v4/replace continuation steps | +| `v4/replace-langchain-toaistream` | Transforms v4/replace langchain toaistream | +| `v4/replace-nanoid` | Transforms v4/replace nanoid | +| `v4/replace-roundtrips-with-maxsteps` | Transforms v4/replace roundtrips with maxsteps | +| `v4/replace-token-usage-types` | Transforms v4/replace token usage types | +| `v4/rewrite-framework-imports` | Transforms v4/rewrite framework imports | ### v5 Codemods (v4 → v5 Migration) -| Codemod | Description | -| ------- | ----------- | -| `v5/flatten-streamtext-file-properties` | Transforms v5/flatten streamtext file properties | -| `v5/import-LanguageModelV2-from-provider-package` | Transforms v5/import LanguageModelV2 from provider package | -| `v5/migrate-to-data-stream-protocol-v2` | Transforms v5/migrate to data stream protocol v2 | -| `v5/move-image-model-maxImagesPerCall` | Transforms v5/move image model maxImagesPerCall | -| `v5/move-langchain-adapter` | Transforms v5/move langchain adapter | -| `v5/move-maxsteps-to-stopwhen` | Transforms v5/move maxsteps to stopwhen | -| `v5/move-provider-options` | Transforms v5/move provider options | -| `v5/move-react-to-ai-sdk` | Transforms v5/move react to ai sdk | -| `v5/move-ui-utils-to-ai` | Transforms v5/move ui utils to ai | -| `v5/remove-experimental-wrap-language-model` | Transforms v5/remove experimental wrap language model | -| `v5/remove-get-ui-text` | Transforms v5/remove get ui text | -| `v5/remove-openai-compatibility` | Transforms v5/remove openai compatibility | -| `v5/remove-sendExtraMessageFields` | Transforms v5/remove sendExtraMessageFields | -| `v5/rename-IDGenerator-to-IdGenerator` | Transforms v5/rename IDGenerator to IdGenerator | -| `v5/rename-converttocoremessages-to-converttomodelmessages` | Transforms v5/rename converttocoremessages to converttomodelmessages | -| `v5/rename-core-message-to-model-message` | Transforms v5/rename core message to model message | -| `v5/rename-datastream-methods-to-uimessage` | Transforms v5/rename datastream methods to uimessage | -| `v5/rename-datastream-transform-stream` | Transforms v5/rename datastream transform stream | -| `v5/rename-languagemodelv1providermetadata` | Transforms v5/rename languagemodelv1providermetadata | -| `v5/rename-max-tokens-to-max-output-tokens` | Transforms v5/rename max tokens to max output tokens | -| `v5/rename-message-to-ui-message` | Transforms v5/rename message to ui message | -| `v5/rename-mime-type-to-media-type` | Transforms v5/rename mime type to media type | +| Codemod | Description | +| --------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| `v5/flatten-streamtext-file-properties` | Transforms v5/flatten streamtext file properties | +| `v5/import-LanguageModelV2-from-provider-package` | Transforms v5/import LanguageModelV2 from provider package | +| `v5/migrate-to-data-stream-protocol-v2` | Transforms v5/migrate to data stream protocol v2 | +| `v5/move-image-model-maxImagesPerCall` | Transforms v5/move image model maxImagesPerCall | +| `v5/move-langchain-adapter` | Transforms v5/move langchain adapter | +| `v5/move-maxsteps-to-stopwhen` | Transforms v5/move maxsteps to stopwhen | +| `v5/move-provider-options` | Transforms v5/move provider options | +| `v5/move-react-to-ai-sdk` | Transforms v5/move react to ai sdk | +| `v5/move-ui-utils-to-ai` | Transforms v5/move ui utils to ai | +| `v5/remove-experimental-wrap-language-model` | Transforms v5/remove experimental wrap language model | +| `v5/remove-get-ui-text` | Transforms v5/remove get ui text | +| `v5/remove-openai-compatibility` | Transforms v5/remove openai compatibility | +| `v5/remove-sendExtraMessageFields` | Transforms v5/remove sendExtraMessageFields | +| `v5/rename-IDGenerator-to-IdGenerator` | Transforms v5/rename IDGenerator to IdGenerator | +| `v5/rename-converttocoremessages-to-converttomodelmessages` | Transforms v5/rename converttocoremessages to converttomodelmessages | +| `v5/rename-core-message-to-model-message` | Transforms v5/rename core message to model message | +| `v5/rename-datastream-methods-to-uimessage` | Transforms v5/rename datastream methods to uimessage | +| `v5/rename-datastream-transform-stream` | Transforms v5/rename datastream transform stream | +| `v5/rename-languagemodelv1providermetadata` | Transforms v5/rename languagemodelv1providermetadata | +| `v5/rename-max-tokens-to-max-output-tokens` | Transforms v5/rename max tokens to max output tokens | +| `v5/rename-message-to-ui-message` | Transforms v5/rename message to ui message | +| `v5/rename-mime-type-to-media-type` | Transforms v5/rename mime type to media type | | `v5/rename-pipedatastreamtoresponse-to-pipeuimessagestreamtoresponse` | Transforms v5/rename pipedatastreamtoresponse to pipeuimessagestreamtoresponse | -| `v5/rename-reasoning-properties` | Transforms v5/rename reasoning properties | -| `v5/rename-reasoning-to-reasoningText` | Transforms v5/rename reasoning to reasoningText | -| `v5/rename-request-options` | Transforms v5/rename request options | -| `v5/rename-todatastreamresponse-to-touimessagestreamresponse` | Transforms v5/rename todatastreamresponse to touimessagestreamresponse | -| `v5/rename-tool-parameters-to-inputschema` | Transforms v5/rename tool parameters to inputschema | -| `v5/replace-bedrock-snake-case` | Transforms v5/replace bedrock snake case | -| `v5/replace-content-with-parts` | Transforms v5/replace content with parts | -| `v5/replace-experimental-provider-metadata` | Transforms v5/replace experimental provider metadata | -| `v5/replace-image-type-with-file-type` | Transforms v5/replace image type with file type | -| `v5/replace-llamaindex-adapter` | Transforms v5/replace llamaindex adapter | -| `v5/replace-oncompletion-with-onfinal` | Transforms v5/replace oncompletion with onfinal | -| `v5/replace-provider-metadata-with-provider-options` | Transforms v5/replace provider metadata with provider options | -| `v5/replace-rawresponse-with-response` | Transforms v5/replace rawresponse with response | -| `v5/replace-redacted-reasoning-type` | Transforms v5/replace redacted reasoning type | -| `v5/replace-simulate-streaming` | Transforms v5/replace simulate streaming | -| `v5/replace-textdelta-with-text` | Transforms v5/replace textdelta with text | -| `v5/replace-usage-token-properties` | Transforms v5/replace usage token properties | -| `v5/replace-zod-import-with-v3` | Transforms v5/replace zod import with v3 | -| `v5/require-createIdGenerator-size-argument` | Transforms v5/require createIdGenerator size argument | -| `v5/restructure-file-stream-parts` | Transforms v5/restructure file stream parts | -| `v5/restructure-source-stream-parts` | Transforms v5/restructure source stream parts | -| `v5/rsc-package` | Transforms v5/rsc package | +| `v5/rename-reasoning-properties` | Transforms v5/rename reasoning properties | +| `v5/rename-reasoning-to-reasoningText` | Transforms v5/rename reasoning to reasoningText | +| `v5/rename-request-options` | Transforms v5/rename request options | +| `v5/rename-todatastreamresponse-to-touimessagestreamresponse` | Transforms v5/rename todatastreamresponse to touimessagestreamresponse | +| `v5/rename-tool-parameters-to-inputschema` | Transforms v5/rename tool parameters to inputschema | +| `v5/replace-bedrock-snake-case` | Transforms v5/replace bedrock snake case | +| `v5/replace-content-with-parts` | Transforms v5/replace content with parts | +| `v5/replace-experimental-provider-metadata` | Transforms v5/replace experimental provider metadata | +| `v5/replace-image-type-with-file-type` | Transforms v5/replace image type with file type | +| `v5/replace-llamaindex-adapter` | Transforms v5/replace llamaindex adapter | +| `v5/replace-oncompletion-with-onfinal` | Transforms v5/replace oncompletion with onfinal | +| `v5/replace-provider-metadata-with-provider-options` | Transforms v5/replace provider metadata with provider options | +| `v5/replace-rawresponse-with-response` | Transforms v5/replace rawresponse with response | +| `v5/replace-redacted-reasoning-type` | Transforms v5/replace redacted reasoning type | +| `v5/replace-simulate-streaming` | Transforms v5/replace simulate streaming | +| `v5/replace-textdelta-with-text` | Transforms v5/replace textdelta with text | +| `v5/replace-usage-token-properties` | Transforms v5/replace usage token properties | +| `v5/replace-zod-import-with-v3` | Transforms v5/replace zod import with v3 | +| `v5/require-createIdGenerator-size-argument` | Transforms v5/require createIdGenerator size argument | +| `v5/restructure-file-stream-parts` | Transforms v5/restructure file stream parts | +| `v5/restructure-source-stream-parts` | Transforms v5/restructure source stream parts | +| `v5/rsc-package` | Transforms v5/rsc package | ## CLI Options