国产大模型 API 横评

前言

💡 痛点:国产大模型太多不知道选哪个?API 调用方式各不相同?价格、性能、易用性如何权衡?

🎯 解决方案国产大模型 API 横评 --- 从 API 使用、到能力对比、再到选型建议。

国产大模型全景:
#mermaid-svg-YLHr7bxJjy0eTYR9{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-YLHr7bxJjy0eTYR9 .error-icon{fill:#552222;}#mermaid-svg-YLHr7bxJjy0eTYR9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-YLHr7bxJjy0eTYR9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .marker.cross{stroke:#333333;}#mermaid-svg-YLHr7bxJjy0eTYR9 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-YLHr7bxJjy0eTYR9 p{margin:0;}#mermaid-svg-YLHr7bxJjy0eTYR9 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .cluster-label text{fill:#333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .cluster-label span{color:#333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .cluster-label span p{background-color:transparent;}#mermaid-svg-YLHr7bxJjy0eTYR9 .label text,#mermaid-svg-YLHr7bxJjy0eTYR9 span{fill:#333;color:#333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .node rect,#mermaid-svg-YLHr7bxJjy0eTYR9 .node circle,#mermaid-svg-YLHr7bxJjy0eTYR9 .node ellipse,#mermaid-svg-YLHr7bxJjy0eTYR9 .node polygon,#mermaid-svg-YLHr7bxJjy0eTYR9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-YLHr7bxJjy0eTYR9 .rough-node .label text,#mermaid-svg-YLHr7bxJjy0eTYR9 .node .label text,#mermaid-svg-YLHr7bxJjy0eTYR9 .image-shape .label,#mermaid-svg-YLHr7bxJjy0eTYR9 .icon-shape .label{text-anchor:middle;}#mermaid-svg-YLHr7bxJjy0eTYR9 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-YLHr7bxJjy0eTYR9 .rough-node .label,#mermaid-svg-YLHr7bxJjy0eTYR9 .node .label,#mermaid-svg-YLHr7bxJjy0eTYR9 .image-shape .label,#mermaid-svg-YLHr7bxJjy0eTYR9 .icon-shape .label{text-align:center;}#mermaid-svg-YLHr7bxJjy0eTYR9 .node.clickable{cursor:pointer;}#mermaid-svg-YLHr7bxJjy0eTYR9 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .arrowheadPath{fill:#333333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-YLHr7bxJjy0eTYR9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YLHr7bxJjy0eTYR9 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-YLHr7bxJjy0eTYR9 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YLHr7bxJjy0eTYR9 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-YLHr7bxJjy0eTYR9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-YLHr7bxJjy0eTYR9 .cluster text{fill:#333;}#mermaid-svg-YLHr7bxJjy0eTYR9 .cluster span{color:#333;}#mermaid-svg-YLHr7bxJjy0eTYR9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-YLHr7bxJjy0eTYR9 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-YLHr7bxJjy0eTYR9 rect.text{fill:none;stroke-width:0;}#mermaid-svg-YLHr7bxJjy0eTYR9 .icon-shape,#mermaid-svg-YLHr7bxJjy0eTYR9 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-YLHr7bxJjy0eTYR9 .icon-shape p,#mermaid-svg-YLHr7bxJjy0eTYR9 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-YLHr7bxJjy0eTYR9 .icon-shape .label rect,#mermaid-svg-YLHr7bxJjy0eTYR9 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-YLHr7bxJjy0eTYR9 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-YLHr7bxJjy0eTYR9 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-YLHr7bxJjy0eTYR9 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 国产大模型
百度 文心
阿里 通义
智谱 ChatGLM
DeepSeek
腾讯 混元
字节 豆包
月之暗面 Kimi
ERNIE 4.0
Speed-128K
qwen-max
qwen-plus
qwen-turbo
glm-4
glm-4-air
deepseek-chat
deepseek-coder
hunyuan-pro
hunyuan-lite

主流模型对比:

模型 公司 上下文 特点
文心 ERNIE 4.0 百度 8K 中文理解强
通义 qwen-max 阿里 32K 综合能力均衡
智谱 glm-4 智谱 AI 128K 长文本处理
DeepSeek-V2 DeepSeek 128K 代码能力强
混元 hunyuan-pro 腾讯 32K 腾讯生态集成

一、百度文心 ERNIE

1.1 安装与配置

bash 复制代码
# ===== 安装百度文心 SDK =====

# Python
pip install qianfan>=0.4.0

