Appearance
第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 8000python
# 调用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,对比输出结果
要求:
- 选择3个国外大模型(GPT-4、Claude、Gemini)
- 准备相同的输入
- 调用API获取输出
- 对比分析结果
代码框架:
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:国外大模型对比表
题目:创建国外大模型对比表
要求:
- 对比GPT、Claude、Gemini、Llama、Mistral
- 从架构、参数量、特点、API价格、应用场景等方面对比
- 生成对比报告
作业2:模型性能测试
题目:测试国外大模型的性能
要求:
- 设计测试任务(代码生成、文本生成、推理任务等)
- 测试不同模型的表现
- 分析性能差异
作业3:成本分析
题目:分析国外大模型的使用成本
要求:
- 调研各模型的API价格
- 计算不同使用场景的成本
- 提供成本优化建议
参考资料
官方文档
- OpenAI: https://platform.openai.com/docs
- Anthropic: https://docs.anthropic.com/
- Google AI: https://ai.google.dev/docs
- Mistral AI: https://docs.mistral.ai/
开源模型
在线资源
Hugging Face: https://huggingface.co/
- 模型库
Ollama: https://ollama.com/
- 本地模型运行
扩展阅读
模型评估
模型评估基准包括MMLU(Massive Multitask Language Understanding)、HumanEval(代码生成评估)、GSM8K(数学推理评估)等。
模型优化
模型优化技术包括量化(减少模型大小)、蒸馏(知识迁移)、微调(适配特定任务)等方法。
下节预告
下一节我们将学习LLM API开发实战,学习如何封装LLM API、实现流式输出、Function Calling等功能。

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