跳至主要內容

MiniMax

MiniMax - v1/messages

總覽

Litellm 提供與 anthropic 規格相容的 minmax 支援

支援的模型

MiniMax 透過其與 Anthropic 相容的 API 提供三種模型:

模型說明輸入成本輸出成本提示快取讀取提示快取寫入
MiniMax-M2.1具強化程式設計體驗的強大多語言程式設計(~60 tps)$0.3/M tokens$1.2/M tokens$0.03/M tokens$0.375/M tokens
MiniMax-M2.1-lightning更快且更靈活(~100 tps)$0.3/M tokens$2.4/M tokens$0.03/M tokens$0.375/M tokens
MiniMax-M2代理程式能力、進階推理$0.3/M tokens$1.2/M tokens$0.03/M tokens$0.375/M tokens

使用範例

基本聊天完成

import litellm

response = litellm.anthropic.messages.acreate(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "Hello, how are you?"}],
api_key="your-minimax-api-key",
api_base="https://api.minimax.io/anthropic/v1/messages",
max_tokens=1000
)

print(response.choices[0].message.content)

使用環境變數

export MINIMAX_API_KEY="your-minimax-api-key"
export MINIMAX_API_BASE="https://api.minimax.io/anthropic/v1/messages"
import litellm

response = litellm.anthropic.messages.acreate(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "Hello!"}],
max_tokens=1000
)

使用思考(M2.1 功能)

response = litellm.anthropic.messages.acreate(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "Solve: 2+2=?"}],
thinking={"type": "enabled", "budget_tokens": 1000},
api_key="your-minimax-api-key"
)

# Access thinking content
for block in response.choices[0].message.content:
if hasattr(block, 'type') and block.type == 'thinking':
print(f"Thinking: {block.thinking}")

使用工具呼叫

tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
}
]

response = litellm.anthropic.messages.acreate(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "What's the weather in SF?"}],
tools=tools,
api_key="your-minimax-api-key",
max_tokens=1000
)

與 LiteLLM Proxy 搭配使用

您可以透過 LiteLLM Proxy 路由,使用 Anthropic SDK 搭配 MiniMax 模型:

步驟說明
1. 啟動 LiteLLM Proxyconfig.yaml 中以 MiniMax 模型設定 proxy
2. 設定環境變數將 Anthropic SDK 指向 proxy 端點
3. 使用 Anthropic SDK使用原生 Anthropic SDK 呼叫 MiniMax 模型

步驟 1:設定 LiteLLM Proxy

建立一個 config.yaml

model_list:
- model_name: minimax/MiniMax-M2.1
litellm_params:
model: minimax/MiniMax-M2.1
api_key: os.environ/MINIMAX_API_KEY
api_base: https://api.minimax.io/anthropic/v1/messages

啟動 proxy:

litellm --config config.yaml

步驟 2:搭配 Anthropic SDK 使用

import os
os.environ["ANTHROPIC_BASE_URL"] = "http://localhost:4000"
os.environ["ANTHROPIC_API_KEY"] = "sk-1234" # Your LiteLLM proxy key

import anthropic

client = anthropic.Anthropic()

message = client.messages.create(
model="minimax/MiniMax-M2.1",
max_tokens=1000,
system="You are a helpful assistant.",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Hi, how are you?"
}
]
}
]
)

for block in message.content:
if block.type == "thinking":
print(f"Thinking:\n{block.thinking}\n")
elif block.type == "text":
print(f"Text:\n{block.text}\n")

MiniMax - v1/chat/completions

與 LiteLLM SDK 搭配使用

您可以直接使用 LiteLLM 搭配 MiniMax 的 OpenAI 相容 API:

基本聊天完成

import litellm

response = litellm.completion(
model="minimax/MiniMax-M2.1",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello, how are you?"}
],
api_key="your-minimax-api-key",
api_base="https://api.minimax.io/v1"
)

print(response.choices[0].message.content)

使用環境變數

export MINIMAX_API_KEY="your-minimax-api-key"
export MINIMAX_API_BASE="https://api.minimax.io/v1"
import litellm

response = litellm.completion(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "Hello!"}]
)

使用推理拆分

response = litellm.completion(
model="minimax/MiniMax-M2.1",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Solve: 2+2=?"}
],
extra_body={"reasoning_split": True},
api_key="your-minimax-api-key",
api_base="https://api.minimax.io/v1"
)