# 环境变量配置
export QIANFAN_AK="your-access-key"
export QIANFAN_SK="your-secret-key"

# Windows PowerShell
$env:QIANFAN_AK = "your-access-key"
$env:QIANFAN_SK = "your-secret-key"
python 复制代码
# ===== 基础配置 =====

import os
import qianfan

# 初始化客户端
chat_comp = qianfan.ChatCompletion()

# 简单调用
resp = chat_comp.do(
    model="ERNIE-4.0-8K",
    messages=[
        {"role": "user", "content": "你好!"}
    ]
)

print(resp["result"])

1.2 基础对话

python 复制代码
# ===== 基础对话示例 =====

import qianfan

# 初始化
chat_comp = qianfan.ChatCompletion()

def simple_chat():
    """简单对话"""
    resp = chat_comp.do(
        model="ERNIE-4.0-8K",
        messages=[
            {"role": "system", "content": "你是一个有帮助的助手。"},
            {"role": "user", "content": "写一个快速排序算法"}
        ],
        temperature=0.7,
        top_p=0.8,
        penalty_score=1.0
    )
    
    return resp["result"]

def multi_turn_chat():
    """多轮对话"""
    messages = []
    
    while True:
        user_input = input("你: ")
        if user_input.lower() in ['exit', 'quit']:
            break
        
        messages.append({"role": "user", "content": user_input})
        
        resp = chat_comp.do(
            model="ERNIE-4.0-8K",
            messages=messages
        )
        
        assistant_reply = resp["result"]
        messages.append({"role": "assistant", "content": assistant_reply})
        
        print(f"AI: {assistant_reply}")

def stream_chat():
    """流式响应"""
    resp = chat_comp.do(
        model="ERNIE-4.0-8K",
        messages=[
            {"role": "user", "content": "讲一个长故事"}
        ],
        stream=True  # 启用流式
    )
    
    print("AI: ", end="")
    for chunk in resp:
        if "result" in chunk:
            print(chunk["result"], end="", flush=True)
    print()  # 换行

1.3 高级特性

python 复制代码
# ===== 高级特性 =====

# 1. 函数调用(Function Calling)
def function_calling_example():
    """函数调用"""
    resp = chat_comp.do(
        model="ERNIE-4.0-8K",
        messages=[
            {"role": "user", "content": "北京今天天气怎么样?"}
        ],
        functions=[
            {
                "name": "get_weather",
                "description": "获取指定城市的天气",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "city": {
                            "type": "string",
                            "description": "城市名称"
                        }
                    },
                    "required": ["city"]
                }
            }
        ]
    )
    
    # 检查是否有函数调用
    if "function_call" in resp:
        function_name = resp["function_call"]["name"]
        function_args = eval(resp["function_call"]["arguments"])
        
        print(f"模型调用函数: {function_name}")
        print(f"参数: {function_args}")
        
        # 执行函数
        if function_name == "get_weather":
            result = get_weather(**function_args)
            
            # 将函数结果返回给模型
            resp2 = chat_comp.do(
                model="ERNIE-4.0-8K",
                messages=[
                    {"role": "user", "content": "北京今天天气怎么样?"},
                    {"role": "assistant", "content": "", "function_call": resp["function_call"]},
                    {"role": "function", "name": "get_weather", "content": str(result)}
                ]
            )
            
            return resp2["result"]
    
    return resp["result"]

# 2. 向量化(Embeddings)
def embeddings_example():
    """向量化"""
    emb_comp = qianfan.Embedding()
    
    resp = emb_comp.do(
        model="bge-large-zh",
        input=[
            "文本1",
            "文本2"
        ]
    )
    
    embeddings = resp["data"]
    print(f"向量维度: {len(embeddings[0]['embedding'])}")
    return embeddings

# 3. 图片生成
def image_generation_example():
    """图片生成"""
    img_comp = qianfan.Image()
    
    resp = img_comp.do(
        model="fuyu-8b",
        prompt="一只猫",
        size="1024x1024"
    )
    
    image_url = resp["data"][0]["url"]
    print(f"图片 URL: {image_url}")
    return image_url

二、阿里通义千问

2.1 安装与配置

bash 复制代码
# ===== 安装阿里通义 SDK =====

# Python
pip install dashscope>=1.17.0

# 环境变量配置
export DASHSCOPE_API_KEY="sk-..."

# Windows PowerShell
$env:DASHSCOPE_API_KEY = "sk-..."
python 复制代码
# ===== 基础配置 =====

import os
from dashscope import Generation

