跳至内容
人工智能
大语言模型

Claude 3.7 Sonnet API:含演示项目的实用指南

通过构建一个基于 Gradio 的论文分析器,学习如何使用 Claude 3.7 Sonnet 的 API,从上传的 PDF 中提取洞见。
Aashi Dutt's photo
Aashi Dutt
已更新 · 12分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。

Claude 3.7 Sonnet 是 Anthropic 最新的 AI 模型,通过全新的 Thinking Mode(思考模式)提供更强的推理能力。它可处理 200K 个上下文 token,非常适合复杂的研究分析。

在本教程中,我将一步步讲解如何构建一个基于 Claude 3.7 Sonnet 的论文分析器(Research Paper Analyzer),它能够:

  • 从论文中提取关键洞见和研究结论。
  • 识别每篇论文的局限性与不足。
  • 在多篇论文间查找相互关联与共同引用。
  • 基于分析结果生成新的研究思路。

我们还将把 Claude 3.7 Sonnet 的思考模式与 Gradio 集成,让用户上传多篇论文并获得结构化洞见。

本文将重点讲解实操部分——如果您只想了解概览,推荐阅读这篇关于Claude 3.7 Sonnet的文章。

如果您在寻找清晰的演示,请收看我们的 Claude 3.7 Sonnet API 视频教程,动手构建一个多模态研究助理。视频将带您完成 Anthropic API 的访问设置、使用 PyPDF2 提取与处理 PDF文档、使用 Claude 3.7 的思考模式,并基于 Gradio 构建一个真实可用的研究助理。您也可以了解最新的 Claude 模型 Claude Sonnet 4.5,以及 Claude Agent SDK。

项目概览:使用 Claude 3.7 Sonnet 的论文分析器

我们将开发一个基于 Gradio 的论文分析器,允许用户:

  • 上传多篇 PDF 格式的论文。
  • 提取每篇论文的核心贡献与局限性。
  • 识别相互关联、引用与重叠的研究思路。
  • 基于多篇论文的洞见生成新的研究构想。

成本优化

为优化 Claude 3.7 Sonnet API 的成本,我们需要将其使用方式与项目需求对齐;输入 token 费用为 $3/百万,输出 token(包括思考模式)为 $15/百万。

我们可通过提示缓存、批处理,以及对长回复使用流式模式来降低开销。还可通过设置较低的思考 token 预算(自 1,024 token 起)来优化思考模式,仅在必要时再提高。

您可以在 Anthropic 官方文档中了解更多 API 成本优化方法。

Claude 3.7 Sonnet 的思考模式是什么?

在开始之前,先简要介绍一下思考模式,以防您还不熟悉。思考模式是 Claude 3.7 Sonnet 的新特性,它在生成最终答案前进行逐步推理。该模式允许模型:

  • 将复杂的研究问题拆解为结构化、逻辑性的步骤。
  • 透明展示其内部推理过程中的洞见。
  • 在研究分析中通过避免幻觉来提升科学准确性。

简而言之,其工作方式如下:

  • 生成思考块:Claude 首先以结构化格式生成中间推理步骤,便于深入分析并对问题进行逻辑拆解。
  • 迭代式精炼:模型自我评估推理,整合相关洞见,同时过滤不一致之处,以确保连贯性与科学有效性。
  • 综合生成最终回复:将思考阶段的结构化洞见综合为表述良好的输出,提升清晰度、准确性与语境相关性。

步骤 1:前置准备

开始之前,我们需要设置 Anthropic 的 API 密钥:

1. 登录 Anthropic 控制台:https://console.anthropic.com/

2. 点击 Get API Keys。

获取 API 密钥窗口

3. 系统会跳转到 API Keys 选项卡。点击 Create API Key,并输入密钥名称。

创建 API 密钥窗口

4. 复制该密钥并妥善保存备用。

5. 现在在 Billing 选项卡下为您的结算账户充值。点击购买额度,向账户添加约 $5(足以完成本项目)。

至此我们已获得 API 密钥。接下来确保安装所需依赖。

pip install anthropic gradio PyPDF2

安装完成后,导入必要的库:

import anthropic
import PyPDF2
import os
import gradio as gr

步骤 2:配置 Claude 3.7 Sonnet API

既然已导入所有必需库,接下来设置 Claude API。

如果您使用 Google Colab,可将 API 密钥保存在 Secrets 选项卡中,然后通过 get() 函数来访问。否则也可以将 API 密钥直接写入代码(不推荐)。

随后我们使用 Anthropic 库初始化 Claude 客户端,并传入 API 密钥。

# If using Google Colab Secrets
from google.colab import userdata
API_KEY = userdata.get('claude-3.7-sonnet')
client = anthropic.Anthropic(
    api_key=API_KEY,
)

至此完成了环境配置。接下来进行文本提取。

步骤 3:从论文中提取文本

我们将使用 PyPDF2 从上传的 PDF 文件中提取文本。Claude 3.7 Sonnet 仅接受文本与图像作为输入。因此,我们预先提取文本,以高效处理并最大化结合思考模式的能力。

# Function to extract text from a PDF file
def extract_text_from_pdf(pdf_path):
    """Extracts text from a given PDF file."""
    text = ""
    with open(pdf_path, "rb") as f:
        reader = PyPDF2.PdfReader(f)
        for page in reader.pages:
            text += page.extract_text() + "\n"
    return text.strip()

extract_text_from_pdf() 函数读取 PDF 文件,使用 PyPDF2.PdfReader() 从每一页提取文本,并将其合并为一个字符串返回。

步骤 4:运行论文分析