# Access reasoning details if available
if hasattr(response.choices[0].message, 'reasoning_details'):
print(f"Thinking: {response.choices[0].message.reasoning_details}")
print(f"Response: {response.choices[0].message.content}")

使用工具呼叫

tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
}
]

response = litellm.completion(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "What's the weather in SF?"}],
tools=tools,
api_key="your-minimax-api-key",
api_base="https://api.minimax.io/v1"
)

串流

response = litellm.completion(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "Tell me a story"}],
stream=True,
api_key="your-minimax-api-key",
api_base="https://api.minimax.io/v1"
)

for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")

透過 LiteLLM Proxy 與 OpenAI SDK 搭配使用

您也可以透過 LiteLLM Proxy 路由,使用 OpenAI SDK 搭配 MiniMax 模型:

步驟說明
1. 啟動 LiteLLM Proxyconfig.yaml 中以 MiniMax 模型設定 proxy
2. 設定環境變數將 OpenAI SDK 指向 proxy 端點
3. 使用 OpenAI SDK使用原生 OpenAI SDK 呼叫 MiniMax 模型

步驟 1:設定 LiteLLM Proxy

建立一個 config.yaml

model_list:
- model_name: minimax/MiniMax-M2.1
litellm_params:
model: minimax/MiniMax-M2.1
api_key: os.environ/MINIMAX_API_KEY
api_base: https://api.minimax.io/v1

啟動 proxy:

litellm --config config.yaml

步驟 2:搭配 OpenAI SDK 使用

import os
os.environ["OPENAI_BASE_URL"] = "http://localhost:4000"
os.environ["OPENAI_API_KEY"] = "sk-1234" # Your LiteLLM proxy key

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
model="minimax/MiniMax-M2.1",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hi, how are you?"},
],
# Set reasoning_split=True to separate thinking content
extra_body={"reasoning_split": True},
)

# Access thinking and response
if hasattr(response.choices[0].message, 'reasoning_details'):
print(f"Thinking:\n{response.choices[0].message.reasoning_details[0]['text']}\n")
print(f"Text:\n{response.choices[0].message.content}\n")

使用 OpenAI SDK 串流

from openai import OpenAI

client = OpenAI()

stream = client.chat.completions.create(
model="minimax/MiniMax-M2.1",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Tell me a story"},
],
extra_body={"reasoning_split": True},
stream=True,
)

reasoning_buffer = ""
text_buffer = ""

for chunk in stream:
if hasattr(chunk.choices[0].delta, "reasoning_details") and chunk.choices[0].delta.reasoning_details:
for detail in chunk.choices[0].delta.reasoning_details:
if "text" in detail:
reasoning_text = detail["text"]
new_reasoning = reasoning_text[len(reasoning_buffer):]
if new_reasoning:
print(new_reasoning, end="", flush=True)
reasoning_buffer = reasoning_text

if chunk.choices[0].delta.content:
content_text = chunk.choices[0].delta.content
new_text = content_text[len(text_buffer):] if text_buffer else content_text
if new_text:
print(new_text, end="", flush=True)
text_buffer = content_text

成本計算

成本計算會使用 model_prices_and_context_window.json 中的定價資訊自動運作。

範例:

response = litellm.completion(
model="minimax/MiniMax-M2.1",
messages=[{"role": "user", "content": "Hello!"}],
api_key="your-minimax-api-key"
)

# Access cost information
print(f"Cost: ${response._hidden_params.get('response_cost', 0)}")

MiniMax - 文字轉語音

快速入門

LiteLLM Python SDK 使用方式

基本使用

from pathlib import Path
from litellm import speech
import os

os.environ["MINIMAX_API_KEY"] = "your-api-key"

speech_file_path = Path(__file__).parent / "speech.mp3"
response = speech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="The quick brown fox jumped over the lazy dogs",
)
response.stream_to_file(speech_file_path)

非同步使用

from litellm import aspeech
from pathlib import Path
import os, asyncio

os.environ["MINIMAX_API_KEY"] = "your-api-key"

async def test_async_speech():
speech_file_path = Path(__file__).parent / "speech.mp3"
response = await aspeech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="The quick brown fox jumped over the lazy dogs",
)
response.stream_to_file(speech_file_path)

asyncio.run(test_async_speech())

聲音選擇

MiniMax 支援許多聲音。LiteLLM 提供與 OpenAI 相容的聲音名稱,對應到 MiniMax 聲音:

from litellm import speech

