Skip to content

第14天:国外大模型详解

学习目标

  • 了解国外主流大模型
  • 掌握GPT、Claude、Gemini、Llama、Mistral的特点
  • 对比国外大模型的差异
  • 能够调用国外大模型API

课程内容

1. GPT系列(OpenAI)

1.1 模型概述

基本信息

  • 开发者:OpenAI
  • 发布时间:GPT-1 (2018)、GPT-2 (2019)、GPT-3 (2020)、GPT-4 (2023)
  • 架构:Transformer Decoder
  • 参数量:GPT-4估计1.76T

核心特点

  • 强大的生成能力
  • 推理能力强
  • 多模态支持
  • 生态系统完善

1.2 GPT系列演进

GPT-1 (2018)

  • 参数量:117M
  • 架构:12层Transformer Decoder
  • 特点:无监督预训练 + 有监督微调

GPT-2 (2019)

  • 参数量:1.5B
  • 架构:48层Transformer Decoder
  • 特点:零样本学习

GPT-3 (2020)

  • 参数量:175B
  • 架构:96层Transformer Decoder
  • 特点:少样本学习

GPT-4 (2023)

  • 参数量:未公开(估计1.76T)
  • 架构:多模态Transformer
  • 特点:多模态能力、推理能力

GPT-4 Turbo (2023)

  • 参数量:未公开
  • 架构:优化的GPT-4
  • 特点:更快的推理、更长的上下文

GPT-4o (2024)

  • 参数量:未公开
  • 架构:多模态Transformer
  • 特点:原生多模态、实时响应

1.3 API调用

安装SDK

bash
pip install openai

调用示例

python
from openai import OpenAI

# 初始化客户端
client = OpenAI(api_key="your-api-key")

# 调用模型
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "你是一个AI助手"},
        {"role": "user", "content": "请介绍一下GPT-4"}
    ],
    temperature=0.7,
    max_tokens=1000
)

# 获取结果
print(response.choices[0].message.content)

流式输出

python
# 流式调用
stream = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "请写一个Python冒泡排序"}
    ],
    stream=True
)

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

Function Calling

python
# 定义函数
functions = [
    {
        "name": "get_weather",
        "description": "获取指定城市的天气",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "城市名称"
                }
            },
            "required": ["city"]
        }
    }
]

# 调用模型
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "北京今天天气怎么样?"}
    ],
    functions=functions,
    function_call="auto"
)

# 获取函数调用
message = response.choices[0].message
if message.function_call:
    function_name = message.function_call.name
    function_args = json.loads(message.function_call.arguments)
    
    # 调用函数
    if function_name == "get_weather":
        weather = get_weather(function_args["city"])
        print(f"天气: {weather}")

多模态调用

python
# 图像理解
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "请描述这张图片"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/image.jpg"
                    }
                }
            ]
        }
    ]
)

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

1.4 应用场景

适合场景

  • 文本生成
  • 代码生成
  • 推理任务
  • 多模态理解
  • 复杂对话

不适合场景

  • 实时应用(延迟较高)
  • 成本敏感应用
  • 需要本地部署

2. Claude系列(Anthropic)

2.1 模型概述

基本信息

  • 开发者:Anthropic
  • 发布时间:Claude 1 (2023)、Claude 2 (2023)、Claude 3 (2024)
  • 架构:Transformer Decoder
  • 参数量:未公开

核心特点

  • 安全性强
  • 上下文超长(200K token)
  • 推理能力强
  • 多模态支持

2.2 Claude系列演进

Claude 1 (2023)

  • 参数量:未公开
  • 架构:Transformer Decoder
  • 特点:安全、可控

Claude 2 (2023)

  • 参数量:未公开
  • 架构:Transformer Decoder
  • 特点:更长的上下文(100K token)

Claude 3 (2024)

  • Haiku:快速、轻量
  • Sonnet:平衡性能和速度
  • Opus:最强性能
  • 特点:多模态、200K上下文

2.3 API调用

安装SDK

bash
pip install anthropic

调用示例

python
import anthropic

# 初始化客户端
client = anthropic.Anthropic(api_key="your-api-key")

# 调用模型
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1000,
    temperature=0.7,
    messages=[
        {
            "role": "user",
            "content": "请介绍一下Claude大模型"
        }
    ]
)

# 获取结果
print(message.content[0].text)

流式输出

python
# 流式调用
with client.messages.stream(
    model="claude-3-opus-20240229",
    max_tokens=1000,
    messages=[
        {
            "role": "user",
            "content": "请写一个Python快速排序"
        }
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

多模态调用

python
# 图像理解
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1000,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "请描述这张图片"
                },
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/jpeg",
                        "data": "base64-encoded-image"
                    }
                }
            ]
        }
    ]
)

print(message.content[0].text)

长文档处理

python
# 读取长文档
with open("long_document.txt", "r", encoding="utf-8") as f:
    document = f.read()

