Skip to content

第14天:国外大模型详解

学习目标

本节将带领读者了解国外主流大模型,掌握GPT、Claude、Gemini、Llama、Mistral的特点,对比国外大模型的差异,并能够调用国外大模型API。

课程内容

1. GPT系列(OpenAI)

1.1 模型概述

GPT系列是OpenAI开发的大语言模型,包括GPT-1 (2018)、GPT-2 (2019)、GPT-3 (2020)、GPT-4 (2023)等多个版本,采用Transformer Decoder架构,GPT-4参数量估计为1.76T。其核心特点包括强大的生成能力、推理能力强、多模态支持、生态系统完善等,是目前最流行的大语言模型之一。

1.2 GPT系列演进

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 应用场景

适合场景

GPT适合的场景包括文本生成、代码生成、推理任务、多模态理解、复杂对话等。在这些场景下,GPT能够充分发挥其生成能力和推理能力,提供高质量的结果。

不适合场景

GPT不适合的场景包括实时应用(延迟较高)、成本敏感应用、需要本地部署等。在这些场景下,GPT的高延迟和高成本可能成为瓶颈。

2. Claude系列(Anthropic)

2.1 模型概述

基本信息

Claude的基本信息包括开发者(Anthropic)、发布时间(Claude 1 (2023)、Claude 2 (2023)、Claude 3 (2024))、架构(Transformer Decoder)、参数量(未公开)等方面。

核心特点

Claude的核心特点包括安全性强、上下文超长(200K token)、推理能力强、多模态支持等方面。这些特点使得Claude在安全性和长文本处理方面具有优势。

2.2 Claude系列演进

Claude 1 (2023)

Claude 1的参数量未公开,采用Transformer Decoder架构,特点是安全、可控。

Claude 2 (2023)

Claude 2的参数量未公开,采用Transformer Decoder架构,特点是更长的上下文(100K token)。

Claude 3 (2024)

Claude 3的参数量未公开,采用Transformer Decoder架构,特点是多模态支持、上下文超长(200K token)。

Claude 3.5 Sonnet (2024)

Claude 3.5 Sonnet的参数量未公开,采用Transformer Decoder架构,特点是平衡性能和成本。

Claude 3 Opus (2024)

Claude 3 Opus的参数量未公开,采用Transformer Decoder架构,特点是最强性能。

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 应用场景

适合场景

Claude适合的场景包括长文档处理、代码生成、推理任务、安全敏感应用、多模态理解等方面。在这些场景下,Claude能够提供高质量的服务。

3. Gemini系列(Google)

3.1 模型概述

基本信息

Gemini的基本信息包括开发者(Google DeepMind)、发布时间(Gemini (2023)、Gemini 1.5 (2024))、架构(多模态Transformer)、参数量(未公开)等方面。

核心特点

Gemini的核心特点包括多模态能力强、超长上下文(1M token)、推理能力强、多语言支持等方面。这些特点使得Gemini在多模态和长文本处理方面具有优势。

3.2 Gemini系列演进

Gemini (2023)

Gemini (2023)包括Nano(移动端)、Pro(平衡性能)、Ultra(最强性能)等版本,特点是多模态。

Gemini 1.5 (2024)

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 应用场景

适合场景

Gemini的适合场景包括多模态处理、长文档处理、推理任务、多语言处理、视频理解等方面。

4. Llama系列(Meta)

4.1 模型概述

基本信息

Llama的基本信息包括开发者(Meta)、发布时间(Llama 1 (2023)、Llama 2 (2023)、Llama 3 (2024))、架构(Transformer Decoder)、参数量(Llama 3 70B)等方面。

核心特点

Llama的核心特点包括完全开源、性能优秀、可商用、社区活跃等方面。这些特点使得Llama成为最受欢迎的开源模型之一。

4.2 Llama系列演进

Llama 1 (2023)

Llama 1的参数量包括7B、13B、33B、65B等版本,采用Transformer Decoder架构,特点是开源、性能优秀。

Llama 2 (2023)

Llama 2的参数量包括7B、13B、70B等版本,采用优化的Transformer Decoder架构,特点是更长上下文、可商用。

Llama 3 (2024)

Llama 3的参数量包括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 应用场景

适合场景

Llama的适合场景包括本地部署、开源应用、研究实验、定制化需求、成本敏感应用等方面。

5. Mistral系列(Mistral AI)

5.1 模型概述

基本信息

Mistral的基本信息包括开发者(Mistral AI)、发布时间(Mistral 7B (2023)、Mixtral 8x7B (2023)、Mistral Large (2024))、架构(Transformer + MoE)、参数量(Mistral Large估计176B)等方面。

核心特点

Mistral的核心特点包括开源友好、MoE架构、性能优秀、成本低等方面。

5.2 Mistral系列演进

Mistral 7B (2023)

Mistral 7B的参数量为7B,采用Transformer Decoder架构,特点是轻量、开源。

Mixtral 8x7B (2023)

Mixtral 8x7B的参数量为47B(8个7B专家),采用MoE Transformer架构,特点是MoE架构、高效。

Mistral Large (2024)

Mistral Large的参数量未公开,采用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 应用场景

适合场景

Mistral的适合场景包括本地部署、开源应用、成本敏感应用、高效推理等方面。

实践任务

任务:调用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杜"公众号,获取更多技术内容和最新动态