@yourgpt/llm-sdk 2.5.1-beta.1 → 2.5.1-beta.2
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 +1 -19
- package/dist/adapters/index.d.mts +4 -4
- package/dist/adapters/index.d.ts +4 -4
- package/dist/adapters/index.js +14 -139
- package/dist/adapters/index.mjs +14 -139
- package/dist/{base-Cxq3ni0t.d.ts → base-C58Dsr9p.d.ts} +1 -5
- package/dist/{base-BYQKp9TW.d.mts → base-tNgbBaSo.d.mts} +1 -5
- package/dist/fallback/index.d.mts +4 -4
- package/dist/fallback/index.d.ts +4 -4
- package/dist/index.d.mts +8 -60
- package/dist/index.d.ts +8 -60
- package/dist/index.js +0 -59
- package/dist/index.mjs +0 -59
- package/dist/providers/anthropic/index.d.mts +3 -3
- package/dist/providers/anthropic/index.d.ts +3 -3
- package/dist/providers/anthropic/index.js +10 -91
- package/dist/providers/anthropic/index.mjs +10 -91
- package/dist/providers/azure/index.d.mts +3 -3
- package/dist/providers/azure/index.d.ts +3 -3
- package/dist/providers/azure/index.js +1 -0
- package/dist/providers/azure/index.mjs +1 -0
- package/dist/providers/fireworks/index.d.mts +1 -1
- package/dist/providers/fireworks/index.d.ts +1 -1
- package/dist/providers/fireworks/index.js +1 -0
- package/dist/providers/fireworks/index.mjs +1 -0
- package/dist/providers/google/index.d.mts +3 -3
- package/dist/providers/google/index.d.ts +3 -3
- package/dist/providers/google/index.js +3 -51
- package/dist/providers/google/index.mjs +3 -51
- package/dist/providers/ollama/index.d.mts +4 -4
- package/dist/providers/ollama/index.d.ts +4 -4
- package/dist/providers/ollama/index.js +1 -0
- package/dist/providers/ollama/index.mjs +1 -0
- package/dist/providers/openai/index.d.mts +3 -3
- package/dist/providers/openai/index.d.ts +3 -3
- package/dist/providers/openai/index.js +3 -51
- package/dist/providers/openai/index.mjs +3 -51
- package/dist/providers/openrouter/index.d.mts +3 -3
- package/dist/providers/openrouter/index.d.ts +3 -3
- package/dist/providers/openrouter/index.js +3 -51
- package/dist/providers/openrouter/index.mjs +3 -51
- package/dist/providers/togetherai/index.d.mts +3 -3
- package/dist/providers/togetherai/index.d.ts +3 -3
- package/dist/providers/togetherai/index.js +3 -51
- package/dist/providers/togetherai/index.mjs +3 -51
- package/dist/providers/xai/index.d.mts +3 -3
- package/dist/providers/xai/index.d.ts +3 -3
- package/dist/providers/xai/index.js +3 -51
- package/dist/providers/xai/index.mjs +3 -51
- package/dist/{types-mwMhCwOq.d.mts → types-B6dhnguR.d.mts} +1 -1
- package/dist/{types-TMilS-Dz.d.ts → types-BQ31QIsA.d.ts} +2 -2
- package/dist/{types-BvkiJ1dd.d.mts → types-BSSiJW2o.d.mts} +2 -2
- package/dist/{types-D774b0dg.d.mts → types-BkQCSiIt.d.mts} +2 -57
- package/dist/{types-D774b0dg.d.ts → types-BkQCSiIt.d.ts} +2 -57
- package/dist/{types-ChORafYS.d.ts → types-CCxPmkmK.d.ts} +1 -1
- package/dist/yourgpt/index.d.mts +1 -1
- package/dist/yourgpt/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -112,6 +112,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
112
112
|
function toOpenAIResponseFormat(rf) {
|
|
113
113
|
if (!rf) return void 0;
|
|
114
114
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
115
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
115
116
|
return {
|
|
116
117
|
type: "json_schema",
|
|
117
118
|
json_schema: {
|
|
@@ -130,33 +131,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
130
131
|
strict: rf.json_schema.strict ?? true
|
|
131
132
|
};
|
|
132
133
|
}
|
|
133
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
134
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
135
|
-
return mcpServers.map((mcp) => ({
|
|
136
|
-
type: "mcp",
|
|
137
|
-
server_label: mcp.label,
|
|
138
|
-
server_url: mcp.url,
|
|
139
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
140
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
141
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
function isStringEffort(effort) {
|
|
145
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
146
|
-
}
|
|
147
|
-
function toOpenAIReasoning(effort) {
|
|
148
|
-
if (!effort) return void 0;
|
|
149
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
150
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
151
|
-
const budget = effort.budgetTokens;
|
|
152
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
153
|
-
return { effort: mapped, summary: "auto" };
|
|
154
|
-
}
|
|
155
|
-
if (isStringEffort(effort)) {
|
|
156
|
-
return { effort, summary: "auto" };
|
|
157
|
-
}
|
|
158
|
-
return void 0;
|
|
159
|
-
}
|
|
160
134
|
function formatTools(actions) {
|
|
161
135
|
return actions.map((action) => ({
|
|
162
136
|
type: "function",
|
|
@@ -564,14 +538,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
564
538
|
return this.client;
|
|
565
539
|
}
|
|
566
540
|
shouldUseResponsesApi(request) {
|
|
567
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
568
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
569
|
-
throw new Error(
|
|
570
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
571
|
-
);
|
|
572
|
-
}
|
|
573
|
-
return true;
|
|
574
|
-
}
|
|
575
541
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
576
542
|
}
|
|
577
543
|
buildResponsesInput(request) {
|
|
@@ -632,7 +598,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
632
598
|
strict: true,
|
|
633
599
|
defer_loading: tool.deferLoading === true
|
|
634
600
|
}));
|
|
635
|
-
return
|
|
601
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
636
602
|
}
|
|
637
603
|
parseResponsesResult(response) {
|
|
638
604
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -664,30 +630,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
664
630
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
665
631
|
request.config?.responseFormat
|
|
666
632
|
);
|
|
667
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
668
|
-
const modelId = request.config?.model || this.model;
|
|
669
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
670
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
671
|
-
console.warn(
|
|
672
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
673
|
-
);
|
|
674
|
-
}
|
|
675
|
-
const functionTools = this.buildResponsesTools(
|
|
676
|
-
request.toolDefinitions ?? []
|
|
677
|
-
);
|
|
678
|
-
const tools = [...functionTools, ...mcpTools];
|
|
679
633
|
const payload = {
|
|
680
634
|
model: request.config?.model || this.model,
|
|
681
635
|
instructions: request.systemPrompt,
|
|
682
636
|
input: this.buildResponsesInput(request),
|
|
683
|
-
tools:
|
|
637
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
684
638
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
685
639
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
686
640
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
687
641
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
688
642
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
689
|
-
...reasoning ? { reasoning } : {},
|
|
690
|
-
store: false,
|
|
691
643
|
stream: false
|
|
692
644
|
};
|
|
693
645
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
|
|
2
|
+
import { A as AIProvider } from '../../types-BSSiJW2o.mjs';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-tNgbBaSo.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* OpenRouter Provider - Modern Pattern
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.js';
|
|
2
|
+
import { A as AIProvider } from '../../types-BQ31QIsA.js';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-C58Dsr9p.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* OpenRouter Provider - Modern Pattern
|
|
@@ -114,6 +114,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
114
114
|
function toOpenAIResponseFormat(rf) {
|
|
115
115
|
if (!rf) return void 0;
|
|
116
116
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
117
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
117
118
|
return {
|
|
118
119
|
type: "json_schema",
|
|
119
120
|
json_schema: {
|
|
@@ -132,33 +133,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
132
133
|
strict: rf.json_schema.strict ?? true
|
|
133
134
|
};
|
|
134
135
|
}
|
|
135
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
136
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
137
|
-
return mcpServers.map((mcp) => ({
|
|
138
|
-
type: "mcp",
|
|
139
|
-
server_label: mcp.label,
|
|
140
|
-
server_url: mcp.url,
|
|
141
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
142
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
143
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
function isStringEffort(effort) {
|
|
147
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
148
|
-
}
|
|
149
|
-
function toOpenAIReasoning(effort) {
|
|
150
|
-
if (!effort) return void 0;
|
|
151
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
152
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
153
|
-
const budget = effort.budgetTokens;
|
|
154
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
155
|
-
return { effort: mapped, summary: "auto" };
|
|
156
|
-
}
|
|
157
|
-
if (isStringEffort(effort)) {
|
|
158
|
-
return { effort, summary: "auto" };
|
|
159
|
-
}
|
|
160
|
-
return void 0;
|
|
161
|
-
}
|
|
162
136
|
function formatTools(actions) {
|
|
163
137
|
return actions.map((action) => ({
|
|
164
138
|
type: "function",
|
|
@@ -552,14 +526,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
552
526
|
return this.client;
|
|
553
527
|
}
|
|
554
528
|
shouldUseResponsesApi(request) {
|
|
555
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
556
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
557
|
-
throw new Error(
|
|
558
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
559
|
-
);
|
|
560
|
-
}
|
|
561
|
-
return true;
|
|
562
|
-
}
|
|
563
529
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
564
530
|
}
|
|
565
531
|
buildResponsesInput(request) {
|
|
@@ -620,7 +586,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
620
586
|
strict: true,
|
|
621
587
|
defer_loading: tool.deferLoading === true
|
|
622
588
|
}));
|
|
623
|
-
return
|
|
589
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
624
590
|
}
|
|
625
591
|
parseResponsesResult(response) {
|
|
626
592
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -652,30 +618,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
652
618
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
653
619
|
request.config?.responseFormat
|
|
654
620
|
);
|
|
655
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
656
|
-
const modelId = request.config?.model || this.model;
|
|
657
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
658
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
659
|
-
console.warn(
|
|
660
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
661
|
-
);
|
|
662
|
-
}
|
|
663
|
-
const functionTools = this.buildResponsesTools(
|
|
664
|
-
request.toolDefinitions ?? []
|
|
665
|
-
);
|
|
666
|
-
const tools = [...functionTools, ...mcpTools];
|
|
667
621
|
const payload = {
|
|
668
622
|
model: request.config?.model || this.model,
|
|
669
623
|
instructions: request.systemPrompt,
|
|
670
624
|
input: this.buildResponsesInput(request),
|
|
671
|
-
tools:
|
|
625
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
672
626
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
673
627
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
674
628
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
675
629
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
676
630
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
677
|
-
...reasoning ? { reasoning } : {},
|
|
678
|
-
store: false,
|
|
679
631
|
stream: false
|
|
680
632
|
};
|
|
681
633
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -112,6 +112,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
112
112
|
function toOpenAIResponseFormat(rf) {
|
|
113
113
|
if (!rf) return void 0;
|
|
114
114
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
115
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
115
116
|
return {
|
|
116
117
|
type: "json_schema",
|
|
117
118
|
json_schema: {
|
|
@@ -130,33 +131,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
130
131
|
strict: rf.json_schema.strict ?? true
|
|
131
132
|
};
|
|
132
133
|
}
|
|
133
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
134
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
135
|
-
return mcpServers.map((mcp) => ({
|
|
136
|
-
type: "mcp",
|
|
137
|
-
server_label: mcp.label,
|
|
138
|
-
server_url: mcp.url,
|
|
139
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
140
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
141
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
function isStringEffort(effort) {
|
|
145
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
146
|
-
}
|
|
147
|
-
function toOpenAIReasoning(effort) {
|
|
148
|
-
if (!effort) return void 0;
|
|
149
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
150
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
151
|
-
const budget = effort.budgetTokens;
|
|
152
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
153
|
-
return { effort: mapped, summary: "auto" };
|
|
154
|
-
}
|
|
155
|
-
if (isStringEffort(effort)) {
|
|
156
|
-
return { effort, summary: "auto" };
|
|
157
|
-
}
|
|
158
|
-
return void 0;
|
|
159
|
-
}
|
|
160
134
|
function formatTools(actions) {
|
|
161
135
|
return actions.map((action) => ({
|
|
162
136
|
type: "function",
|
|
@@ -550,14 +524,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
550
524
|
return this.client;
|
|
551
525
|
}
|
|
552
526
|
shouldUseResponsesApi(request) {
|
|
553
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
554
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
555
|
-
throw new Error(
|
|
556
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
557
|
-
);
|
|
558
|
-
}
|
|
559
|
-
return true;
|
|
560
|
-
}
|
|
561
527
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
562
528
|
}
|
|
563
529
|
buildResponsesInput(request) {
|
|
@@ -618,7 +584,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
618
584
|
strict: true,
|
|
619
585
|
defer_loading: tool.deferLoading === true
|
|
620
586
|
}));
|
|
621
|
-
return
|
|
587
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
622
588
|
}
|
|
623
589
|
parseResponsesResult(response) {
|
|
624
590
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -650,30 +616,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
650
616
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
651
617
|
request.config?.responseFormat
|
|
652
618
|
);
|
|
653
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
654
|
-
const modelId = request.config?.model || this.model;
|
|
655
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
656
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
657
|
-
console.warn(
|
|
658
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
659
|
-
);
|
|
660
|
-
}
|
|
661
|
-
const functionTools = this.buildResponsesTools(
|
|
662
|
-
request.toolDefinitions ?? []
|
|
663
|
-
);
|
|
664
|
-
const tools = [...functionTools, ...mcpTools];
|
|
665
619
|
const payload = {
|
|
666
620
|
model: request.config?.model || this.model,
|
|
667
621
|
instructions: request.systemPrompt,
|
|
668
622
|
input: this.buildResponsesInput(request),
|
|
669
|
-
tools:
|
|
623
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
670
624
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
671
625
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
672
626
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
673
627
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
674
628
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
675
|
-
...reasoning ? { reasoning } : {},
|
|
676
|
-
store: false,
|
|
677
629
|
stream: false
|
|
678
630
|
};
|
|
679
631
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
|
|
2
|
+
import { A as AIProvider } from '../../types-BSSiJW2o.mjs';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-tNgbBaSo.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Together AI Provider
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.js';
|
|
2
|
+
import { A as AIProvider } from '../../types-BQ31QIsA.js';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-C58Dsr9p.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Together AI Provider
|
|
@@ -114,6 +114,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
114
114
|
function toOpenAIResponseFormat(rf) {
|
|
115
115
|
if (!rf) return void 0;
|
|
116
116
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
117
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
117
118
|
return {
|
|
118
119
|
type: "json_schema",
|
|
119
120
|
json_schema: {
|
|
@@ -132,33 +133,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
132
133
|
strict: rf.json_schema.strict ?? true
|
|
133
134
|
};
|
|
134
135
|
}
|
|
135
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
136
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
137
|
-
return mcpServers.map((mcp) => ({
|
|
138
|
-
type: "mcp",
|
|
139
|
-
server_label: mcp.label,
|
|
140
|
-
server_url: mcp.url,
|
|
141
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
142
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
143
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
function isStringEffort(effort) {
|
|
147
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
148
|
-
}
|
|
149
|
-
function toOpenAIReasoning(effort) {
|
|
150
|
-
if (!effort) return void 0;
|
|
151
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
152
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
153
|
-
const budget = effort.budgetTokens;
|
|
154
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
155
|
-
return { effort: mapped, summary: "auto" };
|
|
156
|
-
}
|
|
157
|
-
if (isStringEffort(effort)) {
|
|
158
|
-
return { effort, summary: "auto" };
|
|
159
|
-
}
|
|
160
|
-
return void 0;
|
|
161
|
-
}
|
|
162
136
|
function formatTools(actions) {
|
|
163
137
|
return actions.map((action) => ({
|
|
164
138
|
type: "function",
|
|
@@ -504,14 +478,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
504
478
|
return this.client;
|
|
505
479
|
}
|
|
506
480
|
shouldUseResponsesApi(request) {
|
|
507
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
508
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
509
|
-
throw new Error(
|
|
510
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
511
|
-
);
|
|
512
|
-
}
|
|
513
|
-
return true;
|
|
514
|
-
}
|
|
515
481
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
516
482
|
}
|
|
517
483
|
buildResponsesInput(request) {
|
|
@@ -572,7 +538,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
572
538
|
strict: true,
|
|
573
539
|
defer_loading: tool.deferLoading === true
|
|
574
540
|
}));
|
|
575
|
-
return
|
|
541
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
576
542
|
}
|
|
577
543
|
parseResponsesResult(response) {
|
|
578
544
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -604,30 +570,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
604
570
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
605
571
|
request.config?.responseFormat
|
|
606
572
|
);
|
|
607
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
608
|
-
const modelId = request.config?.model || this.model;
|
|
609
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
610
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
611
|
-
console.warn(
|
|
612
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
613
|
-
);
|
|
614
|
-
}
|
|
615
|
-
const functionTools = this.buildResponsesTools(
|
|
616
|
-
request.toolDefinitions ?? []
|
|
617
|
-
);
|
|
618
|
-
const tools = [...functionTools, ...mcpTools];
|
|
619
573
|
const payload = {
|
|
620
574
|
model: request.config?.model || this.model,
|
|
621
575
|
instructions: request.systemPrompt,
|
|
622
576
|
input: this.buildResponsesInput(request),
|
|
623
|
-
tools:
|
|
577
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
624
578
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
625
579
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
626
580
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
627
581
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
628
582
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
629
|
-
...reasoning ? { reasoning } : {},
|
|
630
|
-
store: false,
|
|
631
583
|
stream: false
|
|
632
584
|
};
|
|
633
585
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -112,6 +112,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
112
112
|
function toOpenAIResponseFormat(rf) {
|
|
113
113
|
if (!rf) return void 0;
|
|
114
114
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
115
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
115
116
|
return {
|
|
116
117
|
type: "json_schema",
|
|
117
118
|
json_schema: {
|
|
@@ -130,33 +131,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
130
131
|
strict: rf.json_schema.strict ?? true
|
|
131
132
|
};
|
|
132
133
|
}
|
|
133
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
134
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
135
|
-
return mcpServers.map((mcp) => ({
|
|
136
|
-
type: "mcp",
|
|
137
|
-
server_label: mcp.label,
|
|
138
|
-
server_url: mcp.url,
|
|
139
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
140
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
141
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
function isStringEffort(effort) {
|
|
145
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
146
|
-
}
|
|
147
|
-
function toOpenAIReasoning(effort) {
|
|
148
|
-
if (!effort) return void 0;
|
|
149
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
150
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
151
|
-
const budget = effort.budgetTokens;
|
|
152
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
153
|
-
return { effort: mapped, summary: "auto" };
|
|
154
|
-
}
|
|
155
|
-
if (isStringEffort(effort)) {
|
|
156
|
-
return { effort, summary: "auto" };
|
|
157
|
-
}
|
|
158
|
-
return void 0;
|
|
159
|
-
}
|
|
160
134
|
function formatTools(actions) {
|
|
161
135
|
return actions.map((action) => ({
|
|
162
136
|
type: "function",
|
|
@@ -502,14 +476,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
502
476
|
return this.client;
|
|
503
477
|
}
|
|
504
478
|
shouldUseResponsesApi(request) {
|
|
505
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
506
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
507
|
-
throw new Error(
|
|
508
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
509
|
-
);
|
|
510
|
-
}
|
|
511
|
-
return true;
|
|
512
|
-
}
|
|
513
479
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
514
480
|
}
|
|
515
481
|
buildResponsesInput(request) {
|
|
@@ -570,7 +536,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
570
536
|
strict: true,
|
|
571
537
|
defer_loading: tool.deferLoading === true
|
|
572
538
|
}));
|
|
573
|
-
return
|
|
539
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
574
540
|
}
|
|
575
541
|
parseResponsesResult(response) {
|
|
576
542
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -602,30 +568,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
602
568
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
603
569
|
request.config?.responseFormat
|
|
604
570
|
);
|
|
605
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
606
|
-
const modelId = request.config?.model || this.model;
|
|
607
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
608
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
609
|
-
console.warn(
|
|
610
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
611
|
-
);
|
|
612
|
-
}
|
|
613
|
-
const functionTools = this.buildResponsesTools(
|
|
614
|
-
request.toolDefinitions ?? []
|
|
615
|
-
);
|
|
616
|
-
const tools = [...functionTools, ...mcpTools];
|
|
617
571
|
const payload = {
|
|
618
572
|
model: request.config?.model || this.model,
|
|
619
573
|
instructions: request.systemPrompt,
|
|
620
574
|
input: this.buildResponsesInput(request),
|
|
621
|
-
tools:
|
|
575
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
622
576
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
623
577
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
624
578
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
625
579
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
626
580
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
627
|
-
...reasoning ? { reasoning } : {},
|
|
628
|
-
store: false,
|
|
629
581
|
stream: false
|
|
630
582
|
};
|
|
631
583
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { X as XAIProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
|
|
2
|
+
import { X as XAIProviderConfig, A as AIProvider } from '../../types-BSSiJW2o.mjs';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-tNgbBaSo.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* xAI Provider - Modern Pattern
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { X as XAIProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.js';
|
|
2
|
+
import { X as XAIProviderConfig, A as AIProvider } from '../../types-BQ31QIsA.js';
|
|
3
3
|
import 'zod';
|
|
4
|
-
import '../../base-
|
|
4
|
+
import '../../base-C58Dsr9p.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* xAI Provider - Modern Pattern
|
|
@@ -114,6 +114,7 @@ function buildOpenAITokenParams(modelId, maxTokens, temperature) {
|
|
|
114
114
|
function toOpenAIResponseFormat(rf) {
|
|
115
115
|
if (!rf) return void 0;
|
|
116
116
|
if (rf.type === "json_object") return { type: "json_object" };
|
|
117
|
+
if (rf.type !== "json_schema" || !rf.json_schema) return void 0;
|
|
117
118
|
return {
|
|
118
119
|
type: "json_schema",
|
|
119
120
|
json_schema: {
|
|
@@ -132,33 +133,6 @@ function toOpenAIResponsesTextFormat(rf) {
|
|
|
132
133
|
strict: rf.json_schema.strict ?? true
|
|
133
134
|
};
|
|
134
135
|
}
|
|
135
|
-
function toOpenAIResponsesMcpTools(mcpServers) {
|
|
136
|
-
if (!mcpServers || mcpServers.length === 0) return [];
|
|
137
|
-
return mcpServers.map((mcp) => ({
|
|
138
|
-
type: "mcp",
|
|
139
|
-
server_label: mcp.label,
|
|
140
|
-
server_url: mcp.url,
|
|
141
|
-
...mcp.headers ? { headers: mcp.headers } : {},
|
|
142
|
-
...mcp.allowedTools ? { allowed_tools: mcp.allowedTools } : {},
|
|
143
|
-
require_approval: mcp.requireApproval ?? "never"
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
function isStringEffort(effort) {
|
|
147
|
-
return typeof effort === "string" && (effort === "minimal" || effort === "low" || effort === "medium" || effort === "high");
|
|
148
|
-
}
|
|
149
|
-
function toOpenAIReasoning(effort) {
|
|
150
|
-
if (!effort) return void 0;
|
|
151
|
-
if (typeof effort === "object" && "raw" in effort) return effort.raw;
|
|
152
|
-
if (typeof effort === "object" && "budgetTokens" in effort) {
|
|
153
|
-
const budget = effort.budgetTokens;
|
|
154
|
-
const mapped = budget >= 16e3 ? "high" : budget >= 8e3 ? "medium" : "low";
|
|
155
|
-
return { effort: mapped, summary: "auto" };
|
|
156
|
-
}
|
|
157
|
-
if (isStringEffort(effort)) {
|
|
158
|
-
return { effort, summary: "auto" };
|
|
159
|
-
}
|
|
160
|
-
return void 0;
|
|
161
|
-
}
|
|
162
136
|
function formatTools(actions) {
|
|
163
137
|
return actions.map((action) => ({
|
|
164
138
|
type: "function",
|
|
@@ -528,14 +502,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
528
502
|
return this.client;
|
|
529
503
|
}
|
|
530
504
|
shouldUseResponsesApi(request) {
|
|
531
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
532
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
533
|
-
throw new Error(
|
|
534
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
535
|
-
);
|
|
536
|
-
}
|
|
537
|
-
return true;
|
|
538
|
-
}
|
|
539
505
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
540
506
|
}
|
|
541
507
|
buildResponsesInput(request) {
|
|
@@ -596,7 +562,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
596
562
|
strict: true,
|
|
597
563
|
defer_loading: tool.deferLoading === true
|
|
598
564
|
}));
|
|
599
|
-
return
|
|
565
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
600
566
|
}
|
|
601
567
|
parseResponsesResult(response) {
|
|
602
568
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -628,30 +594,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
628
594
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
629
595
|
request.config?.responseFormat
|
|
630
596
|
);
|
|
631
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
632
|
-
const modelId = request.config?.model || this.model;
|
|
633
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
634
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
635
|
-
console.warn(
|
|
636
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
637
|
-
);
|
|
638
|
-
}
|
|
639
|
-
const functionTools = this.buildResponsesTools(
|
|
640
|
-
request.toolDefinitions ?? []
|
|
641
|
-
);
|
|
642
|
-
const tools = [...functionTools, ...mcpTools];
|
|
643
597
|
const payload = {
|
|
644
598
|
model: request.config?.model || this.model,
|
|
645
599
|
instructions: request.systemPrompt,
|
|
646
600
|
input: this.buildResponsesInput(request),
|
|
647
|
-
tools:
|
|
601
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
648
602
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
649
603
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
650
604
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
651
605
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
652
606
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
653
|
-
...reasoning ? { reasoning } : {},
|
|
654
|
-
store: false,
|
|
655
607
|
stream: false
|
|
656
608
|
};
|
|
657
609
|
logProviderPayload("openai", "request payload", payload, request.debug);
|