# 简单调用
response = Generation.call(
    model="qwen-max",
    messages=[
        {"role": "user", "content": "你好!"}
    ]
)

print(response.output.text)

2.2 基础对话

python 复制代码
# ===== 基础对话示例 =====

from dashscope import Generation
import dashscope

def simple_chat():
    """简单对话"""
    response = Generation.call(
        model="qwen-max",
        messages=[
            {"role": "system", "content": "你是一个有帮助的助手。"},
            {"role": "user", "content": "写一个快速排序算法"}
        ],
        temperature=0.7,
        top_p=0.8,
        max_tokens=1024
    )
    
    return response.output.text

def multi_turn_chat():
    """多轮对话"""
    messages = []
    
    while True:
        user_input = input("你: ")
        if user_input.lower() in ['exit', 'quit']:
            break
        
        messages.append({"role": "user", "content": user_input})
        
        response = Generation.call(
            model="qwen-max",
            messages=messages
        )
        
        assistant_reply = response.output.text
        messages.append({"role": "assistant", "content": assistant_reply})
        
        print(f"AI: {assistant_reply}")

def stream_chat():
    """流式响应"""
    response = Generation.call(
        model="qwen-max",
        messages=[
            {"role": "user", "content": "讲一个长故事"}
        ],
        stream=True  # 启用流式
    )
    
    print("AI: ", end="")
    for chunk in response:
        if chunk.output and chunk.output.text:
            print(chunk.output.text, end="", flush=True)
    print()  # 换行

2.3 高级特性

python 复制代码
# ===== 高级特性 =====

# 1. 多模态(Vision)
def vision_example():
    """视觉理解"""
    from dashscope import MultiModalConversation
    
    response = MultiModalConversation.call(
        model="qwen-vl-max",
        messages=[
            {
                "role": "user",
                "content": [
                    {"image": "https://example.com/image.jpg"},
                    {"text": "描述这张图片"}
                ]
            }
        ]
    )
    
    return response.output.text

# 2. 向量化(Embeddings)
def embeddings_example():
    """向量化"""
    from dashscope import TextEmbedding
    
    response = TextEmbedding.call(
        model="text-embedding-v2",
        input=[
            "文本1",
            "文本2"
        ]
    )
    
    embeddings = response.output.embeddings
    print(f"向量维度: {len(embeddings[0]['embedding'])}")
    return embeddings

# 3. 图片生成
def image_generation_example():
    """图片生成"""
    from dashscope import ImageSynthesis
    
    response = ImageSynthesis.call(
        model="wanx-v1",
        prompt="一只猫",
        size="1024*1024"
    )
    
    image_url = response.output.results[0].url
    print(f"图片 URL: {image_url}")
    return image_url

# 4. 语音识别(Paraformer)
def speech_recognition_example():
    """语音识别"""
    from dashscope import audio
    
    result = audio.asr.Transcription.call(
        model="paraformer-realtime-v1",
        file_urls=["https://example.com/audio.wav"]
    )
    
    return result.output.results[0].transcripts[0]

# 5. 文字转语音(Sambert)
def text_to_speech_example():
    """文字转语音"""
    from dashscope import audio
    
    result = audio.tts.SpeechSynthesizer.call(
        model="sambert-zhichu-v1",
        text="你好,世界"
    )
    
    # 保存音频
    with open("output.mp3", "wb") as f:
        f.write(result.output.audio)

三、智谱 ChatGLM

3.1 安装与配置

bash 复制代码
# ===== 安装智谱 SDK =====

# Python
pip install zhipuai>=2.1.0

# 环境变量配置
export ZHIPUAI_API_KEY="your-api-key"

# Windows PowerShell
$env:ZHIPUAI_API_KEY = "your-api-key"
python 复制代码
# ===== 基础配置 =====

import os
from zhipuai import ZhipuAI

# 初始化客户端
client = ZhipuAI(api_key=os.getenv("ZHIPUAI_API_KEY"))

# 简单调用
response = client.chat.completions.create(
    model="glm-4",
    messages=[
        {"role": "user", "content": "你好!"}
    ]
)

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

3.2 基础对话

python 复制代码
# ===== 基础对话示例 =====

from zhipuai import ZhipuAI
import os

client = ZhipuAI(api_key=os.getenv("ZHIPUAI_API_KEY"))

