📚 学习教程

【高级应用】Day6:LLM调用与模型选择–主流模型一网打尽

· 2026-04-12 · 6 阅读

【高级应用】Day6:LLM调用与模型选择–主流模型一网打尽

👤 龙主编 📅 2026-04-12 👁️ 6 阅读 💬 0 评论

章节导语

GPT-4、Claude 3、Gemini、Kimi……模型那么多,用哪个?哪个贵?哪个快?哪个效果好?

选错模型,白花钱。不会调用,白费劲。本文系统讲解主流模型的调用方法、成本优化、效果对比。

学完本文,你能根据场景选择最合适的模型,省钱又高效。

一、前置说明

1.1 学习路径

阶段 内容
基础 API调用基础
进阶 多模型调用

1.2 读者需要的基础

  • Python基础:会写函数、类
  • API理解:知道什么是API调用

1.3 学习目标

学完本文,你将能够:

  • 掌握GPT-4/Claude/Gemini/Kimi的调用方法
  • 根据场景选择最合适的模型
  • 实现成本优化和效果平衡

二、主流模型对比

2.1 主要玩家

模型 提供商 上下文 特长
GPT-4o OpenAI 128K 全能、代码强
GPT-4o-mini OpenAI 128K 便宜、快速
Claude 3.5 Anthropic 200K 长文本、分析强
Gemini 1.5 Google 1M 超长上下文
Kimi 月之暗面 128K 中文、中长文本

2.2 成本对比

每1000 tokens价格(仅供参考,以官方为准)

模型 输入 输出
GPT-4o $2.5/1K $10/1K
GPT-4o-mini $0.15/1K $0.6/1K
Claude 3.5 $3/1K $15/1K
Gemini 1.5 $0.075/1K $0.3/1K

2.3 选型指南

  • 代码任务:GPT-4o、Claude 3.5
  • 长文本分析:Claude 3.5(200K)、Gemini 1.5(1M)
  • 中文对话:Kimi、GPT-4o
  • 成本敏感:GPT-4o-mini、Gemini 1.5

三、环境配置

3.1 安装依赖

# 安装多模型支持库
pip install openai anthropic google-generativeai volcengine-python-sdk

# 或者安装LangChain(统一接口)
pip install langchain langchain-openai langchain-anthropic

3.2 API Key配置

# .env 文件配置
# OpenAI
OPENAI_API_KEY=sk-xxxx

# Anthropic (Claude)
ANTHROPIC_API_KEY=sk-ant-xxxx

# Google Gemini
GOOGLE_API_KEY=xxxx

# 月之暗面 (Kimi)
MOONSHOT_API_KEY=xxxx

3.3 验证配置

import os
from dotenv import load_dotenv

load_dotenv()

# 验证各API Key
print("OpenAI:", "✅" if os.getenv("OPENAI_API_KEY") else "❌")
print("Anthropic:", "✅" if os.getenv("ANTHROPIC_API_KEY") else "❌")
print("Google:", "✅" if os.getenv("GOOGLE_API_KEY") else "❌")
print("Kimi:", "✅" if os.getenv("MOONSHOT_API_KEY") else "❌")

四、OpenAI GPT调用

4.1 基础调用

from openai import OpenAI

client = OpenAI()

def call_gpt(prompt, model="gpt-4o"):
    """调用GPT模型
    
    参数:
        prompt: 输入提示词
        model: 模型名称(gpt-4o, gpt-4o-mini, gpt-3.5-turbo)
    返回:
        AI回复文本
    """
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content

# 测试
if __name__ == "__main__":
    result = call_gpt("你好,请介绍一下自己", model="gpt-4o-mini")
    print(f"GPT回复: {result}")

4.2 带上下文的对话

def chat_gpt(messages, model="gpt-4o"):
    """多轮对话
    
    参数:
        messages: 消息列表,格式:[{"role": "user/assistant", "content": "..."}]
        model: 模型名称
    返回:
        AI回复
    """
    response = client.chat.completions.create(
        model=model,
        messages=messages
    )
    return response.choices[0].message.content

# 示例
messages = [
    {"role": "system", "content": "你是一个乐于助人的助手"},
    {"role": "user", "content": "我想学习Python,推荐一些资源"},
    {"role": "assistant", "content": "推荐:1.官方文档 2.《Python编程:从入门到实践》"},
    {"role": "user", "content": "有没有免费的在线资源?"}
]

result = chat_gpt(messages)
print(f"GPT回复: {result}")

4.3 流式输出

def chat_gpt_stream(prompt, model="gpt-4o"):
    """流式输出,边生成边显示
    
    适合长文本生成场景
    """
    stream = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
        stream=True  # 开启流式
    )
    
    print("GPT: ", end="", flush=True)
    for chunk in stream:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
    print()  # 换行

