Skip to main content

Claude 3.7 Sonnet API: A Guide With Demo Project

Learn how to use Claude 3.7 Sonnet's API by building a Gradio-based Research Paper Analyzer to extract insights from uploaded PDFs.
Feb 25, 2025  · 12 min read

Claude 3.7 Sonnet is the latest AI model by Anthropic, offering enhanced reasoning capabilities through its new Thinking Mode. It can process 200K tokens of context, making it ideal for complex research analysis.

In this tutorial, I’ll explain step-by-step how to build a Research Paper Analyzer using Claude 3.7 Sonnet, capable of: 

  • Extracting key insights and findings from research papers.
  • Identifying limitations and drawbacks of each paper.
  • Finding interconnections and shared citations between multiple papers.
  • Generating a novel research idea based on the analyzed papers.

We’ll also integrate Claude 3.7 Sonnet's Thinking Mode with Gradio to allow users to upload multiple research papers and receive structured insights.

We’ll focus on the hands-on part in this blog—if you’re only looking for an overview, I recommend this article on Claude 3.7 Sonnet.

And if you are looking for a clear demo, tune in to our Claude 3.7 Sonnet API video tutorial and build a multimodal research assistant. Our video will walk you through how to access the Anthropic API setup, extract and process PDFs using PyPDF2 document processing, use Claude 3.7's thinking mode, and build a real research assistant using Gradio.

Project Overview: Research Paper Analyzer With Claude 3.7 Sonnet

We will develop a Gradio-based Research Paper Analyzer that allows users to: 

  • Upload multiple research papers in PDF format.
  • Extract key contributions and limitations from each paper.
  • Identify connections, citations, and overlapping research ideas.
  • Generate a novel research idea using insights from multiple papers.

Optimizing costs

To optimize costs for the Claude 3.7 Sonnet API we need to align its usage with project needs, as input tokens cost $3/M and output tokens, including Thinking Mode, cost $15/M.

We need to reduce expenses by using prompt caching, batch processing, and streaming mode for long responses. We can even optimize Thinking Mode by setting a lower token budget (starting from 1,024 tokens) and only increasing it when necessary.

You can learn more about optimizing API cost via Anthropic’s official documentation.

What Is Thinking Mode in Claude 3.7 Sonnet?

Before we start, let’s shed a light on what thinking mode is, in case you’re not familiar with it. Thinking Mode is a new feature in Claude 3.7 Sonnet that enables step-by-step reasoning before generating the final answer. It allows the model to: 

  • Break down complex research problems into structured, logical steps.
  • Provide transparent insights into its internal reasoning.
  • Improve scientific accuracy by avoiding hallucinations in research analysis.

In a nutshell, this is how it works:

  • Thinking blocks generation: Claude first produces intermediate reasoning steps in a structured format, facilitating in-depth analysis and logical decomposition of the problem.
  • Iterative refinement: The model evaluates its own reasoning, integrating relevant insights while filtering out inconsistencies to ensure coherence and scientific validity.
  • Final response synthesis: The structured insights from the thinking phase are synthesized into a well-formulated output, enhancing clarity, accuracy, and contextual relevance.

Step 1: Prerequisites

Before starting, we need to set up the Anthropic API key:

1. Start by logging in to the Anthropic console: https://console.anthropic.com/

2. Click on Get API Keys.

Get API Key window

3. You’ll be redirected to the API Keys tab. Click on Create API Key and enter your key name.

Create API Key window

4. Copy this key and save it for future reference.

5. Now, add in some credit to your billing account, under the Billing tab. Simply click on buy credits and add about $5 to your account (sufficient for this project).

We now have the API Key in place. Let’s now make sure we have the required dependencies installed.

pip install anthropic gradio PyPDF2

Once installed, import the necessary libraries:

import anthropic
import PyPDF2
import os
import gradio as gr

Step 2: Setting Up Claude 3.7 Sonnet API

Now that that we have imported all required libraries, we set up the Claude API next.

If you are using Google Colab, you can save the API key in the Secrets tab and then use the get() function to access it. Otherwise, you can pass the API key directly to your code (not recommended).

We then initialize the Claude client using the Anthropic library and pass in the API key.

# 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,
)

This completes our setting up part. Next, we work on the text extraction part.

Step 3: Extracting Text from Research Papers

We’ll use PyPDF2 to extract text from uploaded PDF files. Claude 3.7 Sonnet accepts only text and images as input. So, we extract text beforehand for efficient processing while maximizing the capabilities of Claude 3.7 Sonnet with Thinking Mode.

# 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()

The extract_text_from_pdf() function reads a PDF file, extracts text from each page using PyPDF2.PdfReader(), and returns the combined text as a string. 

