Loading...
    • Guia do Desenvolvedor
    • Referência da API
    • MCP
    • Recursos
    • Notas de lançamento
    Search...
    ⌘K
    Primeiros passos
    Introdução ao ClaudeInício rápido
    Modelos e preços
    Visão geral dos modelosEscolhendo um modeloNovidades no Claude 4.6Guia de migraçãoDescontinuação de modelosPreços
    Construir com Claude
    Visão geral de recursosUsando a API MessagesTratando razões de paradaMelhores práticas de prompts
    Gerenciamento de contexto
    Janelas de contextoCompactaçãoEdição de contexto
    Capacidades
    Cache de promptsPensamento estendidoPensamento adaptativoEsforçoStreaming de mensagensProcessamento em loteCitaçõesSuporte multilíngueContagem de tokensEmbeddingsVisãoSuporte a PDFAPI de ArquivosResultados de pesquisaSaídas estruturadas
    Ferramentas
    Visão geralComo implementar o uso de ferramentasStreaming de ferramentas granularFerramenta BashFerramenta de execução de códigoChamada de ferramentas programáticaFerramenta de uso de computadorFerramenta de editor de textoFerramenta de busca na webFerramenta de pesquisa na webFerramenta de memóriaFerramenta de busca de ferramentas
    Habilidades de agente
    Visão geralInício rápidoMelhores práticasHabilidades para empresasUsando habilidades com a API
    Agent SDK
    Visão geralInício rápidoSDK TypeScriptTypeScript V2 (prévia)SDK PythonGuia de migração
    MCP na API
    Conector MCPServidores MCP remotos
    Claude em plataformas de terceiros
    Amazon BedrockMicrosoft FoundryVertex AI
    Engenharia de prompts
    Visão geralGerador de promptsUsar modelos de promptsMelhorador de promptsSeja claro e diretoUse exemplos (prompting multishotshot)Deixe Claude pensar (CoT)Use tags XMLDê um papel ao Claude (prompts do sistema)Encadear prompts complexosDicas de contexto longoDicas de pensamento estendido
    Testar e avaliar
    Definir critérios de sucessoDesenvolver casos de testeUsando a ferramenta de avaliaçãoReduzindo latência
    Fortalecer proteções
    Reduzir alucinaçõesAumentar consistência de saídaMitigar jailbreaksRecusas de streamingReduzir vazamento de promptManter Claude em personagem
    Administração e monitoramento
    Visão geral da API AdminResidência de dadosEspaços de trabalhoAPI de uso e custoAPI de análise de código ClaudeRetenção zero de dados
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Ferramentas

    Como implementar o uso de ferramentas

    Guia completo para implementar o uso de ferramentas com Claude, incluindo definições de ferramentas, exemplos e o executor de ferramentas.

    Escolhendo um modelo

    Recomendamos usar o modelo Claude Opus (4.6) mais recente para ferramentas complexas e consultas ambíguas; ele lida melhor com múltiplas ferramentas e busca esclarecimentos quando necessário.

    Use modelos Claude Haiku para ferramentas diretas, mas observe que eles podem inferir parâmetros ausentes.

    Se estiver usando Claude com uso de ferramentas e pensamento estendido, consulte nosso guia aqui para mais informações.

    Especificando ferramentas do cliente

    As ferramentas do cliente (tanto definidas pela Anthropic quanto definidas pelo usuário) são especificadas no parâmetro tools de nível superior da solicitação da API. Cada definição de ferramenta inclui:

    ParâmetroDescrição
    nameO nome da ferramenta. Deve corresponder à regex ^[a-zA-Z0-9_-]{1,64}$.
    descriptionUma descrição detalhada em texto simples do que a ferramenta faz, quando deve ser usada e como se comporta.
    input_schemaUm objeto JSON Schema que define os parâmetros esperados para a ferramenta.
    input_examples(Opcional, beta) Uma matriz de objetos de entrada de exemplo para ajudar Claude a entender como usar a ferramenta. Veja Fornecendo exemplos de uso de ferramentas.

    Prompt do sistema de uso de ferramentas

    Quando você chama a API Claude com o parâmetro tools, construímos um prompt do sistema especial a partir das definições de ferramentas, configuração de ferramentas e qualquer prompt do sistema especificado pelo usuário. O prompt construído é projetado para instruir o modelo a usar a(s) ferramenta(s) especificada(s) e fornecer o contexto necessário para que a ferramenta funcione adequadamente:

    In this environment you have access to a set of tools you can use to answer the user's question.
    {{ FORMATTING INSTRUCTIONS }}
    String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions.
    Here are the functions available in JSONSchema format:
    {{ TOOL DEFINITIONS IN JSON SCHEMA }}
    {{ USER SYSTEM PROMPT }}
    {{ TOOL CONFIGURATION }}

    Melhores práticas para definições de ferramentas

    Para obter o melhor desempenho do Claude ao usar ferramentas, siga estas diretrizes:

    • Forneça descrições extremamente detalhadas. Este é de longe o fator mais importante no desempenho da ferramenta. Suas descrições devem explicar cada detalhe sobre a ferramenta, incluindo:
      • O que a ferramenta faz
      • Quando deve ser usada (e quando não deve)
      • O que cada parâmetro significa e como afeta o comportamento da ferramenta
      • Quaisquer ressalvas ou limitações importantes, como quais informações a ferramenta não retorna se o nome da ferramenta for pouco claro. Quanto mais contexto você puder dar ao Claude sobre suas ferramentas, melhor ele será em decidir quando e como usá-las. Procure por pelo menos 3-4 frases por descrição de ferramenta, mais se a ferramenta for complexa.
    • Priorize descrições, mas considere usar input_examples para ferramentas complexas. Descrições claras são mais importantes, mas para ferramentas com entradas complexas, objetos aninhados ou parâmetros sensíveis ao formato, você pode usar o campo input_examples (beta) para fornecer exemplos validados por schema. Veja Fornecendo exemplos de uso de ferramentas para detalhes.

    A boa descrição explica claramente o que a ferramenta faz, quando usá-la, quais dados ela retorna e o que o parâmetro ticker significa. A descrição ruim é muito breve e deixa Claude com muitas questões em aberto sobre o comportamento e uso da ferramenta.

    Fornecendo exemplos de uso de ferramentas

    Você pode fornecer exemplos concretos de entradas de ferramentas válidas para ajudar Claude a entender como usar suas ferramentas de forma mais eficaz. Isso é particularmente útil para ferramentas complexas com objetos aninhados, parâmetros opcionais ou entradas sensíveis ao formato.

    Exemplos de uso de ferramentas é um recurso beta. Inclua o cabeçalho beta apropriado para seu provedor:

    ProvedorCabeçalho betaModelos suportados
    Claude API,
    Microsoft Foundry
    advanced-tool-use-2025-11-20Todos os modelos
    Vertex AI,
    Amazon Bedrock
    tool-examples-2025-10-29Claude Opus 4.6, Claude Opus 4.5

    Uso básico

    Adicione um campo input_examples opcional à sua definição de ferramenta com uma matriz de objetos de entrada de exemplo. Cada exemplo deve ser válido de acordo com o input_schema da ferramenta:

    import anthropic
    
    client = anthropic.Anthropic()
    
    response = client.messages.create(
        model="claude-opus-4-6",
        max_tokens=1024,
        betas=["advanced-tool-use-2025-11-20"],
        tools=[
            {
                "name": "get_weather",
                "description": "Get the current weather in a given location",
                "input_schema": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "The city and state, e.g. San Francisco, CA"
                        },
                        "unit": {
                            "type": "string",
                            "enum": ["celsius", "fahrenheit"],
                            "description": "The unit of temperature"
                        }
                    },
                    "required": ["location"]
                },
                "input_examples": [
                    {
                        "location": "San Francisco, CA",
                        "unit": "fahrenheit"
                    },
                    {
                        "location": "Tokyo, Japan",
                        "unit": "celsius"
                    },
                    {
                        "location": "New York, NY"  # 'unit' is optional
                    }
                ]
            }
        ],
        messages=[
            {"role": "user", "content": "What's the weather like in San Francisco?"}
        ]
    )

    Os exemplos são incluídos no prompt junto com seu schema de ferramenta, mostrando ao Claude padrões concretos para chamadas de ferramentas bem formadas. Isso ajuda Claude a entender quando incluir parâmetros opcionais, quais formatos usar e como estruturar entradas complexas.

    Requisitos e limitações

    • Validação de schema - Cada exemplo deve ser válido de acordo com o input_schema da ferramenta. Exemplos inválidos retornam um erro 400
    • Não suportado para ferramentas do lado do servidor - Apenas ferramentas definidas pelo usuário podem ter exemplos de entrada
    • Custo de token - Os exemplos adicionam aos tokens de prompt: ~20-50 tokens para exemplos simples, ~100-200 tokens para objetos aninhados complexos

    Executor de ferramentas (beta)

    O executor de ferramentas fornece uma solução pronta para executar ferramentas com Claude. Em vez de lidar manualmente com chamadas de ferramentas, resultados de ferramentas e gerenciamento de conversas, o executor de ferramentas automaticamente:

    • Executa ferramentas quando Claude as chama
    • Lida com o ciclo de solicitação/resposta
    • Gerencia o estado da conversa
    • Fornece segurança de tipo e validação

    Recomendamos que você use o executor de ferramentas para a maioria das implementações de uso de ferramentas.

    O executor de ferramentas está atualmente em beta e disponível nos SDKs Python, TypeScript e Ruby.

    Gerenciamento automático de contexto com compactação

    O executor de ferramentas suporta compactação automática, que gera resumos quando o uso de tokens excede um limite. Isso permite que tarefas agentes de longa duração continuem além dos limites da janela de contexto.

    Uso básico

    Defina ferramentas usando os auxiliares do SDK e, em seguida, use o executor de ferramentas para executá-las.

    A função de ferramenta deve retornar um bloco de conteúdo ou matriz de blocos de conteúdo, incluindo texto, imagens ou blocos de documento. Isso permite que ferramentas retornem respostas ricas e multimodais. Strings retornadas serão convertidas em um bloco de conteúdo de texto. Se você quiser retornar um objeto JSON estruturado para Claude, codifique-o como uma string JSON antes de retorná-lo. Números, booleanos ou outras primitivas não-string também devem ser convertidas para strings.

    Iterando sobre o executor de ferramentas

    O executor de ferramentas é um iterável que produz mensagens do Claude. Isso é frequentemente referido como um "loop de chamada de ferramenta". A cada iteração, o executor verifica se Claude solicitou um uso de ferramenta. Se sim, ele chama a ferramenta e envia o resultado de volta para Claude automaticamente, depois produz a próxima mensagem do Claude para continuar seu loop.

    Você pode encerrar o loop em qualquer iteração com uma instrução break. O executor fará loop até que Claude retorne uma mensagem sem um uso de ferramenta.

    Se você não precisar de mensagens intermediárias, pode obter a mensagem final diretamente:

    Uso avançado

    Dentro do loop, você pode personalizar completamente a próxima solicitação do executor de ferramentas para a API de Mensagens. O executor automaticamente anexa resultados de ferramentas ao histórico de mensagens, então você não precisa gerenciá-los manualmente. Você pode opcionalmente inspecionar o resultado da ferramenta para logging ou depuração e modificar os parâmetros da solicitação antes da próxima chamada da API.

    Depurando execução de ferramentas

    Quando uma ferramenta lança uma exceção, o executor de ferramentas a captura e retorna o erro para Claude como um resultado de ferramenta com is_error: true. Por padrão, apenas a mensagem de exceção é incluída, não o rastreamento de pilha completo.

    Para visualizar rastreamentos de pilha completos e informações de depuração, defina a variável de ambiente ANTHROPIC_LOG:

    # View info-level logs including tool errors
    export ANTHROPIC_LOG=info
    
    # View debug-level logs for more verbose output
    export ANTHROPIC_LOG=debug

    Quando habilitado, o SDK registra detalhes completos de exceção (usando o módulo logging do Python, o console em TypeScript ou o logger do Ruby), incluindo o rastreamento de pilha completo quando uma ferramenta falha.

    Interceptando erros de ferramentas

    Por padrão, erros de ferramentas são passados de volta para Claude, que pode então responder apropriadamente. No entanto, você pode querer detectar erros e tratá-los diferentemente—por exemplo, para parar a execução antecipadamente ou implementar tratamento de erro personalizado.

    Use o método de resposta de ferramenta para interceptar resultados de ferramentas e verificar erros antes de serem enviados para Claude:

    Modificando resultados de ferramentas

    Você pode modificar resultados de ferramentas antes de serem enviados de volta para Claude. Isso é útil para adicionar metadados como cache_control para habilitar cache de prompt em resultados de ferramentas, ou para transformar a saída da ferramenta.

    Use o método de resposta de ferramenta para obter o resultado da ferramenta, modificá-lo e, em seguida, adicionar sua versão modificada às mensagens:

    Adicionar cache_control aos resultados de ferramentas é particularmente útil quando ferramentas retornam grandes quantidades de dados (como resultados de pesquisa de documentos) que você deseja cachear para chamadas de API subsequentes. Veja Cache de prompt para mais detalhes sobre estratégias de cache.

    Streaming

    Habilite streaming para receber eventos conforme chegam. Cada iteração produz um objeto de stream que você pode iterar para eventos.

    O executor de ferramentas do SDK está em beta. O resto deste documento cobre implementação manual de ferramentas.

    Controlando a saída do Claude

    Forçando o uso de ferramentas

    Em alguns casos, você pode querer que Claude use uma ferramenta específica para responder à pergunta do usuário, mesmo que Claude pense que pode fornecer uma resposta sem usar uma ferramenta. Você pode fazer isso especificando a ferramenta no campo tool_choice assim:

    tool_choice = {"type": "tool", "name": "get_weather"}

    Ao trabalhar com o parâmetro tool_choice, temos quatro opções possíveis:

    • auto permite que Claude decida se deve chamar qualquer uma das ferramentas fornecidas ou não. Este é o valor padrão quando tools são fornecidas.
    • any diz ao Claude que ele deve usar uma das ferramentas fornecidas, mas não força uma ferramenta particular.
    • tool permite que forcemos Claude a sempre usar uma ferramenta particular.
    • none impede que Claude use qualquer ferramenta. Este é o valor padrão quando nenhuma tools é fornecida.

    Ao usar cache de prompt, mudanças no parâmetro tool_choice invalidarão blocos de mensagens em cache. Definições de ferramentas e prompts do sistema permanecem em cache, mas o conteúdo da mensagem deve ser reprocessado.

    Este diagrama ilustra como cada opção funciona:

    Observe que quando você tem tool_choice como any ou tool, preencheremos previamente a mensagem do assistente para forçar o uso de uma ferramenta. Isso significa que os modelos não emitirão uma resposta em linguagem natural ou explicação antes dos blocos de conteúdo tool_use, mesmo que explicitamente solicitado.

    Ao usar pensamento estendido com uso de ferramentas, tool_choice: {"type": "any"} e tool_choice: {"type": "tool", "name": "..."} não são suportados e resultarão em um erro. Apenas tool_choice: {"type": "auto"} (o padrão) e tool_choice: {"type": "none"} são compatíveis com pensamento estendido.

    Nossos testes mostraram que isso não deve reduzir o desempenho. Se você gostaria que o modelo fornecesse contexto em linguagem natural ou explicações enquanto ainda solicitasse que o modelo use uma ferramenta específica, você pode usar {"type": "auto"} para tool_choice (o padrão) e adicionar instruções explícitas em uma mensagem user. Por exemplo: What's the weather like in London? Use the get_weather tool in your response.

    Chamadas de ferramentas garantidas com ferramentas estritas

    Combine tool_choice: {"type": "any"} com uso de ferramentas estritas para garantir tanto que uma de suas ferramentas será chamada QUANTO que as entradas da ferramenta seguem rigorosamente seu esquema. Defina strict: true em suas definições de ferramentas para ativar a validação de esquema.

    Saída JSON

    As ferramentas não precisam necessariamente ser funções do cliente — você pode usar ferramentas sempre que quiser que o modelo retorne saída JSON que siga um esquema fornecido. Por exemplo, você pode usar uma ferramenta record_summary com um esquema particular. Veja Uso de ferramentas com Claude para um exemplo completo funcionando.

    Respostas do modelo com ferramentas

    Ao usar ferramentas, Claude frequentemente comentará sobre o que está fazendo ou responderá naturalmente ao usuário antes de invocar ferramentas.

    Por exemplo, dado o prompt "What's the weather like in San Francisco right now, and what time is it there?", Claude pode responder com:

    JSON
    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "I'll help you check the current weather and time in San Francisco."
        },
        {
          "type": "tool_use",
          "id": "toolu_01A09q90qw90lq917835lq9",
          "name": "get_weather",
          "input": {"location": "San Francisco, CA"}
        }
      ]
    }

    Este estilo de resposta natural ajuda os usuários a entender o que Claude está fazendo e cria uma interação mais conversacional. Você pode guiar o estilo e o conteúdo dessas respostas através de seus prompts do sistema e fornecendo <examples> em seus prompts.

    É importante notar que Claude pode usar várias frases e abordagens ao explicar suas ações. Seu código deve tratar essas respostas como qualquer outro texto gerado pelo assistente, e não depender de convenções de formatação específicas.

    Uso paralelo de ferramentas

    Por padrão, Claude pode usar múltiplas ferramentas para responder a uma consulta do usuário. Você pode desabilitar esse comportamento por:

    • Definindo disable_parallel_tool_use=true quando o tipo de tool_choice é auto, o que garante que Claude use no máximo uma ferramenta
    • Definindo disable_parallel_tool_use=true quando o tipo de tool_choice é any ou tool, o que garante que Claude use exatamente uma ferramenta

    Maximizando o uso paralelo de ferramentas

    Embora os modelos Claude 4 tenham excelentes capacidades de uso paralelo de ferramentas por padrão, você pode aumentar a probabilidade de execução paralela de ferramentas em todos os modelos com prompting direcionado:

    Uso paralelo de ferramentas com Claude Sonnet 3.7

    Claude Sonnet 3.7 pode ser menos provável de fazer chamadas de ferramentas paralelas em uma resposta, mesmo quando você não definiu disable_parallel_tool_use. Recomendamos atualizar para modelos Claude 4, que têm uso de ferramentas eficiente em tokens integrado e chamadas de ferramentas paralelas melhoradas.

    Se você ainda estiver usando Claude Sonnet 3.7, você pode ativar o cabeçalho beta token-efficient-tools-2025-02-19, que ajuda a incentivar Claude a usar ferramentas paralelas. Você também pode introduzir uma "ferramenta em lote" que pode atuar como uma meta-ferramenta para envolver invocações para outras ferramentas simultaneamente.

    Veja este exemplo em nosso cookbook para como usar esta solução alternativa.

    Manipulando blocos de conteúdo de uso de ferramentas e resultado de ferramentas

    Mais simples com Tool runner: A manipulação manual de ferramentas descrita nesta seção é gerenciada automaticamente por tool runner. Use esta seção quando você precisar de controle personalizado sobre a execução de ferramentas.

    A resposta do Claude difere dependendo se ele usa uma ferramenta de cliente ou servidor.

    Manipulando resultados de ferramentas de cliente

    A resposta terá um stop_reason de tool_use e um ou mais blocos de conteúdo tool_use que incluem:

    • id: Um identificador único para este bloco de uso de ferramenta particular. Isso será usado para corresponder aos resultados da ferramenta mais tarde.
    • name: O nome da ferramenta sendo usada.
    • input: Um objeto contendo a entrada sendo passada para a ferramenta, em conformidade com o input_schema da ferramenta.

    Quando você recebe uma resposta de uso de ferramenta para uma ferramenta de cliente, você deve:

    1. Extrair o name, id e input do bloco tool_use.
    2. Executar a ferramenta real em sua base de código correspondente ao nome da ferramenta, passando a input da ferramenta.
    3. Continuar a conversa enviando uma nova mensagem com o role de user e um bloco content contendo o tipo tool_result e as seguintes informações:
      • tool_use_id: O id da solicitação de uso de ferramenta para a qual este é um resultado.
      • content: O resultado da ferramenta, como uma string (por exemplo, "content": "15 degrees"), uma lista de blocos de conteúdo aninhados (por exemplo, "content": [{"type": "text", "text": "15 degrees"}]), ou uma lista de blocos de documento (por exemplo, "content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}]). Estes blocos de conteúdo podem usar os tipos text, image ou document.
      • is_error (opcional): Defina como true se a execução da ferramenta resultou em um erro.

    Requisitos de formatação importantes:

    • Blocos de resultado de ferramenta devem seguir imediatamente seus blocos de uso de ferramenta correspondentes no histórico de mensagens. Você não pode incluir nenhuma mensagem entre a mensagem de uso de ferramenta do assistente e a mensagem de resultado de ferramenta do usuário.
    • Na mensagem do usuário contendo resultados de ferramentas, os blocos tool_result devem vir PRIMEIRO no array de conteúdo. Qualquer texto deve vir DEPOIS de todos os resultados de ferramentas.

    Por exemplo, isto causará um erro 400:

    {"role": "user", "content": [
      {"type": "text", "text": "Here are the results:"},  // ❌ Text before tool_result
      {"type": "tool_result", "tool_use_id": "toolu_01", ...}
    ]}

    Isto está correto:

    {"role": "user", "content": [
      {"type": "tool_result", "tool_use_id": "toolu_01", ...},
      {"type": "text", "text": "What should I do next?"}  // ✅ Text after tool_result
    ]}

    Se você receber um erro como "tool_use ids were found without tool_result blocks immediately after", verifique se seus resultados de ferramentas estão formatados corretamente.

    Após receber o resultado da ferramenta, Claude usará essa informação para continuar gerando uma resposta ao prompt do usuário original.

    Manipulando resultados de ferramentas de servidor

    Claude executa a ferramenta internamente e incorpora os resultados diretamente em sua resposta sem exigir interação adicional do usuário.

    Diferenças de outras APIs

    Diferentemente de APIs que separam o uso de ferramentas ou usam funções especiais como tool ou function, a API Claude integra ferramentas diretamente na estrutura de mensagens user e assistant.

    As mensagens contêm arrays de blocos text, image, tool_use e tool_result. Mensagens user incluem conteúdo do cliente e tool_result, enquanto mensagens assistant contêm conteúdo gerado por IA e tool_use.

    Manipulando o motivo de parada max_tokens

    Se a resposta do Claude for cortada devido ao limite max_tokens e a resposta truncada contiver um bloco de uso de ferramenta incompleto, você precisará tentar novamente a solicitação com um valor max_tokens mais alto para obter o uso de ferramenta completo.

    # Check if response was truncated during tool use
    if response.stop_reason == "max_tokens":
        # Check if the last content block is an incomplete tool_use
        last_block = response.content[-1]
        if last_block.type == "tool_use":
            # Send the request with higher max_tokens
            response = client.messages.create(
                model="claude-opus-4-6",
                max_tokens=4096,  # Increased limit
                messages=messages,
                tools=tools
            )

    Manipulando o motivo de parada pause_turn

    Ao usar ferramentas de servidor como busca na web, a API pode retornar um motivo de parada pause_turn, indicando que a API pausou uma volta longa.

    Aqui está como manipular o motivo de parada pause_turn:

    import anthropic
    
    client = anthropic.Anthropic()
    
    # Initial request with web search
    response = client.messages.create(
        model="claude-3-7-sonnet-latest",
        max_tokens=1024,
        messages=[
            {
                "role": "user",
                "content": "Search for comprehensive information about quantum computing breakthroughs in 2025"
            }
        ],
        tools=[{
            "type": "web_search_20250305",
            "name": "web_search",
            "max_uses": 10
        }]
    )
    
    # Check if the response has pause_turn stop reason
    if response.stop_reason == "pause_turn":
        # Continue the conversation with the paused content
        messages = [
            {"role": "user", "content": "Search for comprehensive information about quantum computing breakthroughs in 2025"},
            {"role": "assistant", "content": response.content}
        ]
    
        # Send the continuation request
        continuation = client.messages.create(
            model="claude-3-7-sonnet-latest",
            max_tokens=1024,
            messages=messages,
            tools=[{
                "type": "web_search_20250305",
                "name": "web_search",
                "max_uses": 10
            }]
        )
    
        print(continuation)
    else:
        print(response)

    Ao manipular pause_turn:

    • Continue a conversa: Passe a resposta pausada como está em uma solicitação subsequente para deixar Claude continuar sua volta
    • Modifique se necessário: Você pode opcionalmente modificar o conteúdo antes de continuar se quiser interromper ou redirecionar a conversa
    • Preserve o estado da ferramenta: Inclua as mesmas ferramentas na solicitação de continuação para manter a funcionalidade

    Resolvendo problemas de erros

    Manipulação de Erros Integrada: Tool runner fornece manipulação automática de erros para a maioria dos cenários comuns. Esta seção cobre manipulação manual de erros para casos de uso avançados.

    Existem alguns tipos diferentes de erros que podem ocorrer ao usar ferramentas com Claude:

    Was this page helpful?

    • Escolhendo um modelo
    • Especificando ferramentas do cliente
    • Prompt do sistema de uso de ferramentas
    • Melhores práticas para definições de ferramentas
    • Fornecendo exemplos de uso de ferramentas
    • Uso básico
    • Requisitos e limitações
    • Executor de ferramentas (beta)
    • Uso básico
    • Iterando sobre o executor de ferramentas
    • Uso avançado
    • Streaming
    • Controlando a saída do Claude
    • Forçando o uso de ferramentas
    • Saída JSON
    • Respostas do modelo com ferramentas
    • Uso paralelo de ferramentas
    • Manipulando blocos de conteúdo de uso de ferramentas e resultado de ferramentas
    • Manipulando resultados de ferramentas de cliente
    • Manipulando resultados de ferramentas de servidor
    • Manipulando o motivo de parada max_tokens
    • Resolvendo problemas de erros