fix(ai): avoid duplicate OpenCode DeepSeek reasoning controls
closes #5818
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Fixed OpenAI Responses streaming to tolerate null message content from OpenAI-compatible servers before tool calls ([#5819](https://github.com/earendil-works/pi/issues/5819)).
|
- Fixed OpenAI Responses streaming to tolerate null message content from OpenAI-compatible servers before tool calls ([#5819](https://github.com/earendil-works/pi/issues/5819)).
|
||||||
|
- Fixed OpenCode DeepSeek V4 thinking requests to avoid sending both `thinking` and `reasoning_effort` ([#5818](https://github.com/earendil-works/pi/issues/5818)).
|
||||||
- Fixed Z.AI GLM-5.2 thinking requests to send `reasoning_effort` with the provider's `high`/`max` effort mapping ([#5770](https://github.com/earendil-works/pi/issues/5770)).
|
- Fixed Z.AI GLM-5.2 thinking requests to send `reasoning_effort` with the provider's `high`/`max` effort mapping ([#5770](https://github.com/earendil-works/pi/issues/5770)).
|
||||||
- Fixed Google and `google-vertex` Gemini model metadata to map `latest` aliases to the current models, add Gemini 3.5 Flash for Vertex, correct Gemini 2.5 Flash Vertex cache pricing, and remove shut-down Vertex preview models ([#5761](https://github.com/earendil-works/pi/issues/5761)).
|
- Fixed Google and `google-vertex` Gemini model metadata to map `latest` aliases to the current models, add Gemini 3.5 Flash for Vertex, correct Gemini 2.5 Flash Vertex cache pricing, and remove shut-down Vertex preview models ([#5761](https://github.com/earendil-works/pi/issues/5761)).
|
||||||
- Fixed Moonshot AI China model metadata to include Kimi K2.7 Code, and omitted unsupported thinking-off payloads for Kimi K2.7 Code models ([#5760](https://github.com/earendil-works/pi/issues/5760)).
|
- Fixed Moonshot AI China model metadata to include Kimi K2.7 Code, and omitted unsupported thinking-off payloads for Kimi K2.7 Code models ([#5760](https://github.com/earendil-works/pi/issues/5760)).
|
||||||
|
|||||||
@@ -1852,9 +1852,13 @@ async function generateModels() {
|
|||||||
|
|
||||||
for (const candidate of allModels) {
|
for (const candidate of allModels) {
|
||||||
if (candidate.api === "openai-completions" && candidate.id.includes("deepseek-v4")) {
|
if (candidate.api === "openai-completions" && candidate.id.includes("deepseek-v4")) {
|
||||||
|
const preservesNativeReasoningEffort =
|
||||||
|
candidate.provider === "openrouter" ||
|
||||||
|
candidate.provider === "opencode" ||
|
||||||
|
candidate.provider === "opencode-go";
|
||||||
candidate.compat = {
|
candidate.compat = {
|
||||||
...candidate.compat,
|
...candidate.compat,
|
||||||
...(candidate.provider === "openrouter"
|
...(preservesNativeReasoningEffort
|
||||||
? {
|
? {
|
||||||
requiresReasoningContentOnAssistantMessages:
|
requiresReasoningContentOnAssistantMessages:
|
||||||
deepseekCompat.requiresReasoningContentOnAssistantMessages,
|
deepseekCompat.requiresReasoningContentOnAssistantMessages,
|
||||||
|
|||||||
@@ -7938,7 +7938,7 @@ export const MODELS = {
|
|||||||
api: "openai-completions",
|
api: "openai-completions",
|
||||||
provider: "opencode",
|
provider: "opencode",
|
||||||
baseUrl: "https://opencode.ai/zen/v1",
|
baseUrl: "https://opencode.ai/zen/v1",
|
||||||
compat: {"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},
|
compat: {"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true},
|
||||||
reasoning: true,
|
reasoning: true,
|
||||||
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
@@ -7957,7 +7957,7 @@ export const MODELS = {
|
|||||||
api: "openai-completions",
|
api: "openai-completions",
|
||||||
provider: "opencode",
|
provider: "opencode",
|
||||||
baseUrl: "https://opencode.ai/zen/v1",
|
baseUrl: "https://opencode.ai/zen/v1",
|
||||||
compat: {"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},
|
compat: {"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true},
|
||||||
reasoning: true,
|
reasoning: true,
|
||||||
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
@@ -7976,7 +7976,7 @@ export const MODELS = {
|
|||||||
api: "openai-completions",
|
api: "openai-completions",
|
||||||
provider: "opencode",
|
provider: "opencode",
|
||||||
baseUrl: "https://opencode.ai/zen/v1",
|
baseUrl: "https://opencode.ai/zen/v1",
|
||||||
compat: {"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},
|
compat: {"maxTokensField":"max_tokens","supportsLongCacheRetention":false,"requiresReasoningContentOnAssistantMessages":true},
|
||||||
reasoning: true,
|
reasoning: true,
|
||||||
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
@@ -8554,7 +8554,7 @@ export const MODELS = {
|
|||||||
api: "openai-completions",
|
api: "openai-completions",
|
||||||
provider: "opencode-go",
|
provider: "opencode-go",
|
||||||
baseUrl: "https://opencode.ai/zen/go/v1",
|
baseUrl: "https://opencode.ai/zen/go/v1",
|
||||||
compat: {"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},
|
compat: {"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true},
|
||||||
reasoning: true,
|
reasoning: true,
|
||||||
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
@@ -8573,7 +8573,7 @@ export const MODELS = {
|
|||||||
api: "openai-completions",
|
api: "openai-completions",
|
||||||
provider: "opencode-go",
|
provider: "opencode-go",
|
||||||
baseUrl: "https://opencode.ai/zen/go/v1",
|
baseUrl: "https://opencode.ai/zen/go/v1",
|
||||||
compat: {"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true,"thinkingFormat":"deepseek"},
|
compat: {"maxTokensField":"max_tokens","requiresReasoningContentOnAssistantMessages":true},
|
||||||
reasoning: true,
|
reasoning: true,
|
||||||
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
thinkingLevelMap: {"minimal":null,"low":null,"medium":null,"high":"high","xhigh":"max"},
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
@@ -16310,6 +16310,23 @@ export const MODELS = {
|
|||||||
contextWindow: 202800,
|
contextWindow: 202800,
|
||||||
maxTokens: 64000,
|
maxTokens: 64000,
|
||||||
} satisfies Model<"anthropic-messages">,
|
} satisfies Model<"anthropic-messages">,
|
||||||
|
"zai/glm-5.2": {
|
||||||
|
id: "zai/glm-5.2",
|
||||||
|
name: "GLM 5.2",
|
||||||
|
api: "anthropic-messages",
|
||||||
|
provider: "vercel-ai-gateway",
|
||||||
|
baseUrl: "https://ai-gateway.vercel.sh",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text"],
|
||||||
|
cost: {
|
||||||
|
input: 1.4,
|
||||||
|
output: 4.4,
|
||||||
|
cacheRead: 0.26,
|
||||||
|
cacheWrite: 0,
|
||||||
|
},
|
||||||
|
contextWindow: 1000000,
|
||||||
|
maxTokens: 128000,
|
||||||
|
} satisfies Model<"anthropic-messages">,
|
||||||
"zai/glm-5v-turbo": {
|
"zai/glm-5v-turbo": {
|
||||||
id: "zai/glm-5v-turbo",
|
id: "zai/glm-5v-turbo",
|
||||||
name: "GLM 5V Turbo",
|
name: "GLM 5V Turbo",
|
||||||
|
|||||||
Reference in New Issue
Block a user