# 处理长文档
message = client.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=4000,
    messages=[
        {
            "role": "user",
            "content": f"请总结以下文档:\n\n{document}"
        }
    ]
)

print(message.content[0].text)

2.4 应用场景

适合场景

  • 长文档处理
  • 代码生成
  • 推理任务
  • 安全敏感应用
  • 多模态理解

3. Gemini系列(Google)

3.1 模型概述

基本信息

  • 开发者:Google DeepMind
  • 发布时间:Gemini (2023)、Gemini 1.5 (2024)
  • 架构:多模态Transformer
  • 参数量:未公开

核心特点

  • 多模态能力强
  • 超长上下文(1M token)
  • 推理能力强
  • 多语言支持

3.2 Gemini系列演进

Gemini (2023)

  • Nano:移动端
  • Pro:平衡性能
  • Ultra:最强性能
  • 特点:多模态

Gemini 1.5 (2024)

  • Pro:1M token上下文
  • 特点:更长的上下文、更好的性能

3.3 API调用

安装SDK

bash
pip install google-generativeai

调用示例

python
import google.generativeai as genai

# 配置API Key
genai.configure(api_key="your-api-key")

# 创建模型
model = genai.GenerativeModel('gemini-1.5-pro')

# 调用模型
response = model.generate_content(
    "请介绍一下Gemini大模型",
    generation_config=genai.types.GenerationConfig(
        temperature=0.7,
        max_output_tokens=1000
    )
)

# 获取结果
print(response.text)

流式输出

python
# 流式调用
response = model.generate_content(
    "请写一个Python快速排序",
    stream=True
)

for chunk in response:
    print(chunk.text, end="", flush=True)

多模态调用

python
# 图像理解
import PIL.Image

# 加载图像
image = PIL.Image.open("image.jpg")

# 调用模型
response = model.generate_content([
    "请描述这张图片",
    image
])

print(response.text)

长上下文处理

python
# 读取长文档
with open("long_document.txt", "r", encoding="utf-8") as f:
    document = f.read()

# 处理长文档
response = model.generate_content(
    f"请总结以下文档:\n\n{document}"
)

print(response.text)

3.4 应用场景

适合场景

  • 多模态处理
  • 长文档处理
  • 推理任务
  • 多语言处理
  • 视频理解

4. Llama系列(Meta)

4.1 模型概述

基本信息

  • 开发者:Meta
  • 发布时间:Llama 1 (2023)、Llama 2 (2023)、Llama 3 (2024)
  • 架构:Transformer Decoder
  • 参数量:Llama 3 70B

核心特点

  • 完全开源
  • 性能优秀
  • 可商用
  • 社区活跃

4.2 Llama系列演进

Llama 1 (2023)

  • 参数量:7B、13B、33B、65B
  • 架构:Transformer Decoder
  • 特点:开源、性能优秀

Llama 2 (2023)

  • 参数量:7B、13B、70B
  • 架构:优化的Transformer Decoder
  • 特点:更长上下文、可商用

Llama 3 (2024)

  • 参数量:8B、70B
  • 架构:优化的Transformer Decoder
  • 特点:更强性能、128K上下文

4.3 本地部署

使用Hugging Face

python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# 加载模型
model_name = "meta-llama/Meta-Llama-3-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    device_map="auto",
    torch_dtype=torch.float16
)

# 生成文本
prompt = "请介绍一下Llama大模型"
inputs = tokenizer(prompt, return_tensors="pt")
inputs = inputs.to(model.device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=500,
        temperature=0.7,
        top_p=0.9
    )

response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)

使用Ollama

bash
# 安装Ollama
curl -fsSL https://ollama.com/install.sh | sh

# 拉取模型
ollama pull llama3:8b

# 运行模型
ollama run llama3:8b "请介绍一下Llama大模型"

使用vLLM

bash
# 安装vLLM
pip install vllm

# 启动服务
python -m vllm.entrypoints.openai.api_server \
    --model meta-llama/Meta-Llama-3-8B-Instruct \
    --host 0.0.0.0 \
    --port 8000
python
# 调用vLLM服务
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="dummy"
)

response = client.chat.completions.create(
    model="meta-llama/Meta-Llama-3-8B-Instruct",
    messages=[
        {"role": "user", "content": "请介绍一下Llama大模型"}
    ]
)

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

4.4 应用场景

适合场景

  • 本地部署
  • 开源应用
  • 研究实验
  • 定制化需求
  • 成本敏感应用

5. Mistral系列(Mistral AI)

5.1 模型概述

基本信息

  • 开发者:Mistral AI
  • 发布时间:Mistral 7B (2023)、Mixtral 8x7B (2023)、Mistral Large (2024)
  • 架构:Transformer + MoE
  • 参数量:Mistral Large估计176B

核心特点

  • 开源友好
  • MoE架构
  • 性能优秀
  • 成本低

5.2 Mistral系列演进

Mistral 7B (2023)

  • 参数量:7B
  • 架构:Transformer Decoder
  • 特点:轻量、开源