def simple_chat():
    """简单对话"""
    response = client.chat.completions.create(
        model="glm-4",
        messages=[
            {"role": "system", "content": "你是一个有帮助的助手。"},
            {"role": "user", "content": "写一个快速排序算法"}
        ],
        temperature=0.7,
        top_p=0.7,
        max_tokens=1024
    )
    
    return response.choices[0].message.content

def multi_turn_chat():
    """多轮对话"""
    messages = []
    
    while True:
        user_input = input("你: ")
        if user_input.lower() in ['exit', 'quit']:
            break
        
        messages.append({"role": "user", "content": user_input})
        
        response = client.chat.completions.create(
            model="glm-4",
            messages=messages
        )
        
        assistant_reply = response.choices[0].message.content
        messages.append({"role": "assistant", "content": assistant_reply})
        
        print(f"AI: {assistant_reply}")

def stream_chat():
    """流式响应"""
    response = client.chat(
        model="glm-4",
        messages=[
            {"role": "user", "content": "讲一个长故事"}
        ],
        stream=True  # 启用流式
    )
    
    print("AI: ", end="")
    for chunk in response:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
    print()  # 换行

3.3 高级特性

python 复制代码
# ===== 高级特性 =====

# 1. 函数调用(Function Calling)
def function_calling_example():
    """函数调用"""
    tools = [
        {
            "type": "function",
            "function": {
                "name": "get_weather",
                "description": "获取指定城市的天气",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "city": {
                            "type": "string",
                            "description": "城市名称"
                        }
                    },
                    "required": ["city"]
                }
            }
        }
    ]
    
    response = client.chat.completions.create(
        model="glm-4",
        messages=[
            {"role": "user", "content": "北京今天天气怎么样?"}
        ],
        tools=tools,
        tool_choice="auto"
    )
    
    message = response.choices[0].message
    
    # 检查是否有函数调用
    if message.tool_calls:
        for tool_call in message.tool_calls:
            function_name = tool_call.function.name
            function_args = eval(tool_call.function.arguments)
            
            print(f"模型调用函数: {function_name}")
            print(f"参数: {function_args}")
            
            # 执行函数
            if function_name == "get_weather":
                result = get_weather(**function_args)
                
                # 将函数结果返回给模型
                response2 = client.chat.completions.create(
                    model="glm-4",
                    messages=[
                        {"role": "user", "content": "北京今天天气怎么样?"},
                        {"role": "assistant", "content": "", "tool_calls": message.tool_calls},
                        {"role": "tool", "tool_call_id": tool_call.id, "content": str(result)}
                    ]
                )
                
                return response2.choices[0].message.content
    
    return message.content

# 2. 向量化(Embeddings)
def embeddings_example():
    """向量化"""
    response = client.embeddings.create(
        model="embedding-3",
        input=[
            "文本1",
            "文本2"
        ]
    )
    
    embeddings = [d.embedding for d in response.data]
    print(f"向量维度: {len(embeddings[0])}")
    return embeddings

# 3. 长文档处理(128K 上下文)
def long_document_example():
    """长文档处理"""
    # 读取长文档
    with open("long_document.txt", "r", encoding="utf-8") as f:
        long_text = f.read()
    
    response = client.chat.completions.create(
        model="glm-4",  # 支持 128K 上下文
        messages=[
            {"role": "user", "content": f"总结以下文档:\n\n{long_text}"}
        ]
    )
    
    return response.choices[0].message.content

四、DeepSeek

4.1 安装与配置

bash 复制代码
# ===== 安装 OpenAI SDK(DeepSeek 兼容 OpenAI API)=====

# Python
pip install openai>=1.0.0

# 环境变量配置
export DEEPSEEK_API_KEY="sk-..."
export DEEPSEEK_BASE_URL="https://api.deepseek.com"

# Windows PowerShell
$env:DEEPSEEK_API_KEY = "sk-..."
$env:DEEPSEEK_BASE_URL = "https://api.deepseek.com"
python 复制代码
# ===== 基础配置 =====

import os
from openai import OpenAI

# 初始化客户端)
client = OpenAI(
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    base_url=os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com")
)

# 简单调用)
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "user", "content": "你好!"}
    ]
)

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

4.2 基础对话

python 复制代码
# ===== 基础对话示例 =====

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("DEEPSEEK_API_KEY"),
    base_url="https://api.deepseek.com"
)

def simple_chat():
    """简单对话"""
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一个有帮助的助手。"},
            {"role": "user", "content": "写一个快速排序算法"}
        ],
        temperature=0.7,
        max_tokens=1024
    )
    
    return response.choices[0].message.content