chat_gpt_stream("写一个Python快速排序算法")

4.4 小结

GPT调用简单直接,适合快速上手。

五、Claude调用

5.1 基础调用

Claude调用
图1:Claude API调用流程
from anthropic import Anthropic

client = Anthropic()

def call_claude(prompt, model="claude-3-5-sonnet-20241022"):
    """调用Claude模型
    
    Claude的特点:
    - 更擅长分析和长文本
    - 可以设定系统提示词
    - 支持更大的上下文窗口
    """
    response = client.messages.create(
        model=model,
        max_tokens=1024,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.content[0].text

# 测试
if __name__ == "__main__":
    result = call_claude("解释一下什么是RAG")
    print(f"Claude回复: {result}")

5.2 带系统提示词

def chat_claude(user_input, system_prompt="你是一个专业的技术顾问"):
    """Claude对话,支持系统提示词
    
    系统提示词设定AI的角色和行为
    """
    response = client.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=1024,
        system=system_prompt,
        messages=[{"role": "user", "content": user_input}]
    )
    return response.content[0].text

# 示例
result = chat_claude(
    "帮我分析一下这个创业项目的可行性",
    system_prompt="你是一个资深商业分析师,擅长市场分析和商业模式评估"
)
print(f"Claude回复: {result}")

5.3 避坑指南

坑:max_tokens不够

如果回复被截断,检查max_tokens是否足够大。

# 正确设置max_tokens
response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=4096,  # 根据需求设置足够大
    messages=[...]
)

5.4 小结

Claude擅长分析和长文本,上下文窗口大(200K)。

六、Gemini调用

6.1 基础调用

import google.generativeai as genai
import os

genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

def call_gemini(prompt, model="gemini-1.5-flash"):
    """调用Gemini模型
    
    Gemini特点:
    - 超长上下文(1M tokens)
    - 价格便宜
    - 支持多模态
    """
    model = genai.GenerativeModel(model)
    response = model.generate_content(prompt)
    return response.text

# 测试
if __name__ == "__main__":
    result = call_gemini("介绍Python的装饰器")
    print(f"Gemini回复: {result}")

6.2 多轮对话

def chat_gemini(messages):
    """Gemini多轮对话
    
    messages格式: [{"role": "user", "parts": ["..."]}, {"role": "model", "parts": ["..."]}]
    """
    model = genai.GenerativeModel("gemini-1.5-flash")
    
    # 转换格式
    gemini_messages = []
    for msg in messages:
        role = "user" if msg["role"] == "user" else "model"
        gemini_messages.append({"role": role, "parts": [msg["content"]]})
    
    chat = model.start_chat(history=gemini_messages[:-1])
    response = chat.send_message(messages[-1]["content"])
    return response.text

# 示例
messages = [
    {"role": "user", "content": "Python很难吗?"},
    {"role": "model", "content": "Python相对容易入门,语法简洁清晰"},
    {"role": "user", "content": "那Java呢?"}
]

result = chat_gemini(messages)
print(f"Gemini回复: {result}")

6.3 适用场景

  • 超长文档处理:1M上下文,一本书直接喂进去
  • 成本敏感:价格最低的选项之一
  • 多模态:支持图片、视频、音频

七、Kimi调用

7.1 基础调用

Kimi调用
图2:Kimi API调用
from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("MOONSHOT_API_KEY"),
    base_url="https://api.moonshot.cn/v1"
)

def call_kimi(prompt, model="moonshot-v1-8k"):
    """调用Kimi模型
    
    Kimi特点:
    - 中文优化
    - 长上下文(128K)
    - 适合中文对话和文档
    """
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content

# 测试
if __name__ == "__main__":
    result = call_kimi("用中文介绍一下大语言模型")
    print(f"Kimi回复: {result}")

7.2 Kimi vs GPT 对比

方面 Kimi GPT-4o
中文能力 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
代码能力 ⭐⭐⭐ ⭐⭐⭐⭐⭐
价格 便宜 较贵
上下文 128K 128K

7.3 小结

Kimi适合中文场景,价格实惠。

八、实战:智能路由系统

8.1 需求分析

根据任务类型自动选择最合适的模型:

  • 简单任务 → 便宜模型
  • 复杂任务 → 强大模型
  • 长文档 → 大上下文模型

8.2 完整代码

from openai import OpenAI
from anthropic import Anthropic
import google.generativeai as genai
import os

# 初始化各客户端
openai_client = OpenAI()
anthropic_client = Anthropic()
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))

