了解 Claude 3 模型、详细的性能基准以及如何访问它们。此外,还可以了解用于生成文本、访问视觉功能和流式传输的新 Claude 3 Python API。
人工智能之战仍在继续,谷歌的 Gemini 和 Gemma 最近掀起了波澜,但现在 Anthropic 的 Claude 3 已成为强有力的竞争者,在所有基准测试中均优于 GPT-4 和 Gemini Ultra。
在本教程中,我们将探索 Claude 3 模型、性能基准以及如何访问它们。我们还将比较 Claude 3 与其前身 Claude 2.1 和 ChatGPT。最后,我们将了解 Claude 3 的 Python API,用于生成文本、访问视觉功能、流式传输响应以及异步使用它。
什么是 Claude 3?
Anthropic 最近推出了一个名为 Claude 3 的新型 AI 模型系列。这些模型在各种认知任务中树立了行业标杆。Claude 3 模型包括三种最先进的模型:Haiku、Sonnet 和 Opus。这些模型可以支持实时客户聊天、自动完成和数据提取任务。
目前,Opus 和 Sonnet 可用于 claude.ai 和 Claude API,而较小的模型 Haiku 即将发布。Claude 3 模型更擅长遵循复杂的多步骤指令,遵守品牌声音和响应指南,并生成 JSON 等格式的结构化输出。
与之前的 Claude 模型相比,这些新模型表现出了更好的情境理解能力,从而减少了不必要的拒绝。
它们提供 200K 上下文窗口,但可以处理超过 100 万个词条的输入。具体来说,Claude 3 Opus 实现了近乎完美的召回率,准确率超过 99%。
为了确保模型的可靠性,Anthropic 设立了专门团队来追踪和减轻各种风险。
模型详细信息
Claude 3 提供三种型号,在智能、速度和成本之间取得平衡,适用于各种应用。
Claude 3 Opus
Opus 专为复杂、高智能任务而设计,擅长开放式问题解决和战略分析,其显著的上下文窗口和更高的成本反映了其先进的功能。
价格:输入tokens为每百万 15 美元,输出代币为每百万 75 美元。
Claude 3 Sonnet
Sonnet 在性能和成本之间实现了最佳平衡,非常适合涉及数据处理、销售优化和可扩展 AI 部署的企业工作负载。它价格实惠,并配有大型上下文窗口。
价格:输入代币为每百万 3 美元,输出代币为每百万 15 美元。
Claude 3 Haiku
Haiku 以其速度和效率脱颖而出,满足客户服务、内容审核和节省成本任务中的实时响应需求,使其成为套件中最实惠、响应最快的型号。
价格:输入代币为每百万 0.25 美元,输出代币为每百万 1.25 美元。
如何进入 Claude 3
有三种方法可以访问 Claude 3 模型。
Claude Chat
如果你正在寻找一种简单且免费的方式来试用 Claude AI 模型,你可以注册claude.ai/chats,它与 ChatGPT 类似。聊天界面具有交互性且易于使用。
目前,他们免费提供 Claude 3 Sonnet,但要访问 Claude 3 Opus,您需要购买 Claude Pro 月度订阅。
Claude Chat
工作台
要免费访问 Claude 3 Opus,您必须注册 Anthropic API:console.anthropic.com。
按照简单的步骤免费注册并通过单击“Workbench”选项卡并选择“claude-3-opus-20240229”模型开始使用 Opus 模型。
人性化工作台
API 和 SDK
curl
访问 Claude 3 模型的第三种方式是通过 API。Antropic 为 Python 和 Typescript 提供客户端软件开发工具包 (SDK)。您还可以使用终端中的命令通过 REST API 访问模型。
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data \
'{
"model": "claude-3-opus-20240229",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "How many moons does Jupiter have?"}
]
}'
深入了解基准
Claude 3 模型已经与表现最佳的大型语言模型 (LLM) 进行了对比,并在各种测试中显示出显著的进步。
尤其是 Claude 3 Opus,它在 MMLU、GPQA 和 GSM8K 等一些最常见的评估基准上的表现都超过了 GPT-4 和 Gemini Ultra。它在复杂任务上表现出接近人类的理解力和流畅度,这使其成为实现通用智能的第一步。
通过阅读 DataCamp 的文章《什么是 GPT-4 以及它为什么重要?》,了解 OpenAI 最先进的 LLM。此外,通过阅读《什么是 Google Gemini?你需要知道的一切》,了解 Google 的 ChatGPT 竞争对手 Google Gemini 。
从下面的基准数据可以看出,Claude 3 模型在分析和预测、代码生成以及生成非英语语言的响应方面已经变得更好:
Claude 3 模型的视觉能力得到了显著提升,使其能够理解复杂的照片、图表和图表。这一进步使企业能够以各种格式(例如 PDF、流程图和演示文稿)获取知识库。
与前几代型号相比,Claude 3型号在减少不必要的拒绝和准确性方面也有了显著的提高。
最后,我们可以看到,与 Claude 2.1 相比,Claude 3 模型在开放式问题的准确率上提高了两倍。此外,新模型的错误答案率也有所降低。
Claude 3 Opus 和 Claude 2.1
在本节中,我们将比较 Claude 3 Opus 和 Claude 2.1 在三个常见任务上的响应,以了解它们各自的表现。
问答
提示:我不用嘴巴说话,不用耳朵听。我没有身体,但我随着风而活。我是什么?
Claude 2.1 拒绝回答问题,理由是内容不足。然而,用户问了一个谜语,而 Claude Opus 给出了正确的答案。
生成代码
提示:为简单的 Scikit-learn 分类模型创建一个 FastAPI Web 应用程序。
Claude 2.1 代码最初似乎可以运行,但在输入样本值后出现错误。经过调查,我们发现代码没有优化,推理函数存在一些错误。
另一方面,当我们将其与 Claude 3 Opus 进行比较时,我们发现该代码运行流畅并提供准确的预测,如下所示。
复杂问题
提示:具有一层和一个输入和输出的神经网络与逻辑回归相比如何?
两种模型都给出了类似的答案,但 Claude 3 Opus 的回答更为详细且易于阅读。
Claude 3 Opus 与 ChatGPT 4
让我们在上述类似任务上比较一下 Claude 3 Opus 和 ChatGPT 4,以展示 Claude 3 如何比 GPT-4 模型略有优势。
问答
提示:木星有多少个卫星?
这两种说法都是错误的。截至 2024 年 2 月 5 日,木星有 95 颗卫星。此提示有助于理解数据集的截止期。看来 Claude 3 Opus 是在 2021 年的旧数据集上进行训练的,而 ChatGPT 上次更新是在 2023 年 4 月。
生成代码
提示:为简单的 Scikit-learn 分类模型创建一个 Gradio Web 应用程序。
Claude 3模型生成的代码运行顺利,但GPT-4生成的代码由于多次错误和幻觉而无法运行。
复杂问题
提示:电梯里有四个人,一栋楼有四层楼。每个人从不同楼层出来的概率是多少?
两个模型都给出了这个著名概率问题的正确答案。一个模型提供了数学运算,另一个模型生成并运行 Python 代码来显示相同的答案。在这种情况下,两个模型都赢了。
Claude 3 Python SDK
在本部分中,我们将了解Claude 3 Python SDK以及如何使用它来生成定制响应。
入门
1.anthropic
使用 PIP 安装 Python 包。
pip install anthropic
2. 在安装 Python 包之前,我们需要访问https://console.anthropic.com/dashboard并获取 API 密钥。
3. 设置ANTHROPIC_API_KEY
环境变量并使用 API 密钥提供值。在DataLab(DataCamp 支持 AI 的数据笔记本)中,设置和访问环境变量非常容易。
4. 使用 API 密钥创建客户端对象。我们将使用此客户端生成文本、访问视觉功能和进行流式传输。
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTHROPIC_API_KEY"],
)
Claude 2 完成 API
需要注意的是,较新的 Claude 3 模型不使用 Completion API。如果您尝试将此 API 用于 Claude 3 模型,则会导致错误,并且会建议您改用 Messages API。
from IPython.display import Markdown, display
from anthropic import HUMAN_PROMPT, AI_PROMPT
completion = client.completions.create(
model="claude-2.1",
max_tokens_to_sample=300,
prompt=f"{HUMAN_PROMPT} What is Matthew effect? {AI_PROMPT}",
)
Markdown(completion.completion)
如果您想了解有关更便宜的 Claude Python API 的更多信息,请阅读《Claude 2 和 Anthropic API 入门》。
Claude 3 消息 API
需要说明的是,我们将测试 Claude 3 Opus 模型的 Anthropic Messages API。此 API 与 Completion API 类似,但它要求messages
提供一个参数,作为包含角色和内容的字典列表。
Prompt = "Write the Go code for the simple data analysis."
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{"role": "user", "content": Prompt}
]
)
Markdown(message.content[0].text)
使用 IPython Markdown 将以 Markdown 格式显示响应。这意味着它将以干净的方式显示项目符号、代码块、标题和链接。
代码运行完美,并且解释足够清晰,任何人都可以明白发生了什么。
添加系统提示
我们可以通过提供系统提示来定制响应。我们已要求它将所有响应转换为瑞典语。
Prompt = "Write a report on climate change."
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
system="Respond only in Svenska.",
messages=[
{"role": "user", "content": Prompt}
]
)
Markdown(message.content[0].text)
它完美地生成了一份关于瑞典气候变化的报告。
克劳德 3 号视觉街区
Messages API 包含视觉功能。在本节中,我们将使用来自 Pexels.com 的两张照片来生成回复。
- 图片 1: Debayan Chakraborty 拍摄:https://www.pexels.com/photo/indian-blue-jay-20433278/
- 图片 2: Rachel Xiao 拍摄:https://www.pexels.com/photo/brown-pendant-lamp-hanging-on-tree-near-river-772429/
我们将使用该包加载图像httpx
并将其转换为 base64 编码。
import base64
import httpx
media_type = "image/jpeg"
url_1 = "https://images.pexels.com/photos/20433278/pexels-photo-20433278/free-photo-of-indian-blue-jay.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2"
image_encode_1 = base64.b64encode(httpx.get(url_1).content).decode("utf-8")
url_2 = "https://images.pexels.com/photos/772429/pexels-photo-772429.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=2"
image_encode_2 = base64.b64encode(httpx.get(url_2).content).decode("utf-8")
单幅图像的视觉
要查询图像,我们需要向 Claude 3 API 提供图像数据、编码类型和媒体类型。图像和提示都是消息参数的内容字典的一部分。
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_encode_1,
},
},
{
"type": "text",
"text": "Describe the image."
}
],
}
],
)
Markdown(message.content[0].text)
多幅图像的视觉
添加多个图像可能很复杂,但如果您遵循代码示例中的代码模式,您将了解它是如何工作的。
我们只需创建指出图像 1 和图像 2 的文本,然后询问有关这两幅图像的问题。
message = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Image 1:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_encode_1,
},
},
{
"type": "text",
"text": "Image 2:"
},
{
"type": "image",
"source": {
"type": "base64",
"media_type": media_type,
"data": image_encode_2,
},
},
{
"type": "text",
"text": "What do these images have in common?"
}
],
}
],
)
Markdown(message.content[0].text)
完美。两张图片都是鸟。
Claude 3 流媒体 API
流式传输是指以连续的方式生成文本输出的过程,而不是等待整个序列生成后再返回任何输出。使用这种技术,输出是逐个标记生成的,这有助于最大限度地减少感知延迟。
create
我们将使用流函数来生成流响应,而不是。
为了显示结果,我们将使用with
语法并for loop
在标记可用时立即打印它们。
Prompt = "Write a Python code for typical data engineering workflow."
completion = client.messages.stream(
max_tokens=1024,
messages=[
{
"role": "user",
"content": Prompt,
}
],
model="claude-3-opus-20240229",
)
with completion as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
Claude 3 异步 API
同步 API 按顺序执行请求并阻止它们,直到收到响应后才发起下一次调用。另一方面,异步 API 允许多个并发请求而不会发生阻塞,从而使其更高效且更具可扩展性。
我们将使用 初始化异步客户端AsyncAnthropic
。然后,我们将main
使用async
关键字创建函数并使用函数运行该函数asyncio.run
。
注意:如果您在 Jupyter Notebook 中使用异步,请尝试使用await main()
,而不是asyncio.run(main())
。
import asyncio
from anthropic import AsyncAnthropic
async_client = AsyncAnthropic(
api_key=os.environ["ANTHROPIC_API_KEY"],
)
Prompt = "Could you explain what MLOps is and suggest some of the best tools to use for it?"
async def main() -> None:
message = await async_client.messages.create(
max_tokens=1024,
messages=[
{
"role": "user",
"content": Prompt,
}
],
model="claude-3-opus-20240229",
)
display(Markdown(message.content[0].text))
asyncio.run(main())
将流式传输与异步 API 相结合
我们可以使用异步客户端的流函数轻松地将流式传输与异步方法结合起来。这样,我们将能够接收多个请求并流式传输响应,从而使 AI 应用程序具有可扩展性和稳健性。
async def main() -> None:
completion = async_client.messages.stream(
max_tokens=1024,
messages=[
{
"role": "user",
"content": Prompt,
}
],
model="claude-3-opus-20240229",
)
async with completion as stream:
async for text in stream.text_stream:
print(text, end="", flush=True)
asyncio.run(main())
如果您在运行代码时遇到困难,您可以访问此DataLab 工作簿,您可以在其中自己查看和执行代码(复制后)。
按照有关通过 Python 中的 OpenAI API 使用 GPT-3.5 和 GPT-4 的教程,了解如何访问 OpenAI 的大型语言模型。
最后的想法
Anthropic 现在是一家面向公众和企业的公司,类似于 OpenAI。它向任何人提供其模型的访问权限,在某些情况下是免费的。您可以通过 Pro 订阅或 API 访问来访问性能最佳的 LLM Claude 3 Opus。然而,Anthropic 不具备 OpenAI 所拥有的生态系统,缺乏嵌入模型、图像和视频生成、文本转语音和语音识别。它也缺乏 OpenAI API 提供的核心功能。
您可以通过阅读什么是 Open AI 的 Sora?它的工作原理、用例、替代方案等来了解 OpenAI 席卷社交媒体的全新文本转视频模型。
在本教程中,我们了解了 Claude 3 模型,该模型在 AI 领域备受推崇。我们在各种任务中将其与 Claude 2.1 和 GPT-4 进行了比较。最后,我们使用 Anthropic Python SDK 生成文本、访问视觉功能、逐个令牌流式传输响应令牌,并异步使用 API。
如果您是 AI 新手,并且想要了解最先进的 LLM 的内部工作原理,那么您应该考虑参加AI 基础技能课程。它将为您提供有关热门 AI 主题的实用知识,例如 ChatGPT、大型语言模型、生成式 AI 等等。