跳至主要内容

Claude 2 与 Claude 2 API 入门

Python SDK 为访问 Anthropic 功能强大的对话式 AI 助手 Claude 2 提供了便捷途径,开发者可轻松将其先进的自然语言能力集成到各类应用中。
· 12分钟 阅读

使用 AI 探索

如果您希望将一款更贴近自然对话且高度准确的语言模型集成到您的应用中,Anthropic 的 Claude 2 将是上佳之选。它提供公开的聊天应用(类似于 ChatGPT)、API,以及适用于不同模型版本的 playground。

在博客文章 Claude vs. ChatGPT:2023 年哪款 AI 助手更适合数据科学家? 中了解 Claude 与 ChatGPT 的回答差异。

在本教程中,我们将了解 Claude 2X 模型,以及如何使用 Python API 访问它们。我们将介绍 API 的配置、发出基础查询及处理响应。同时还会学习流式查询、异步请求,以及一些更高级的 API 功能。教程的全部源代码可在 此 DataLab 工作簿 中获取;您可以轻松创建副本,在浏览器中直接编辑并运行代码,无需在本地安装任何软件。

学完本教程后,您应能较好地理解如何将 Claude 2 集成到自己的应用中,以充分利用其先进的自然语言能力。

对于刚接触生成式 AI 的读者,我们的 AI 基础技能路径可帮助您学习面向未来 AI 世界的新技术与新模型。

Claude 2 基础

Anthropic 近期发布了其大型语言模型的最新版本 Claude 2。它在多项任务上表现更佳,给出更长且更连贯的回答。此外,它还提供 API 访问和公开测试版网站,地址为 claude.ai。

图片来自 claude.ai

Claude 2 以自然对话著称,同时具备更强的推理能力、扩展的记忆与上下文追踪,并尽量减少有害输出。它在编程、数学推理与逻辑等能力上表现出提升。

例如,在法律推理方面,Claude 2 在律师资格考试的选择题部分得分 76.5%,比 Claude 1.3 高出 3.5%。在学术能力测试评估中,Claude 2 在 GRE 阅读和写作部分的分数高于第 90 个百分位,在数量推理方面与中位申请者相当。

Claude 2.1 简介

2023 年 11 月 21 日,Anthropic 发布了 Claude 2.1,带来了显著改进,可实现更高级的推理并减少幻觉内容。此次升级的重点在于通过提升诚实性来增强可靠性。Claude 2.1 在面对知识库空白时会更加透明,而不是尝试编造信息。

它配备了 200K 的更大上下文窗口,使 Claude 能够引用并交叉核对论文等长篇内容,从而在冗长的摘要或分析中保持事实一致性。

Claude 2.1 还引入了实验性的工具使用功能。它使 Claude 2 能够在调用函数并执行操作的同时,以高精度从其他来源检索和处理数据。

设置 Claude 2

目前,对 Anthropic API 的访问仅向部分个人与组织开放。如果您希望率先体验,可在官网填写 申请表。Anthropic 正在逐步开放访问权限,以确保 API 的安全性与可扩展性。请注意,由于请求量较大,获得访问权限可能需要一定时间。

当您收到 Anthropic 的批准邮件并创建账户后,将被重定向至仪表板。该仪表板提供通往工作台的链接,类似于 OpenAI Playground,您可以在其中切换不同模型并分析响应。此外,其中还包含生成 API 密钥与文档的相关链接。

图片来自 Dashboard

要创建 API 密钥,您需要点击“Get API Keys”按钮并输入密钥名称。完成后,您将获得一个可用于通过 Claude 2 API 生成响应的密钥。

图片来自 Anthropic

要将 API 密钥设置为环境变量,您可以使用 Bash 命令,或在 DataLab 工作簿中进行设置。首先,启动一个新工作簿,然后在左侧面板进入“Environment”按钮。点击加号按钮,添加变量的名称和值。最后,点击保存以应用更改。

图片来自 DataLab

注意:您可以将 API 密钥直接写入 Python 函数,但出于安全原因强烈不建议这样做。

要在 Python 中访问 Anthropic API,首先需要使用 PIP 安装 Anthropic 的 Python SDK。

pip install anthropic

访问 Claude 2 API

本节我们将学习如何访问 Anthropic API,并使用 Claude 2.1 模型生成响应。您可以通过创建此工作簿的副本一同练习编码:Claude 2 与 Claude 2 API 入门。

我们将加载用于访问 API 密钥的 os 模块,以及用于基于 API 密钥创建对话式 AI 流水线的 anthropic 库。

from anthropic import Anthropic, HUMAN_PROMPT, AI_PROMPTimport osanthropic_api_key = os.environ["ANTHROPIC_API_KEY"]anthropic = Anthropic(    api_key= anthropic_api_key,)

“HUMAN_PROMPT”和“AI_PROMPT”实际是用于构建生成流水线中正确提示结构的字符串。

接下来我们将通过提供模型版本、最大全文长度和提示来生成响应。请确保您的提示遵循 Claude 2X 模板。

completion = anthropic.completions.create(    model="claude-2.1",    max_tokens_to_sample=350,    prompt=f"{HUMAN_PROMPT} How do I learn Python in a week?{AI_PROMPT}",)print(completion.completion)

我们得到了非常理想的结果。Claude 2.1 为我们提供了一份为期一周的 Python 学习详细计划。

Anthropic 同时支持同步与异步的 API 请求。

同步 API 顺序执行请求,在收到响应前会阻塞后续调用。相对地,异步 API 可并发处理多个请求且不阻塞,并在各自完成时处理响应。与同步方式相比,异步 API 通常更高效、更具可扩展性。