有了提取的文本后,我们继续使用 Claude 3.7 Sonnet 的思考与流式模式来分析多篇论文,并生成一个结构化的研究构想。

流式模式通过逐步传递结果高效处理大体量回复,缩短等待时间并避免 API 超时。思考模式允许模型在形成最终答案前生成结构化的内部思路,从而增强复杂推理并确保结论更有依据。

# Function to analyze research papers with streaming
def analyze_papers_streaming(paper_texts, paper_count):
    """Uses Claude 3.7 Sonnet with Thinking Mode in streaming mode to analyze papers, find drawbacks, and generate a research project."""
    formatted_papers = "\n\n".join([f"### Paper {i+1}:\n{paper}" for i, paper in enumerate(paper_texts)])    
    prompt = f"""
        You are an AI research assistant. You have been provided with {paper_count} research papers. 
        Your task is to analyze these papers and perform the following:
        1. **Summarize each paper** with its core contributions and findings.
        2. **Identify key drawbacks** of each paper, focusing on limitations, gaps, or areas needing improvement.
        3. **Find interconnections and citations** between the papers—what ideas, methods, or datasets do they share?
        4. **Propose a novel research idea** that addresses a major limitation across these papers. 
            - Suggest how techniques from different papers can be combined to solve a problem.
            - Ensure the idea is practical and feasible for further research.
            - Justify why this approach is promising.
        Below are the research papers
        {formatted_papers}
    """
    results = {"thinking": "", "research_idea": ""}   
    with client.messages.stream(
        model="claude-3-7-sonnet-20250219",
        max_tokens=25000,
        thinking={
            "type": "enabled",
            "budget_tokens": 16000  # Large budget for deep reasoning
        },
        messages=[{"role": "user", "content": prompt}]
    ) as stream:
        current_block_type = None        
        for event in stream:
            if event.type == "content_block_start":
                current_block_type = event.content_block.type
            elif event.type == "content_block_delta":
                if event.delta.type == "thinking_delta":
                    results["thinking"] += event.delta.thinking
                elif event.delta.type == "text_delta":
                    results["research_idea"] += event.delta.text           
            elif event.type == "message_stop":
                break
    return results["thinking"], results["research_idea"]

analyze_papers_streaming() 函数按以下步骤执行:

  1. 格式化输入论文:接收提取后的论文文本列表及论文数量,并为提示词组织结构。
  2. 构建 Claude 3.7 Sonnet 的提示词:提示模型执行以下任务:
  • 总结每篇论文。
  • 识别关键不足。
  • 查找论文间的相互关联。
  • 结合不同论文的技术生成新的研究构想。
  1. 初始化流式 API 请求:提示词准备就绪后,接着 使用 client.messages.stream() 发送请求到 Claude 3.7 Sonnet。这里启用思考模式,设置 budget_tokens=16000,并用 max_tokens=25000 以支持更长回复。
  2. 处理流式响应:函数 遍历流式事件并识别不同的响应块。启用流式后,模型会逐步发送内容。我们会接收到 content_block_start 事件以指示响应块的开始;生成过程中,thinking_delta 事件包含中间推理步骤,而 text_delta 事件提供最终的研究洞见。直到 message_stop 事件标志响应完成。
  3. 返回分析结果:最终输出包含两部分:模型的内部推理过程与结合所给论文洞见的最终研究构想。

您可以在此处了解更多关于扩展思考的提示工程技巧。

步骤 5:构建 Gradio 界面

主逻辑完成后,我们将其集成到 Gradio,让用户上传论文并获得结构化洞见。

# Gradio UI function
def gradio_interface(pdfs):
    paper_texts = [extract_text_from_pdf(pdf.name) for pdf in pdfs]
    paper_count = len(paper_texts)  # Count number of provided papers
    thinking, research_idea = analyze_papers_streaming(paper_texts, paper_count)
    return thinking, research_idea

# Set up the Gradio app
demo = gr.Interface(
    fn=gradio_interface,
    inputs=gr.File(file_types=[".pdf"], label="Upload Research Papers", file_count="multiple"),
    outputs=[gr.Textbox(label="Thinking Process"), gr.Textbox(label="Research Idea")],
    title="Claude 3.7 Sonnet - Powered Research Paper Analyzer",
    description="Upload multiple research papers to extract insights, identify key limitations, and generate a novel research idea."
)
if __name__ == "__main__":
    demo.launch(debug=True)

以上代码搭建了一个 Gradio 界面,用户可上传多份 PDF,系统会提取文本、分析关键洞见,并使用 思考与流式模式生成新的研究构想。

演示的 Gradio 界面

结语

在本教程中,我们使用 Claude 3.7 Sonnet 构建了一个 AI 驱动的论文分析器,帮助研究者高效提取洞见、识别局限,并从多篇论文中生成新的研究构想。通过思考模式,模型能够进行深度推理,使其成为文献综述与研究综述的高效工具。


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

我是一名 Google Developers 机器学习(生成式 AI)领域的专家、Kaggle 三项专家,以及 Women Techmakers 大使,拥有 3 年以上的技术从业经验。2020 年我共同创办了一家健康科技初创公司,目前在佐治亚理工学院攻读计算机科学硕士,专攻机器学习。

主题
人工智能
大语言模型

跟着这些课程学 AI!

学习路径

开发 AI 应用程序

21 小时
学习使用最新的 AI 开发工具创建 AI 驱动的应用程序,包括 OpenAI API、Hugging Face 和 LangChain。
查看详情开始课程

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续
继续操作即表示您接受我们的《使用条款》和《隐私政策》,并同意您的数据存储在美国。
查看更多