class SmartRouter:
    """智能路由:根据任务类型选择最合适的模型"""
    
    def __init__(self):
        self.models = {
            "fast": "gpt-4o-mini",           # 快速、便宜
            "balanced": "gpt-4o",            # 平衡
            "powerful": "claude-3-5-sonnet-20241022",  # 强大
            "long_context": "gemini-1.5-flash",  # 长上下文
            "chinese": "moonshot-v1-8k",     # 中文优化
        }
    
    def route(self, task_type, task_description=""):
        """路由选择
        
        参数:
            task_type: 任务类型
            task_description: 任务描述(可选)
        返回:
            推荐的模型和理由
        """
        routes = {
            "simple_qa": ("fast", "gpt-4o-mini", "简单问答,便宜快速"),
            "code": ("balanced", "gpt-4o", "代码任务需要强模型"),
            "analysis": ("powerful", "claude-3-5-sonnet-20241022", "分析任务用Claude更强"),
            "long_doc": ("long_context", "gemini-1.5-flash", "长文档用Gemini最划算"),
            "chinese_chat": ("chinese", "moonshot-v1-8k", "中文对话Kimi更合适"),
        }
        
        default = ("balanced", "gpt-4o", "默认用GPT-4o")
        return routes.get(task_type, default)
    
    def call(self, prompt, task_type="simple_qa"):
        """执行调用
        
        根据路由自动选择模型
        """
        route_key, model, reason = self.route(task_type, prompt)
        print(f"🎯 路由:{route_key} | 模型:{model} | 原因:{reason}")
        
        if "gpt" in model:
            response = openai_client.chat.completions.create(
                model=model,
                messages=[{"role": "user", "content": prompt}]
            )
            return response.choices[0].message.content
        
        elif "claude" in model:
            response = anthropic_client.messages.create(
                model=model,
                max_tokens=1024,
                messages=[{"role": "user", "content": prompt}]
            )
            return response.content[0].text
        
        elif "gemini" in model:
            model_inst = genai.GenerativeModel(model)
            response = model_inst.generate_content(prompt)
            return response.text
        
        elif "moonshot" in model:
            from openai import OpenAI as MoonshotClient
            moonshot = MoonshotClient(
                api_key=os.getenv("MOONSHOT_API_KEY"),
                base_url="https://api.moonshot.cn/v1"
            )
            response = moonshot.chat.completions.create(
                model=model,
                messages=[{"role": "user", "content": prompt}]
            )
            return response.choices[0].message.content

# 测试
if __name__ == "__main__":
    router = SmartRouter()
    
    test_tasks = [
        ("今天天气怎么样?", "simple_qa"),
        ("帮我写个快速排序", "code"),
        ("分析这份100页的报告", "long_doc"),
        ("用中文聊聊AI的未来", "chinese_chat"),
    ]
    
    print("=" * 60)
    print("智能路由演示")
    print("=" * 60)
    
    for desc, task_type in test_tasks:
        print(f"\n📝 任务:{desc}")
        result = router.call(desc, task_type)
        print(f"回复:{result[:50]}...")

8.3 运行结果

$ python smart_router.py

============================================================
智能路由演示
============================================================

📝 任务:今天天气怎么样?
🎯 路由:fast | 模型:gpt-4o-mini | 原因:简单问答,便宜快速
回复:今天天气晴朗,温度20-25度...

📝 任务:帮我写个快速排序
🎯 路由:balanced | 模型:gpt-4o | 原因:代码任务需要强模型
回复:这是一个Python快速排序实现...

📝 任务:分析这份100页的报告
🎯 路由:long_context | 模型:gemini-1.5-flash | 原因:长文档用Gemini最划算
回复:这份报告的主要发现是...

九、总结与练习

9.1 要点回顾

  • GPT-4o:全能,代码强,价格中等
  • GPT-4o-mini:便宜快速,适合简单任务
  • Claude 3.5:分析强,上下文大
  • Gemini 1.5:超长上下文,价格最低
  • Kimi:中文优化,性价比高

9.2 选型决策树

选型决策树
图3:模型选择决策流程

9.3 成本优化建议

  • 简单任务用小模型:GPT-4o-mini比GPT-4o便宜几十倍
  • 长文档用Gemini:1M上下文+低价格
  • 中文用Kimi:性价比高于GPT

9.4 延伸阅读

9.5 课后练习

基础题:注册各平台API Key,验证调用。

进阶题:实现一个成本追踪器,统计每次调用的费用。

挑战题:构建一个自动模型选择器,根据任务描述用LLM判断用哪个模型。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

微信公众号二维码

扫码关注公众号

QQ
QQ二维码

扫码添加QQ