def multi_turn_chat():
    """多轮对话"""
    messages = []
    
    while True:
        user_input = input("你: ")
        if user_input.lower() in ['exit', 'quit']:
            break
        
        messages.append({"role": "user", "content": user_input})
        
        response = client.chat.completions.create(
            model="deepseek-chat",
            messages=messages
        )
        
        assistant_reply = response.choices[0].message.content
        messages.append({"role": "assistant", "content": assistant_reply})
        
        print(f"AI: {assistant_reply}")

def stream_chat():
    """流式响应"""
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "user", "content": "讲一个长故事"}
        ],
        stream=True  # 启用流式
    )
    
    print("AI: ", end="")
    for chunk in response:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
    print()  # 换行

4.3 高级特性

python 复制代码
# ===== 高级特性 =====

# 1. 函数调用(Function Calling)
def function_calling_example():
    """函数调用"""
    tools = [
        {
            "type": "function",
            "function": {
                "name": "get_weather",
                "description": "获取指定城市的天气",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "city": {
                            "type": "string",
                            "description": "城市名称"
                        }
                    },
                    "required": ["city"]
                }
            }
        }
    ]
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "user", "content": "北京今天天气怎么样?"}
        ],
        tools=tools,
        tool_choice="auto"
    )
    
    message = response.choices[0].message
    
    # 检查是否有函数调用
    if message.tool_calls:
        # 处理工具调用(同 OpenAI API)
        pass

# 2. 代码生成(deepseek-coder)
def code_generation_example():
    """代码生成"""
    response = client.chat.completions.create(
        model="deepseek-coder",  # 代码专用模型
        messages=[
            {"role": "user", "content": "用 Python 写一个快速排序"}
        ],
        temperature=0.0  # 代码生成用低温
    )
    
    return response.choices[0].message.content

# 3. JSON 模式
def json_mode_example():
    """JSON 模式"""
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一个 JSON 生成器。只返回 JSON。"},
            {"role": "user", "content": "生成一个包含姓名、年龄、城市的用户 JSON"}
        ],
        response_format={ "type": "json_object" }  # 强制 JSON
    )
    
    content = response.choices[0].message.content
    print(content)
    # 输出: {"name": "张三", "age": 30, "city": "北京"}
    
    import json
    data = json.loads(content)
    return data

五、腾讯混元

5.1 安装与配置

bash 复制代码
# ===== 安装腾讯云 SDK =====

# Python
pip install tencentcloud-sdk-python>=3.0.0

# 环境变量配置
export TENCENTCLOUD_SECRET_ID="your-secret-id"
export TENCENTCLOUD_SECRET_KEY="your-secret-key"

# Windows PowerShell
$env:TENCENTCLOUD_SECRET_ID = "your-secret-id"
$env:TENCENTCLOUD_SECRET_KEY = "your-secret-key"
python 复制代码
# ===== 基础配置 =====

import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models

# 初始化
cred = credential.Credential(
    os.getenv("TENCENTCLOUD_SECRET_ID"),
    os.getenv("TENCENTCLOUD_SECRET_KEY")
)

httpProfile = HttpProfile()
httpProfile.endpoint = "hunyuan.tencentcloudapi.com"

clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile

client = hunyuan_client.HunyuanClient(cred, "ap-guangzhou", clientProfile)

# 简单调用
req = models.ChatCompletionsRequest()
req.Messages = [
    {"Role": "user", "Content": "你好!"}
]
req.Model = "hunyuan-pro"

resp = client.ChatCompletions(req)
print(resp.Choices[0].Message.Content)

5.2 基础对话

python 复制代码
# ===== 基础对话示例 =====

from tencentcloud.common import credential
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models
import os

cred = credential.Credential(
    os.getenv("TENCENTCLOUD_SECRET_ID"),
    os.getenv("TENCENTCLOUD_SECRET_KEY")
)
client = hunyuan_client.HunyuanClient(cred, "ap-guangzhou")

def simple_chat():
    """简单对话"""
    req = models.ChatCompletionsRequest()
    req.Messages = [
        {"Role": "system", "Content": "你是一个有帮助的助手。"},
        {"Role": "user", "Content": "写一个快速排序算法"}
    ]
    req.Model = "hunyuan-pro"
    req.Temperature = 0.7
    req.MaxTokens = 1024
    
    resp = client.ChatCompletions(req)
    return resp.Choices[0].Message.Content

