课程目标 #
了解各种 Claude 模型
比较 Claude 模型的速度和功能
让我们首先导入 anthropic SDK 并加载我们的 API 密钥:
from dotenv import load_dotenv
from anthropic import Anthropic
load_dotenv()
client = Anthropic()
Claude 模型 #
Claude Python SDK 支持多种模型,每种模型具有不同的功能和性能特征。此可视化比较了 Claude 3 和 3.5 模型的成本与速度,展示了成本和智能之间的权衡范围:
选择模型时,需要考虑几个重要因素:
模型的延迟(速度有多快?)
模型的功能(智能程度如何?)
模型的成本(价格如何?)
请参阅此表,比较 Claude 系列中每个模型的主要特性和功能。
比较模型速度 #
下面是一个简单的函数,它对所有 4 个模型运行相同的提示,并打印出模型响应和每个请求所花费的时间。
import time
def compare_model_speeds():
models = ["claude-3-5-sonnet-20240620","claude-3-opus-20240229", "claude-3-sonnet-20240229", "claude-3-haiku-20240307"]
task = "Explain the concept of photosynthesis in a concise paragraph."
for model in models:
start_time = time.time()
response = client.messages.create(
model=model,
max_tokens=500,
messages=[{"role": "user", "content": task}]
)
end_time = time.time()
execution_time = end_time - start_time
tokens = response.usage.output_tokens
time_per_token = execution_time/tokens
print(f"Model: {model}")
print(f"Response: {response.content[0].text}")
print(f"Generated Tokens: {tokens}")
print(f"Execution Time: {execution_time:.2f} seconds")
print(f"Time Per Token: {time_per_token:.2f} seconds\n")
compare_model_speeds()
Model: claude-3-5-sonnet-20240620
Response: Photosynthesis is the process by which plants, algae, and some bacteria convert light energy into chemical energy. These organisms use sunlight, water, and carbon dioxide to produce glucose (a type of sugar) and oxygen. The process occurs primarily in the chloroplasts of plant cells, where chlorophyll, a green pigment, absorbs light energy. This energy is then used to drive a series of chemical reactions that ultimately result in the production of glucose, which serves as food for the plant and can be stored for later use. Oxygen is released as a byproduct of this process, making photosynthesis crucial for maintaining Earth's atmosphere and supporting life on the planet.
Generated Tokens: 146
Execution Time: 2.56 seconds
Time Per Token: 0.02 seconds
Model: claude-3-opus-20240229
Response: Photosynthesis is the process by which green plants and some other organisms use sunlight to synthesize nutrients from carbon dioxide and water. In plants, photosynthesis occurs mainly within the leaves. This process involves the green pigment chlorophyll and generates oxygen as a byproduct. The energy from light is used to convert water, carbon dioxide, and minerals into oxygen and energy-rich organic compounds such as glucose, which are used by the plant for growth and reproduction. Photosynthesis is essential for life on Earth as it provides food for plants, which in turn provide food for other organisms, and it also releases oxygen into the atmosphere, which most living creatures need to survive.
Generated Tokens: 146
Execution Time: 7.32 seconds
Time Per Token: 0.05 seconds
Model: claude-3-sonnet-20240229
Response: Photosynthesis is the process by which plants and certain other organisms convert light energy from the sun into chemical energy in the form of glucose (sugar). During this process, carbon dioxide from the air and water from the soil are absorbed by the plant's leaves. With the aid of chlorophyll (a green pigment) and sunlight, these raw materials are transformed into oxygen, which is released into the atmosphere, and glucose, which serves as the plant's food source and building block for growth and development.
Generated Tokens: 108
Execution Time: 2.64 seconds
Time Per Token: 0.02 seconds
Model: claude-3-haiku-20240307
Response: Photosynthesis is the process by which plants, algae, and some bacteria convert light energy from the sun into chemical energy in the form of carbohydrates. During this process, carbon dioxide and water, with the aid of chlorophyll, are converted into glucose and oxygen through a series of chemical reactions driven by the energy from sunlight. The glucose produced is used by the plant as a source of energy, while the oxygen is released into the atmosphere. This process is essential for the survival of most life on Earth, as it provides the primary source of food and oxygen for many organisms.
Generated Tokens: 126
Execution Time: 1.09 seconds
Time Per Token: 0.01 seconds
运行上述代码时获得的具体响应会有所不同,但下表总结了运行上述代码时获得的特定输出:
Model | Generated Tokens | Execution Time (seconds) | Time Per Token (seconds) |
---|---|---|---|
claude-3-5-sonnet-20240620 | 146 | 2.56 | 0.02 |
claude-3-opus-20240229 | 146 | 7.32 | 0.05 |
claude-3-sonnet-20240229 | 108 | 2.64 | 0.02 |
claude-3-haiku-20240307 | 126 | 1.09 | 0.01 |
还要注意的是,对于“用简洁的段落解释光合作用的概念”这样的简单提示,所有模型都表现良好。在这种特殊情况下,选择最快和最便宜的选项可能是有意义的。
上面的例子只是模型速度差异的简单说明,但这并不是非常严格的演示。这是我们通过为所有 3 个模型提供 50 次相同的输入提示并平均每个模型的响应时间生成的图。为了确保“公平”的比较,我们提示模型生成非常长的输出,然后我们使用 max_tokens 将所有模型响应截断为完全相同数量的标记(我们将在下一课中介绍这一点)。
比较模型功能 #
显然 Haiku 是最快的模型,那么我们为什么要费心使用其他模型呢?这一切都归结于模型速度、成本和整体功能之间的权衡。Haiku 是最快的,但在某些情况下,其输出可能不如 Opus 高质量。话虽如此,重要的是要注意,在许多情况下,Haiku 的表现可以与我们一些功能更强大的模型一样好。真正了解哪种模型最适合您的特定用例的唯一方法是试用它们并评估其性能。
一般来说,我们建议将我们功能最强大的模型 Claude 3.5 Sonnet 用于涉及以下用例的用例:
1.编码:Claude 3.5 Sonnet 自主编写、编辑和运行代码,简化代码转换,以实现更快、更准确的更新和迁移。
2.客户支持:Claude 3.5 Sonnet 了解用户上下文并协调多步骤工作流程,实现全天候支持、更快的响应和更高的客户满意度。
3.数据科学与分析:Claude 3.5 Sonnet 可浏览非结构化数据、生成见解并生成可视化和预测,以增强数据科学专业知识。
4.视觉处理:Claude 3.5 Sonnet 擅长解释图表、图形和图像,准确地转录文本以获得不仅仅是文本的见解。
5.写作:Claude 3.5 Sonnet 在理解细微差别和幽默方面取得了显著的进步,产生了高质量、真实且可关联的内容。
如果您对我们的 Claude 系列模型之间的基准比较感兴趣,请阅读我们的 Claude 系列模型卡以获取更多信息。
展示能力
很难用一个演示来展示每个模型的各种功能,但下面的函数试图做到这一点。我们要求三个模型中的每一个解决以下数学问题:
具有以下 FC 计数的配送系统的几何月度粪大肠菌群平均值是多少:24、15、7、16、31 和 23?结果将输入到 NPDES DMR 中,因此,四舍五入为最接近的整数
注意:正确答案是 18
我们要求每个模型解决数学问题 7 次,并每次记录答案:
def compare_model_capabilities():
models = ["claude-3-5-sonnet-20240620", "claude-3-opus-20240229", "claude-3-sonnet-20240229", "claude-3-haiku-20240307"]
task = """
What is the geometric monthly fecal coliform mean of a distribution system with the following FC
counts: 24, 15, 7, 16, 31 and 23? The result will be inputted into a NPDES DMR, therefore, round
to the nearest whole number. Respond only with a number and nothing else.
"""
for model in models:
answers = []
for attempt in range(7):
response = client.messages.create(
model=model,
max_tokens=1000,
messages=[{"role": "user", "content": task}]
)
answers.append(response.content[0].text)
print(f"Model: {model}")
print(f"Answers: ", answers)
compare_model_capabilities()
Model: claude-3-5-sonnet-20240620
Answers: ['18', '18', '18', '18', '18', '18', '18']
Model: claude-3-opus-20240229
Answers: ['18', '18', '18', '18', '18', '18', '18']
Model: claude-3-sonnet-20240229
Answers: ['18', '17', '16', '17', '19', '18', '18']
Model: claude-3-haiku-20240307
Answers: ['17', '17', '18', '17', '17', '17', '18']
我们从每个模型获得的确切输出会有所不同,但以下是单次运行结果的摘要:
claude-3-5-sonnet-20240620 – 7/7 次得到正确答案
claude-3-opus-20240229 – 7/7 次得到正确答案
claude-3-sonnet-20240229 – 3/7 次得到正确答案
claude-3-haiku-20240307 – 2/7 次得到正确答案
显然,Claude 3.5 Sonnet 和 Claude 3 Opus 在这个特定的数学问题上表现最佳。
注意:这是模型功能的非常简单的演示。它根本不是一个严格的比较,仅用作易于理解的教育演示。请参阅 Claude 3 模型卡,使用行业标准基准进行更严格的定量比较
选择模型 #
下一个合乎逻辑的问题是:您应该使用哪种模型?如果不知道特定应用程序的具体任务和需求,这个问题很难回答。模型的选择会显著影响应用程序的性能、用户体验和成本效益:
功能 #
首先要考虑的是模型是否具备处理特定于应用程序的任务和用例所需的能力。不同的模型在不同领域具有不同的性能水平,例如一般语言理解、特定于任务的知识、推理能力和生成质量。将模型的优势与应用程序的需求相结合以确保获得最佳结果至关重要。
速度 #
模型处理和生成响应的速度是另一个关键因素,特别是对于需要实时或近实时交互的应用程序。更快的模型可以提供更灵敏和无缝的用户体验,减少延迟并提高整体可用性。但是,在速度和模型能力之间取得平衡很重要,因为最快的模型可能并不总是最适合您的特定需求。
成本 #
使用特定模型所涉及的成本是一个实际考虑因素,可能会影响应用程序的可行性和可扩展性。功能更强大的模型通常价格更高,无论是 API 使用成本还是所需的计算资源。评估不同模型的成本影响并确定最具成本效益且仍能满足应用程序要求的选项至关重要。
一种方法:从 Haiku 开始 #
在进行实验时,我们通常建议从 Haiku 模型开始。Haiku 是一种轻量级且快速的模型,可以作为许多应用程序的绝佳起点。它的速度和成本效益使其成为初始实验和原型设计的有吸引力的选择。在许多用例中,Haiku 被证明能够完全生成满足应用程序需求的高质量响应。通过从 Haiku 开始,您可以快速迭代应用程序、测试不同的提示和配置,并评估模型的性能,而不会产生大量成本或延迟。如果您对响应不满意,可以轻松“升级”到 Claude 3.5 Sonnet 等模型。
评估和升级 #
在开发和完善应用程序时,必须针对您的用例和提示设置一套全面的评估。这些评估将作为衡量所选模型性能的基准,并帮助您就潜在升级做出明智的决策。
如果您发现 Haiku 的响应不符合应用程序的要求,或者您希望更高水平的复杂性和准确性,则可以轻松过渡到 Sonnet 或 Opus 等功能更强大的模型。这些模型提供了增强的功能,可以处理更复杂的任务和细致入微的语言理解。
通过建立严格的评估框架,您可以客观地比较不同模型在特定用例中的表现。这些经验证据将指导您的决策过程,并确保您选择最符合应用程序需求的模型。