Mixtral 8x7B (2023)

  • 参数量:47B(8个7B专家)
  • 架构:MoE Transformer
  • 特点:MoE架构、高效

Mistral Large (2024)

  • 参数量:未公开
  • 架构:MoE Transformer
  • 特点:最强性能

5.3 API调用

安装SDK

bash
pip install mistralai

调用示例

python
from mistralai import Mistral

# 初始化客户端
client = Mistral(api_key="your-api-key")

# 调用模型
response = client.chat.complete(
    model="mistral-large-latest",
    messages=[
        {
            "role": "user",
            "content": "请介绍一下Mistral大模型"
        }
    ],
    temperature=0.7,
    max_tokens=1000
)

# 获取结果
print(response.choices[0].message.content)

流式输出

python
# 流式调用
stream = client.chat.stream(
    model="mistral-large-latest",
    messages=[
        {
            "role": "user",
            "content": "请写一个Python快速排序"
        }
    ]
)

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

5.4 本地部署

使用Hugging Face

python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# 加载模型
model_name = "mistralai/Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    device_map="auto",
    torch_dtype=torch.float16
)

# 生成文本
prompt = "请介绍一下Mistral大模型"
inputs = tokenizer(prompt, return_tensors="pt")
inputs = inputs.to(model.device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=500,
        temperature=0.7,
        top_p=0.9
    )

response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)

5.5 应用场景

适合场景

  • 本地部署
  • 开源应用
  • 成本敏感应用
  • 高效推理

实践任务

任务:调用3个国外模型API对比

目标:调用3个国外大模型API,对比输出结果

要求

  1. 选择3个国外大模型(GPT-4、Claude、Gemini)
  2. 准备相同的输入
  3. 调用API获取输出
  4. 对比分析结果

代码框架

python
from openai import OpenAI
import anthropic
import google.generativeai as genai

# 配置
openai_client = OpenAI(api_key="your-openai-api-key")
anthropic_client = anthropic.Anthropic(api_key="your-anthropic-api-key")
genai.configure(api_key="your-google-api-key")
gemini_model = genai.GenerativeModel('gemini-1.5-pro')

# 准备输入
prompt = "请用Python写一个快速排序算法"

# 调用GPT-4
def call_gpt4(prompt):
    response = openai_client.chat.completions.create(
        model="gpt-4",
        messages=[
            {"role": "user", "content": prompt}
        ],
        temperature=0.7,
        max_tokens=1000
    )
    return response.choices[0].message.content

# 调用Claude
def call_claude(prompt):
    message = anthropic_client.messages.create(
        model="claude-3-opus-20240229",
        max_tokens=1000,
        temperature=0.7,
        messages=[
            {"role": "user", "content": prompt}
        ]
    )
    return message.content[0].text

# 调用Gemini
def call_gemini(prompt):
    response = gemini_model.generate_content(
        prompt,
        generation_config=genai.types.GenerationConfig(
            temperature=0.7,
            max_output_tokens=1000
        )
    )
    return response.text

# 对比输出
gpt4_output = call_gpt4(prompt)
claude_output = call_claude(prompt)
gemini_output = call_gemini(prompt)

print("GPT-4输出:")
print(gpt4_output)
print("\nClaude输出:")
print(claude_output)
print("\nGemini输出:")
print(gemini_output)

课后作业

作业1:国外大模型对比表

题目:创建国外大模型对比表

要求

  1. 对比GPT、Claude、Gemini、Llama、Mistral
  2. 从架构、参数量、特点、API价格、应用场景等方面对比
  3. 生成对比报告

作业2:模型性能测试

题目:测试国外大模型的性能

要求

  1. 设计测试任务(代码生成、文本生成、推理任务等)
  2. 测试不同模型的表现
  3. 分析性能差异

作业3:成本分析

题目:分析国外大模型的使用成本

要求

  1. 调研各模型的API价格
  2. 计算不同使用场景的成本
  3. 提供成本优化建议

参考资料

官方文档

  1. OpenAI: https://platform.openai.com/docs
  2. Anthropic: https://docs.anthropic.com/
  3. Google AI: https://ai.google.dev/docs
  4. Mistral AI: https://docs.mistral.ai/

开源模型

  1. Llama: https://huggingface.co/meta-llama
  2. Mistral: https://huggingface.co/mistralai

在线资源

  1. Hugging Face: https://huggingface.co/

    • 模型库
  2. Ollama: https://ollama.com/

    • 本地模型运行

扩展阅读

模型评估

  • MMLU: Massive Multitask Language Understanding
  • HumanEval: 代码生成评估
  • GSM8K: 数学推理评估

模型优化

  • 量化: 减少模型大小
  • 蒸馏: 知识迁移
  • 微调: 适配特定任务

下节预告

下一节我们将学习LLM API开发实战,学习如何封装LLM API、实现流式输出、Function Calling等功能。


架构师AI杜公众号二维码

扫描二维码关注"架构师AI杜"公众号,获取更多技术内容和最新动态