def multi_turn_chat():
    """多轮对话"""
    messages = []
    
    while True:
        user_input = input("你: ")
        if user_input.lower() in ['exit', 'quit']:
            break
        
        messages.append({"Role": "user", "Content": user_input})
        
        req = models.ChatCompletionsRequest()
        req.Messages = messages
        req.Model = "hunyuan-pro"
        
        resp = client.ChatCompletions(req)
        
        assistant_reply = resp.Choices[0].Message.Content
        messages.append({"Role": "assistant", "Content": assistant_reply})
        
        print(f"AI: {assistant_reply}")

def stream_chat():
    """流式响应"""
    req = models.ChatCompletionsRequest()
    req.Messages = [
        {"Role": "user", "Content": "讲一个长故事"}
    ]
    req.Model = "hunyuan-pro"
    req.Stream = True  # 启用流式
    
    resp = client.ChatCompletions(req)
    
    print("AI: ", end="")
    for chunk in resp:
        if chunk.Choices and chunk.Choices[0].Delta.Content:
            print(chunk.Choices[0].Delta.Content, end="", flush=True)
    print()  # 换行

六、模型对比

6.1 能力对比

python 复制代码
# ===== 模型能力对比 =====

comparison = {
    "文心 ERNIE 4.0": {
        "公司": "百度",
        "上下文": "8K",
        "中文理解": 5,
        "代码能力": 3,
        "推理能力": 4,
        "多模态": True,
        "函数调用": True,
        "价格": "中",
        "优势": "中文理解强,百度生态集成",
        "劣势": "上下文较短"
    },
    "通义 qwen-max": {
        "公司": "阿里",
        "上下文": "32K",
        "中文理解": 5,
        "代码能力": 4,
        "推理能力": 4,
        "多模态": True,
        "函数调用": True,
        "价格": "中",
        "优势": "综合能力均衡,阿里生态集成",
        "劣势": "无明显短板"
    },
    "智谱 glm-4": {
        "公司": "智谱 AI",
        "上下文": "128K",
        "中文理解": 5,
        "代码能力": 4,
        "推理能力": 4,
        "多模态": False,
        "函数调用": True,
        "价格": "中",
        "优势": "长文本处理,兼容 OpenAI API",
        "劣势": "无多模态"
    },
    "DeepSeek-V2": {
        "公司": "DeepSeek",
        "上下文": "128K",
        "中文理解": 4,
        "代码能力": 5,
        "推理能力": 5,
        "多模态": False,
        "函数调用": True,
        "价格": "低",
        "优势": "代码能力强,价格低,兼容 OpenAI API",
        "劣势": "无多模态"
    },
    "混元 hunyuan-pro": {
        "公司": "腾讯",
        "上下文": "32K",
        "中文理解": 4,
        "代码能力": 3,
        "推理能力": 4,
        "多模态": False,
        "函数调用": False,
        "价格": "中",
        "优势": "腾讯生态集成",
        "劣势": "能力相对较弱"
    }
}

# 评分说明:1-5,5 为最强

6.2 价格对比

python 复制代码
# ===== 价格对比(单位:$/1M tokens)=====

pricing = {
    "文心 ERNIE 4.0": {
        "input": 0.004,  # $0.004/1K tokens
        "output": 0.004,
        "note": "按 1K tokens 计费"
    },
    "通义 qwen-max": {
        "input": 0.04,  # $0.04/1K tokens
        "output": 0.12,
        "note": "按 1K tokens 计费"
    },
    "智谱 glm-4": {
        "input": 0.05,  # $0.05/1K tokens
        "output": 0.05,
        "note": "按 1K tokens 计费"
    },
    "DeepSeek-V2": {
        "input": 0.14,  # $0.14/1M tokens(注意单位是 1M)
        "output": 0.28,
        "note": "按 1M tokens 计费,最便宜"
    },
    "混元 hunyuan-pro": {
        "input": 0.03,  # ¥0.03/1K tokens
        "output": 0.10,
        "note": "按 1K tokens 计费"
    }
}

# 成本估算
def estimate_cost(model: str, input_tokens: int, output_tokens: int):
    """估算成本"""
    if model not in pricing:
        return None
    
    price = pricing[model]
    
    # 注意单位
    if model == "DeepSeek-V2":
        # 按 1M tokens
        input_cost = (input_tokens / 1_000_000) * price["input"]
        output_cost = (output_tokens / 1_000_000) * price["output"]
    else:
        # 按 1K tokens
        input_cost = (input_tokens / 1_000) * price["input"]
        output_cost = (output_tokens / 1_000) * price["output"]
    
    total_cost = input_cost + output_cost
    
    return {
        "input_cost": input_cost,
        "output_cost": output_cost,
        "total_cost": total_cost
    }

