Appearance
第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 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 应用场景
适合场景:
- 本地部署
- 开源应用
- 研究实验
- 定制化需求
- 成本敏感应用
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,对比输出结果
要求:
- 选择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杜"公众号,获取更多技术内容和最新动态