Step 4: Running the Research Paper Analysis

Now that we have the extracted text, we move on with using Claude 3.7 Sonnet's thinking and streaming mode to analyze multiple papers and generate a structured research idea.

Streaming mode ensures efficient handling of large responses by progressively delivering results, reducing waiting times, and preventing API timeouts. Thinking mode enhances complex reasoning by allowing the model to generate structured internal thoughts before formulating a final answer, ensuring well-justified insights. 

# 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"]

The analyze_papers_streaming() function performs the following steps: 

  1. Formats input papers: The function takes in a list of extracted research paper texts along with the number of papers and structures it for the prompt.
  2. Constructs a prompt for Claude 3.7 Sonnet: The prompt instructs the model to:
  • Summarize each paper.
  • Identify key drawbacks.
  • Find interconnections between papers.
  • Generate a novel research idea combining techniques from different papers.
  1. Initializes streaming API request: Once the prompt is set, next we use client.messages.stream() to send the request to Claude 3.7 Sonnet. This enables thinking mode with budget_tokens=16000 and max_tokens=25000 for extended response length.
  2. Processes streaming responses: The function iterates through streamed response events and identifies different response blocks. When streaming is enabled, the model sends content progressively. We receive content_block_start events to indicate the beginning of a response block. As the model generates output, thinking_delta events contain intermediate reasoning steps, while text_delta events provide the final research insights. The process continues until a message_stop event signals the completion of the response.
  3. Returns analysis results: The final outputs are two structured responses containing the model’s internal reasoning process and the final research idea combining insights from the provided papers.

You can learn more about refining prompting techniques for extended thinking here.

Step 5: Building the Gradio UI

Now that our main logic is built, we continue with integrating it into Gradio, allowing users to upload research papers and receive structured insights.

# 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)

The above code sets up a Gradio UI where users can upload multiple PDFs, which are processed to extract text, analyze key insights, and generate novel research ideas using thinking and streaming mode.

Gradio UI of demo

Conclusion

In this tutorial, we built an AI-powered Research Paper Analyzer using Claude 3.7 Sonnet, enabling researchers to efficiently extract insights, identify limitations, and generate novel research ideas from multiple papers. By using thinking mode, the model performs deep reasoning, making it an effective tool for literature reviews and research synthesis.

Develop AI Applications

Learn to build AI applications using the OpenAI API.
Start Upskilling For Free

Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

I am a Google Developers Expert in ML(Gen AI), a Kaggle 3x Expert, and a Women Techmakers Ambassador with 3+ years of experience in tech. I co-founded a health-tech startup in 2020 and am pursuing a master's in computer science at Georgia Tech, specializing in machine learning.

Topics

Learn AI with these courses!

track

Developing AI Applications

23hrs hr
Learn to create AI-powered applications with the latest AI developer tools, including the OpenAI API, Hugging Face, and LangChain.
See DetailsRight Arrow
Start Course
See MoreRight Arrow
Related
Image representing claude 3.7 sonnet

blog

Claude 3.7 Sonnet: Features, Access, Benchmarks & More

Learn about Claude 3.7 Sonnet's hybrid approach of combining reasoning mode and generalist mode, key benchmarks, and how to access it via web or API.
Alex Olteanu's photo

Alex Olteanu

8 min

blog

What Is Claude 3.5 Sonnet? How It Works, Use Cases, and Artifacts

Claude 3.5 Sonnet outperforms GPT-4o and Gemini Pro 1.5 in several benchmarks and introduces a cool new feature: Artifacts.
Alex Olteanu's photo

Alex Olteanu

8 min

tutorial

Claude Sonnet 3.5 API Tutorial: Getting Started With Anthropic's API

To connect through the Claude 3.5 Sonnet API, obtain your API key from Anthropic, install the anthropic Python library, and use it to send requests and receive responses from Claude 3.5 Sonnet.
Ryan Ong's photo

Ryan Ong

8 min

tutorial

Claude Code: A Guide With Practical Examples

Learn how to use Anthropic's Claude Code to improve software development workflows through a practical example using the Supabase Python library.
Aashi Dutt's photo

Aashi Dutt

12 min

tutorial

DeepSeek V3: A Guide With Demo Project

Learn how to build an AI-powered code reviewer assistant using DeepSeek-V3 and Gradio.
Aashi Dutt's photo

Aashi Dutt

8 min

code-along

Introduction to Claude

Aimée, a Learning Solutions Architect at DataCamp, takes you through how to use Claude. You'll get prompt engineering tips, see a data analysis workflow, and learn how to generate Python and SQL code with Claude.
Aimée Gott's photo

Aimée Gott

See MoreSee More