6.3 性能对比

python 复制代码
# ===== 性能对比(响应速度)=====

performance = {
    "文心 ERNIE 4.0": {
        "speed": "中",  # tokens/秒
        "availability": "高",
        "rate_limit": "50 RPM"
    },
    "通义 qwen-max": {
        "speed": "中",
        "availability": "高",
        "rate_limit": "60 RPM"
    },
    "智谱 glm-4": {
        "speed": "快",
        "availability": "高",
        "rate_limit": "60 RPM"
    },
    "DeepSeek-V2": {
        "speed": "快",
        "availability": "高",
        "rate_limit": "60 RPM"
    },
    "混元 hunyuan-pro": {
        "speed": "慢",
        "availability": "中",
        "rate_limit": "30 RPM"
    }
}

七、选型建议

7.1 按场景选择

python 复制代码
# ===== 选型建议 =====

scenarios = {
    "中文内容生成": {
        "推荐": ["文心 ERNIE 4.0", "通义 qwen-max"],
        "理由": "中文理解强"
    },
    "代码生成": {
        "推荐": ["DeepSeek-V2", "通义 qwen-max"],
        "理由": "代码能力强"
    },
    "长文档处理": {
        "推荐": ["智谱 glm-4", "DeepSeek-V2"],
        "理由": "128K 上下文"
    },
    "多模态": {
        "推荐": ["通义 qwen-max", "文心 ERNIE 4.0"],
        "理由": "支持图片理解"
    },
    "成本敏感": {
        "推荐": ["DeepSeek-V2", "文心 ERNIE Speed"],
        "理由": "价格低"
    },
    "腾讯生态": {
        "推荐": ["混元 hunyuan-pro"],
        "理由": "腾讯生态集成"
    },
    "百度生态": {
        "推荐": ["文心 ERNIE 4.0"],
        "理由": "百度生态集成"
    },
    "阿里生态": {
        "推荐": ["通义 qwen-max"],
        "理由": "阿里生态集成"
    }
}

7.2 综合评分

python 复制代码
# ===== 综合评分 =====

ranking = {
    "通义 qwen-max": {
        "综合评分": 4.5,
        "中文": 5,
        "代码": 4,
        "推理": 4,
        "性价比": 4,
        "生态": 5
    },
    "智谱 glm-4": {
        "综合评分": 4.3,
        "中文": 5,
        "代码": 4,
        "推理": 4,
        "性价比": 4,
        "生态": 3
    },
    "DeepSeek-V2": {
        "综合评分": 4.2,
        "中文": 4,
        "代码": 5,
        "推理": 5,
        "性价比": 5,
        "生态": 2
    },
    "文心 ERNIE 4.0": {
        "综合评分": 4.0,
        "中文": 5,
        "代码": 3,
        "推理": 4,
        "性价比": 3,
        "生态": 5
    },
    "混元 hunyuan-pro": {
        "综合评分": 3.5,
        "中文": 4,
        "代码": 3,
        "推理": 4,
        "性价比": 3,
        "生态": 4
    }
}

八、总结

8.1 核心要点