要以异步方式调用 API,请导入 AsyncAnthropic 而非 Anthropic。使用 async 语法定义函数,并在每个 API 调用前使用 await。

from anthropic import AsyncAnthropicanthropic = AsyncAnthropic()async def main():    completion = await anthropic.completions.create(        model="claude-2.1",        max_tokens_to_sample=300,        prompt=f"{HUMAN_PROMPT}How many moons does Jupiter have?{AI_PROMPT}",    )    print(completion.completion)await main()

我们得到的结果基本准确。有些来源称为 79,但 NASA 表示木星有 95 颗卫星。

注意:在运行 Python .py 文件(而非 Jupyter Notebook)时,请使用 asyncio.run(main()),不要使用 await main()。

使用 Claude 2 进行 LLM 流式输出

流式处理已成为大型语言模型的一项关键技术,相较于传统处理方式具有多重优势。流式处理无需等待完整响应即可开始处理输出,它通过按令牌逐步返回语言模型的输出,而非一次性全部返回,从而降低感知延迟。

要启用流式输出,请在 completion 函数中将“stream”参数设置为 `True`。

anthropic = Anthropic()stream = anthropic.completions.create(    prompt=f"{HUMAN_PROMPT}Could you please write a Python code to train a simple classification model?{AI_PROMPT}",    max_tokens_to_sample=350,    model="claude-2.1",    stream=True,)for completion in stream:    print(completion.completion, end="", flush=True)

可以看到我们以更快的速度逐行接收响应,就像 Claude 2.1 正在“敲字”一样。

同样,我们也可以在 `async` 模式下进行流式处理。注意这里只需在 completion 函数前添加 `await`,并在 for 循环前加上 `async`。

anthropic = AsyncAnthropic()stream = await anthropic.completions.create(    prompt=f"{HUMAN_PROMPT}Please write a blog post on Neural Networks and use Markdown format. Kindly make sure that you proofread your work for any spelling, grammar, or punctuation errors.{AI_PROMPT}",    max_tokens_to_sample=350,    model="claude-2.1",    stream=True,)async for completion in stream:    print(completion.completion, end="", flush=True)

我们的生成式 AI 在撰写规范博文方面表现良好。

查看这份清单:7 款必备的生成式 AI 工具,助您构建功能完善、具备上下文感知的聊天机器人应用。

高级功能与自定义

Anthropic API 在基础响应生成之外,还提供多项高级功能与自定义选项:

  • 错误处理:APIConnectionError 与 APIStatusError 等特定异常类型可清晰地处理连接问题与 HTTP 错误。
  • 默认请求头:会自动发送 anthropic-version 请求头以标识客户端。您可通过修改 anthropic 对象中的 default_headers 参数进行自定义。
  • 日志:将环境变量 ANTHROPIC_LOG 设为开启可启用调试日志,便于排障。
  • HTTP 客户端:支持配置由 HTTPX 驱动的客户端,包括代理、传输层及其他高级功能。
  • 资源管理:您可以使用 .close() 方法手动关闭客户端,或使用上下文管理器在退出时自动关闭。
  • 提示工程技巧:API 文档提供多种关键字,帮助您为文本、结构化文档、代码片段以及 RAG 结果优化输入。
  • 提示校验:API 会进行基础的提示清理与校验,确保其对 Claude 2 模型进行了优化。

要了解更多高级功能,请查阅 Anthropic API 的文档。

Claude 2 API 的实践应用

Claude 2 API 在众多行业与领域拥有广泛的实用场景。在内容创作与文案写作方面,它可协助起草高质量文章、营销材料与创意写作。此外,还可用于:

  • 语言翻译:您可以构建实时翻译应用,利用其先进的多语言能力。
  • 教育:擅长个性化学习。学生可以借助它更快掌握复杂主题。
  • 客户支持:提供具备上下文意识的增强型回答,更准确、更接近真人。
  • 编程助手:生成代码片段、调试并解释复杂概念,加速开发。
  • 创意艺术:与艺术家协作生成如音乐创作等内容。
  • 法律/合规:起草文书、总结法规,并协助确保合规性。

结语

Python API 为访问 Anthropic 的尖端对话式 AI 模型提供了强大途径。我们介绍了使用访问密钥进行配置、发起同步与异步 API 调用、流式响应,以及部分高级功能。此外,我们也了解了 Claude 2 的实际应用场景。

虽然 API 目前仍处于有限开放阶段,Anthropic 正在逐步扩大访问范围。随着 Claude 2 的持续进步,Python API 将使开发者能够轻松将其前沿能力集成到各类产品与服务中。

希望本篇 Claude 2 API 入门对您有所帮助!欢迎尝试这些代码示例,亲自体验 Claude 2 的出色能力。这里还有一份清单 5 个可用生成式 AI 模型构建的项目,激发您的灵感,用 Claude 2 开启下一个生成式 AI 项目。

Abid Ali Awan

作者

Abid Ali Awan

作为一名持证的数据科学家,我热衷于利用前沿技术打造创新的机器学习应用。凭借在语音识别、数据分析与报告、MLOps、对话式人工智能以及自然语言处理方面的扎实背景,我不断打磨构建智能系统的能力,力求带来切实影响。除技术专长外,我也擅长沟通,能够将复杂概念提炼为清晰、简明的表述。因此,我成为数据科学领域备受关注的博主,与不断壮大的数据专业人士社区分享洞见与实践经验。目前,我专注于内容创作与编辑,借助大语言模型打造有力且吸引人的内容,帮助企业与个人更好地发挥数据价值。

主题