# OpenAI-compatible voice names
voices = ["alloy", "echo", "fable", "onyx", "nova", "shimmer"]

for voice in voices:
response = speech(
model="minimax/speech-2.6-hd",
voice=voice,
input=f"This is the {voice} voice",
)
response.stream_to_file(f"speech_{voice}.mp3")

您也可以直接使用 MiniMax 原生聲音 ID:

response = speech(
model="minimax/speech-2.6-hd",
voice="male-qn-qingse", # MiniMax native voice ID
input="Using native MiniMax voice ID",
)

自訂參數

MiniMax TTS 支援額外參數以微調音訊輸出:

from litellm import speech

response = speech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="Custom audio parameters",
speed=1.5, # Speed: 0.5 to 2.0
response_format="mp3", # Format: mp3, pcm, wav, flac
extra_body={
"vol": 1.2, # Volume: 0.1 to 10
"pitch": 2, # Pitch adjustment: -12 to 12
"sample_rate": 32000, # 16000, 24000, or 32000
"bitrate": 128000, # For MP3: 64000, 128000, 192000, 256000
"channel": 1, # 1 for mono, 2 for stereo
}
)
response.stream_to_file("custom_speech.mp3")

回應格式

from litellm import speech

# MP3 format (default)
response = speech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="MP3 format audio",
response_format="mp3",
)

# PCM format
response = speech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="PCM format audio",
response_format="pcm",
)

# WAV format
response = speech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="WAV format audio",
response_format="wav",
)

# FLAC format
response = speech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="FLAC format audio",
response_format="flac",
)

LiteLLM Proxy 使用方式

LiteLLM 為 MiniMax TTS 提供 OpenAI 相容的 /audio/speech 端點。

設定

將 MiniMax 新增至您的 proxy 設定:

model_list:
- model_name: tts
litellm_params:
model: minimax/speech-2.6-hd
api_key: os.environ/MINIMAX_API_KEY

- model_name: tts-turbo
litellm_params:
model: minimax/speech-2.6-turbo
api_key: os.environ/MINIMAX_API_KEY

啟動 proxy:

litellm --config /path/to/config.yaml

# RUNNING on http://0.0.0.0:4000

發送請求

curl http://0.0.0.0:4000/v1/audio/speech \
-H "Authorization: Bearer sk-1234" \
-H "Content-Type: application/json" \
-d '{
"model": "tts",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy"
}' \
--output speech.mp3

使用自訂參數:

curl http://0.0.0.0:4000/v1/audio/speech \
-H "Authorization: Bearer sk-1234" \
-H "Content-Type: application/json" \
-d '{
"model": "tts",
"input": "Custom parameters example.",
"voice": "nova",
"speed": 1.5,
"response_format": "mp3",
"extra_body": {
"vol": 1.2,
"pitch": 1,
"sample_rate": 32000
}
}' \
--output custom_speech.mp3

聲音對應

LiteLLM 會將與 OpenAI 相容的聲音名稱對應到 MiniMax 聲音 ID:

OpenAI 聲音MiniMax 聲音 ID說明
alloymale-qn-qingse男聲
echomale-qn-jingying男聲
fablefemale-shaonv女聲
onyxmale-qn-badao男聲
novafemale-yujie女聲
shimmerfemale-tianmei女聲

您也可以直接傳入任何 MiniMax 原生聲音 ID 作為 voice 參數。

串流(WebSocket)

備註

目前的實作使用 MiniMax 的 HTTP 端點。若要支援 WebSocket 串流,請參閱 MiniMax 官方文件:https://platform.minimax.io/docs

錯誤處理

from litellm import speech
import litellm

try:
response = speech(
model="minimax/speech-2.6-hd",
voice="alloy",
input="Test input",
)
response.stream_to_file("output.mp3")
except litellm.exceptions.BadRequestError as e:
print(f"Bad request: {e}")
except litellm.exceptions.AuthenticationError as e:
print(f"Authentication failed: {e}")
except Exception as e:
print(f"Error: {e}")

額外的主體參數

透過 extra_body 傳入這些參數:

參數型別說明預設值
volfloat音量(0.1 到 10)1.0
pitchint音高調整(-12 到 12)0
sample_rateint取樣率:16000、24000、3200032000
bitrateintMP3 位元率:64000、128000、192000、256000128000
channelint音訊聲道:1(單聲道)或 2(立體聲)1
output_formatstring輸出格式:"hex" 或 "url"(url 會回傳 24 小時有效的 URL)hex