#mermaid-svg-CNJiDA1YRRB2qjbg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CNJiDA1YRRB2qjbg .error-icon{fill:#552222;}#mermaid-svg-CNJiDA1YRRB2qjbg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CNJiDA1YRRB2qjbg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CNJiDA1YRRB2qjbg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CNJiDA1YRRB2qjbg .marker.cross{stroke:#333333;}#mermaid-svg-CNJiDA1YRRB2qjbg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CNJiDA1YRRB2qjbg p{margin:0;}#mermaid-svg-CNJiDA1YRRB2qjbg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-CNJiDA1YRRB2qjbg .cluster-label text{fill:#333;}#mermaid-svg-CNJiDA1YRRB2qjbg .cluster-label span{color:#333;}#mermaid-svg-CNJiDA1YRRB2qjbg .cluster-label span p{background-color:transparent;}#mermaid-svg-CNJiDA1YRRB2qjbg .label text,#mermaid-svg-CNJiDA1YRRB2qjbg span{fill:#333;color:#333;}#mermaid-svg-CNJiDA1YRRB2qjbg .node rect,#mermaid-svg-CNJiDA1YRRB2qjbg .node circle,#mermaid-svg-CNJiDA1YRRB2qjbg .node ellipse,#mermaid-svg-CNJiDA1YRRB2qjbg .node polygon,#mermaid-svg-CNJiDA1YRRB2qjbg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CNJiDA1YRRB2qjbg .rough-node .label text,#mermaid-svg-CNJiDA1YRRB2qjbg .node .label text,#mermaid-svg-CNJiDA1YRRB2qjbg .image-shape .label,#mermaid-svg-CNJiDA1YRRB2qjbg .icon-shape .label{text-anchor:middle;}#mermaid-svg-CNJiDA1YRRB2qjbg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CNJiDA1YRRB2qjbg .rough-node .label,#mermaid-svg-CNJiDA1YRRB2qjbg .node .label,#mermaid-svg-CNJiDA1YRRB2qjbg .image-shape .label,#mermaid-svg-CNJiDA1YRRB2qjbg .icon-shape .label{text-align:center;}#mermaid-svg-CNJiDA1YRRB2qjbg .node.clickable{cursor:pointer;}#mermaid-svg-CNJiDA1YRRB2qjbg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CNJiDA1YRRB2qjbg .arrowheadPath{fill:#333333;}#mermaid-svg-CNJiDA1YRRB2qjbg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CNJiDA1YRRB2qjbg .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CNJiDA1YRRB2qjbg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CNJiDA1YRRB2qjbg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CNJiDA1YRRB2qjbg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CNJiDA1YRRB2qjbg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CNJiDA1YRRB2qjbg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CNJiDA1YRRB2qjbg .cluster text{fill:#333;}#mermaid-svg-CNJiDA1YRRB2qjbg .cluster span{color:#333;}#mermaid-svg-CNJiDA1YRRB2qjbg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CNJiDA1YRRB2qjbg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CNJiDA1YRRB2qjbg rect.text{fill:none;stroke-width:0;}#mermaid-svg-CNJiDA1YRRB2qjbg .icon-shape,#mermaid-svg-CNJiDA1YRRB2qjbg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CNJiDA1YRRB2qjbg .icon-shape p,#mermaid-svg-CNJiDA1YRRB2qjbg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CNJiDA1YRRB2qjbg .icon-shape .label rect,#mermaid-svg-CNJiDA1YRRB2qjbg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CNJiDA1YRRB2qjbg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CNJiDA1YRRB2qjbg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CNJiDA1YRRB2qjbg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 国产大模型选型
能力
价格
生态
中文理解
代码能力
推理能力
多模态
输入价格
输出价格
免费额度
百度生态
阿里生态
腾讯生态

8.2 推荐组合

场景 主力模型 备用模型
综合应用 通义 qwen-max 智谱 glm-4
代码生成 DeepSeek-V2 通义 qwen-max
长文档 智谱 glm-4 DeepSeek-V2
成本敏感 DeepSeek-V2 文心 ERNIE Speed
多模态 通义 qwen-max 文心 ERNIE 4.0

8.3 最佳实践

实践 说明
多模型备份 一个主力 + 一个备用
成本优化 简单任务用便宜模型
生态选择 优先选生态内模型
API 兼容 优先选兼容 OpenAI API 的

本文基于各模型官方文档编写。如有问题欢迎评论区讨论!

相关推荐
Alan_7520 小时前
Python + Pytest 接口自动化测试方案
api
m0_535817551 天前
Mac下Claude Code完整配置指南:API中转+环境变量设置一步到位
gpt·macos·node.js·api·claude·claudecode·88api
m0_535817552 天前
macOS下Claude Code从0到1配置教程(附API密钥获取+常见报错修复)
gpt·macos·node.js·api·claude·claudecode·88api
halazi1002 天前
如何在华为云上开通MaaS服务并创建API Key,并在CodeArts Agent中配置使用API Key
华为云·api·tokens
壹方秘境2 天前
iOS抓包新选择:ApiCatcher同时支持捕获HTTP(s)和WebSocket(s)协议数据包
websocket·ios·api
147API3 天前
API 中转站怎么选?先看 Claude 和 GPT 能不能接明白API 中转站怎么选?先看 Claude 和 GPT 能不能接明白
api·api接入
Resistance丶未来3 天前
Pixelle-Video:AI全自动短视频引擎 接入API教程
人工智能·大模型·api·claude·deepseek·魔芋ai·pixelle-video
147API3 天前
n8n 接入第三方 API 教程:在工作流里调用大模型
api·api中转·n8n·api接入
weixin_397574094 天前
AI Agent三层架构设计原理
人工智能·dubbo