feat: parallel tool calling minimax provider [LET-7647] (#9613)

* feat: parallel tool calling minimax provider

* stage publish api
This commit is contained in:
Ari Webb
2026-02-23 11:33:14 -08:00
committed by Caren Thomas
parent a59f24ac87
commit 62967bcca0
3 changed files with 250 additions and 2 deletions

View File

@@ -31649,6 +31649,88 @@
"type": "array",
"title": "Isolated Block Ids",
"description": "IDs of blocks that are isolated (specific to this conversation, overriding agent defaults)."
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Model",
"description": "The model handle for this conversation (overrides agent's model). Format: provider/model-name."
},
"model_settings": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/components/schemas/OpenAIModelSettings"
},
{
"$ref": "#/components/schemas/AnthropicModelSettings"
},
{
"$ref": "#/components/schemas/GoogleAIModelSettings"
},
{
"$ref": "#/components/schemas/GoogleVertexModelSettings"
},
{
"$ref": "#/components/schemas/AzureModelSettings"
},
{
"$ref": "#/components/schemas/XAIModelSettings"
},
{
"$ref": "#/components/schemas/ZAIModelSettings"
},
{
"$ref": "#/components/schemas/GroqModelSettings"
},
{
"$ref": "#/components/schemas/DeepseekModelSettings"
},
{
"$ref": "#/components/schemas/TogetherModelSettings"
},
{
"$ref": "#/components/schemas/BedrockModelSettings"
},
{
"$ref": "#/components/schemas/OpenRouterModelSettings"
},
{
"$ref": "#/components/schemas/ChatGPTOAuthModelSettings"
}
],
"discriminator": {
"propertyName": "provider_type",
"mapping": {
"anthropic": "#/components/schemas/AnthropicModelSettings",
"azure": "#/components/schemas/AzureModelSettings",
"bedrock": "#/components/schemas/BedrockModelSettings",
"chatgpt_oauth": "#/components/schemas/ChatGPTOAuthModelSettings",
"deepseek": "#/components/schemas/DeepseekModelSettings",
"google_ai": "#/components/schemas/GoogleAIModelSettings",
"google_vertex": "#/components/schemas/GoogleVertexModelSettings",
"groq": "#/components/schemas/GroqModelSettings",
"openai": "#/components/schemas/OpenAIModelSettings",
"openrouter": "#/components/schemas/OpenRouterModelSettings",
"together": "#/components/schemas/TogetherModelSettings",
"xai": "#/components/schemas/XAIModelSettings",
"zai": "#/components/schemas/ZAIModelSettings"
}
}
},
{
"type": "null"
}
],
"title": "Model Settings",
"description": "The model settings for this conversation (overrides agent's model settings)."
}
},
"additionalProperties": false,
@@ -32960,6 +33042,88 @@
],
"title": "Isolated Block Labels",
"description": "List of block labels that should be isolated (conversation-specific) rather than shared across conversations. New blocks will be created as copies of the agent's blocks with these labels."
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Model",
"description": "The model handle for this conversation (overrides agent's model). Format: provider/model-name."
},
"model_settings": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/components/schemas/OpenAIModelSettings"
},
{
"$ref": "#/components/schemas/AnthropicModelSettings"
},
{
"$ref": "#/components/schemas/GoogleAIModelSettings"
},
{
"$ref": "#/components/schemas/GoogleVertexModelSettings"
},
{
"$ref": "#/components/schemas/AzureModelSettings"
},
{
"$ref": "#/components/schemas/XAIModelSettings"
},
{
"$ref": "#/components/schemas/ZAIModelSettings"
},
{
"$ref": "#/components/schemas/GroqModelSettings"
},
{
"$ref": "#/components/schemas/DeepseekModelSettings"
},
{
"$ref": "#/components/schemas/TogetherModelSettings"
},
{
"$ref": "#/components/schemas/BedrockModelSettings"
},
{
"$ref": "#/components/schemas/OpenRouterModelSettings"
},
{
"$ref": "#/components/schemas/ChatGPTOAuthModelSettings"
}
],
"discriminator": {
"propertyName": "provider_type",
"mapping": {
"anthropic": "#/components/schemas/AnthropicModelSettings",
"azure": "#/components/schemas/AzureModelSettings",
"bedrock": "#/components/schemas/BedrockModelSettings",
"chatgpt_oauth": "#/components/schemas/ChatGPTOAuthModelSettings",
"deepseek": "#/components/schemas/DeepseekModelSettings",
"google_ai": "#/components/schemas/GoogleAIModelSettings",
"google_vertex": "#/components/schemas/GoogleVertexModelSettings",
"groq": "#/components/schemas/GroqModelSettings",
"openai": "#/components/schemas/OpenAIModelSettings",
"openrouter": "#/components/schemas/OpenRouterModelSettings",
"together": "#/components/schemas/TogetherModelSettings",
"xai": "#/components/schemas/XAIModelSettings",
"zai": "#/components/schemas/ZAIModelSettings"
}
}
},
{
"type": "null"
}
],
"title": "Model Settings",
"description": "The model settings for this conversation (overrides agent's model settings)."
}
},
"type": "object",
@@ -47553,6 +47717,88 @@
],
"title": "Summary",
"description": "A summary of the conversation."
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Model",
"description": "The model handle for this conversation (overrides agent's model). Format: provider/model-name."
},
"model_settings": {
"anyOf": [
{
"oneOf": [
{
"$ref": "#/components/schemas/OpenAIModelSettings"
},
{
"$ref": "#/components/schemas/AnthropicModelSettings"
},
{
"$ref": "#/components/schemas/GoogleAIModelSettings"
},
{
"$ref": "#/components/schemas/GoogleVertexModelSettings"
},
{
"$ref": "#/components/schemas/AzureModelSettings"
},
{
"$ref": "#/components/schemas/XAIModelSettings"
},
{
"$ref": "#/components/schemas/ZAIModelSettings"
},
{
"$ref": "#/components/schemas/GroqModelSettings"
},
{
"$ref": "#/components/schemas/DeepseekModelSettings"
},
{
"$ref": "#/components/schemas/TogetherModelSettings"
},
{
"$ref": "#/components/schemas/BedrockModelSettings"
},
{
"$ref": "#/components/schemas/OpenRouterModelSettings"
},
{
"$ref": "#/components/schemas/ChatGPTOAuthModelSettings"
}
],
"discriminator": {
"propertyName": "provider_type",
"mapping": {
"anthropic": "#/components/schemas/AnthropicModelSettings",
"azure": "#/components/schemas/AzureModelSettings",
"bedrock": "#/components/schemas/BedrockModelSettings",
"chatgpt_oauth": "#/components/schemas/ChatGPTOAuthModelSettings",
"deepseek": "#/components/schemas/DeepseekModelSettings",
"google_ai": "#/components/schemas/GoogleAIModelSettings",
"google_vertex": "#/components/schemas/GoogleVertexModelSettings",
"groq": "#/components/schemas/GroqModelSettings",
"openai": "#/components/schemas/OpenAIModelSettings",
"openrouter": "#/components/schemas/OpenRouterModelSettings",
"together": "#/components/schemas/TogetherModelSettings",
"xai": "#/components/schemas/XAIModelSettings",
"zai": "#/components/schemas/ZAIModelSettings"
}
}
},
{
"type": "null"
}
],
"title": "Model Settings",
"description": "The model settings for this conversation (overrides agent's model settings)."
}
},
"type": "object",

View File

@@ -930,8 +930,8 @@ class LettaAgentV3(LettaAgentV2):
or len([t for t in self.agent_state.tool_rules if t.type != "requires_approval"]) == 0
)
# Anthropic/Bedrock parallel tool use
if self.agent_state.llm_config.model_endpoint_type in ["anthropic", "bedrock"]:
# Anthropic/Bedrock/MiniMax parallel tool use (MiniMax uses Anthropic-compatible API)
if self.agent_state.llm_config.model_endpoint_type in ["anthropic", "bedrock", "minimax"]:
if (
isinstance(request_data.get("tool_choice"), dict)
and "disable_parallel_tool_use" in request_data["tool_choice"]

View File

@@ -104,6 +104,8 @@ class MiniMaxProvider(Provider):
max_tokens=model["max_output"],
# MiniMax models support native thinking, similar to Claude's extended thinking
put_inner_thoughts_in_kwargs=True,
# MiniMax models support parallel tool calling via Anthropic-compatible API
parallel_tool_calls=True,
provider_name=self.name,
provider_category=self.provider_category,
)