Loading...
    • Руководство разработчика
    • Справочник API
    • MCP
    • Ресурсы
    • Примечания к выпуску
    Search...
    ⌘K
    Первые шаги
    Введение в ClaudeБыстрый старт
    Модели и цены
    Обзор моделейВыбор моделиЧто нового в Claude 4.5Миграция на Claude 4.5Устаревшие моделиЦены
    Разработка с Claude
    Обзор функцийИспользование Messages APIКонтекстные окнаЛучшие практики промптинга
    Возможности
    Кэширование промптовРедактирование контекстаРасширенное мышлениеУсилиеПотоковая передача сообщенийПакетная обработкаЦитированияМногоязычная поддержкаПодсчет токеновEmbeddingsЗрениеПоддержка PDFFiles APIРезультаты поискаСтруктурированные выходные данные
    Инструменты
    ОбзорКак реализовать использование инструментовЭффективное использование инструментов по токенамПотоковая передача инструментов с детализациейИнструмент BashИнструмент выполнения кодаПрограммное вызывание инструментовИнструмент компьютерного управленияИнструмент текстового редактораИнструмент веб-выборкиИнструмент веб-поискаИнструмент памятиИнструмент поиска инструментов
    Навыки агента
    ОбзорБыстрый стартЛучшие практикиИспользование навыков с API
    Agent SDK
    ОбзорTypeScript SDKPython SDKРуководство по миграции
    MCP в API
    MCP коннекторУдаленные MCP серверы
    Claude на платформах третьих сторон
    Amazon BedrockMicrosoft FoundryVertex AI
    Инженерия промптов
    ОбзорГенератор промптовИспользование шаблонов промптовУлучшитель промптовБудьте ясны и прямолинейныИспользуйте примеры (многошаговый промптинг)Дайте Claude подумать (CoT)Используйте XML тегиДайте Claude роль (системные промпты)Предзаполните ответ ClaudeЦепочка сложных промптовСоветы по длинному контекстуСоветы по расширенному мышлению
    Тестирование и оценка
    Определение критериев успехаРазработка тестовых случаевИспользование инструмента оценкиСнижение задержки
    Усиление защиты
    Снижение галлюцинацийУвеличение согласованности выходных данныхСмягчение взломовПотоковые отказыСнижение утечки промптовДержите Claude в образе
    Администрирование и мониторинг
    Обзор Admin APIAPI использования и затратClaude Code Analytics API
    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
    Возможности

    Результаты поиска

    Включите естественные цитирования для приложений RAG, предоставляя результаты поиска с указанием источника

    Блоки содержимого результатов поиска обеспечивают естественные цитирования с надлежащим указанием источника, привнося цитирования качества веб-поиска в ваши пользовательские приложения. Эта функция особенно мощна для приложений RAG (Retrieval-Augmented Generation), где вам нужно, чтобы Claude точно цитировал источники.

    Функция результатов поиска доступна на следующих моделях:

    • Claude Opus 4.5 (claude-opus-4-5-20251101)
    • Claude Opus 4.1 (claude-opus-4-1-20250805)
    • Claude Opus 4 (claude-opus-4-20250514)
    • Claude Sonnet 4.5 (claude-sonnet-4-5-20250929)
    • Claude Sonnet 4 (claude-sonnet-4-20250514)
    • Claude Sonnet 3.7 (устарела) (claude-3-7-sonnet-20250219)
    • Claude 3.5 Haiku (claude-3-5-haiku-20241022)

    Ключевые преимущества

    • Естественные цитирования - Достигните того же качества цитирования, что и веб-поиск, для любого содержимого
    • Гибкая интеграция - Используйте в возвращаемых значениях инструментов для динамического RAG или как содержимое верхнего уровня для предварительно загруженных данных
    • Надлежащее указание источника - Каждый результат включает информацию об источнике и названии для четкого указания источника
    • Не требуются обходные пути на основе документов - Исключает необходимость в обходных путях на основе документов
    • Согласованный формат цитирования - Соответствует качеству и формату цитирования функции веб-поиска Claude

    Как это работает

    Результаты поиска можно предоставить двумя способами:

    1. Из вызовов инструментов - Ваши пользовательские инструменты возвращают результаты поиска, обеспечивая динамические приложения RAG
    2. Как содержимое верхнего уровня - Вы предоставляете результаты поиска непосредственно в сообщениях пользователя для предварительно загруженного или кэшированного содержимого

    В обоих случаях Claude может автоматически цитировать информацию из результатов поиска с надлежащим указанием источника.

    Схема результата поиска

    Результаты поиска используют следующую структуру:

    {
      "type": "search_result",
      "source": "https://example.com/article",  // Обязательно: URL источника или идентификатор
      "title": "Article Title",                  // Обязательно: Название результата
      "content": [                               // Обязательно: Массив текстовых блоков
        {
          "type": "text",
          "text": "The actual content of the search result..."
        }
      ],
      "citations": {                             // Необязательно: Конфигурация цитирования
        "enabled": true                          // Включить/отключить цитирования для этого результата
      }
    }

    Обязательные поля

    ПолеТипОписание
    typestringДолжно быть "search_result"
    sourcestringURL источника или идентификатор содержимого
    titlestringОписательное название для результата поиска
    contentarrayМассив текстовых блоков, содержащих фактическое содержимое

    Необязательные поля

    ПолеТипОписание
    citationsobjectКонфигурация цитирования с логическим полем enabled
    cache_controlobjectПараметры управления кэшем (например, {"type": "ephemeral"})

    Каждый элемент в массиве content должен быть текстовым блоком с:

    • type: Должно быть "text"
    • text: Фактическое текстовое содержимое (непустая строка)

    Метод 1: Результаты поиска из вызовов инструментов

    Наиболее мощный вариант использования - возврат результатов поиска из ваших пользовательских инструментов. Это обеспечивает динамические приложения RAG, где инструменты получают и возвращают релевантное содержимое с автоматическими цитированиями.

    Пример: Инструмент базы знаний

    from anthropic import Anthropic
    from anthropic.types import (
        MessageParam,
        TextBlockParam,
        SearchResultBlockParam,
        ToolResultBlockParam
    )
    
    client = Anthropic()
    
    # Определите инструмент поиска базы знаний
    knowledge_base_tool = {
        "name": "search_knowledge_base",
        "description": "Search the company knowledge base for information",
        "input_schema": {
            "type": "object",
            "properties": {
                "query": {
                    "type": "string",
                    "description": "The search query"
                }
            },
            "required": ["query"]
        }
    }
    
    # Функция для обработки вызова инструмента
    def search_knowledge_base(query):
        # Ваша логика поиска здесь
        # Возвращает результаты поиска в правильном формате
        return [
            SearchResultBlockParam(
                type="search_result",
                source="https://docs.company.com/product-guide",
                title="Product Configuration Guide",
                content=[
                    TextBlockParam(
                        type="text",
                        text="To configure the product, navigate to Settings > Configuration. The default timeout is 30 seconds, but can be adjusted between 10-120 seconds based on your needs."
                    )
                ],
                citations={"enabled": True}
            ),
            SearchResultBlockParam(
                type="search_result",
                source="https://docs.company.com/troubleshooting",
                title="Troubleshooting Guide",
                content=[
                    TextBlockParam(
                        type="text",
                        text="If you encounter timeout errors, first check the configuration settings. Common causes include network latency and incorrect timeout values."
                    )
                ],
                citations={"enabled": True}
            )
        ]
    
    # Создайте сообщение с инструментом
    response = client.messages.create(
        model="claude-sonnet-4-5",  # Работает со всеми поддерживаемыми моделями
        max_tokens=1024,
        tools=[knowledge_base_tool],
        messages=[
            MessageParam(
                role="user",
                content="How do I configure the timeout settings?"
            )
        ]
    )
    
    # Когда Claude вызывает инструмент, предоставьте результаты поиска
    if response.content[0].type == "tool_use":
        tool_result = search_knowledge_base(response.content[0].input["query"])
        
        # Отправьте результат инструмента обратно
        final_response = client.messages.create(
            model="claude-sonnet-4-5",  # Работает со всеми поддерживаемыми моделями
            max_tokens=1024,
            messages=[
                MessageParam(role="user", content="How do I configure the timeout settings?"),
                MessageParam(role="assistant", content=response.content),
                MessageParam(
                    role="user",
                    content=[
                        ToolResultBlockParam(
                            type="tool_result",
                            tool_use_id=response.content[0].id,
                            content=tool_result  # Результаты поиска идут сюда
                        )
                    ]
                )
            ]
        )

    Метод 2: Результаты поиска как содержимое верхнего уровня

    Вы также можете предоставить результаты поиска непосредственно в сообщениях пользователя. Это полезно для:

    • Предварительно загруженного содержимого из вашей инфраструктуры поиска
    • Кэшированных результатов поиска из предыдущих запросов
    • Содержимого из внешних служб поиска
    • Тестирования и разработки

    Пример: Прямые результаты поиска

    from anthropic import Anthropic
    from anthropic.types import (
        MessageParam,
        TextBlockParam,
        SearchResultBlockParam
    )
    
    client = Anthropic()
    
    # Предоставьте результаты поиска непосредственно в сообщение пользователя
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        messages=[
            MessageParam(
                role="user",
                content=[
                    SearchResultBlockParam(
                        type="search_result",
                        source="https://docs.company.com/api-reference",
                        title="API Reference - Authentication",
                        content=[
                            TextBlockParam(
                                type="text",
                                text="All API requests must include an API key in the Authorization header. Keys can be generated from the dashboard. Rate limits: 1000 requests per hour for standard tier, 10000 for premium."
                            )
                        ],
                        citations={"enabled": True}
                    ),
                    SearchResultBlockParam(
                        type="search_result",
                        source="https://docs.company.com/quickstart",
                        title="Getting Started Guide",
                        content=[
                            TextBlockParam(
                                type="text",
                                text="To get started: 1) Sign up for an account, 2) Generate an API key from the dashboard, 3) Install our SDK using pip install company-sdk, 4) Initialize the client with your API key."
                            )
                        ],
                        citations={"enabled": True}
                    ),
                    TextBlockParam(
                        type="text",
                        text="Based on these search results, how do I authenticate API requests and what are the rate limits?"
                    )
                ]
            )
        ]
    )
    
    print(response.model_dump_json(indent=2))

    Ответ Claude с цитированиями

    Независимо от того, как предоставляются результаты поиска, Claude автоматически включает цитирования при использовании информации из них:

    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "To authenticate API requests, you need to include an API key in the Authorization header",
          "citations": [
            {
              "type": "search_result_location",
              "source": "https://docs.company.com/api-reference",
              "title": "API Reference - Authentication",
              "cited_text": "All API requests must include an API key in the Authorization header",
              "search_result_index": 0,
              "start_block_index": 0,
              "end_block_index": 0
            }
          ]
        },
        {
          "type": "text",
          "text": ". You can generate API keys from your dashboard",
          "citations": [
            {
              "type": "search_result_location",
              "source": "https://docs.company.com/api-reference",
              "title": "API Reference - Authentication",
              "cited_text": "Keys can be generated from the dashboard",
              "search_result_index": 0,
              "start_block_index": 0,
              "end_block_index": 0
            }
          ]
        },
        {
          "type": "text",
          "text": ". The rate limits are 1,000 requests per hour for the standard tier and 10,000 requests per hour for the premium tier.",
          "citations": [
            {
              "type": "search_result_location",
              "source": "https://docs.company.com/api-reference",
              "title": "API Reference - Authentication",
              "cited_text": "Rate limits: 1000 requests per hour for standard tier, 10000 for premium",
              "search_result_index": 0,
              "start_block_index": 0,
              "end_block_index": 0
            }
          ]
        }
      ]
    }

    Поля цитирования

    Каждое цитирование включает:

    ПолеТипОписание
    typestringВсегда "search_result_location" для цитирований результатов поиска
    sourcestringИсточник из исходного результата поиска
    titlestring или nullНазвание из исходного результата поиска
    cited_textstringТочный цитируемый текст
    search_result_indexintegerИндекс результата поиска (начиная с 0)
    start_block_indexintegerНачальная позиция в массиве содержимого
    end_block_indexintegerКонечная позиция в массиве содержимого

    Примечание: search_result_index относится к индексу блока содержимого результата поиска (начиная с 0), независимо от того, как были предоставлены результаты поиска (вызов инструмента или содержимое верхнего уровня).

    Несколько блоков содержимого

    Результаты поиска могут содержать несколько текстовых блоков в массиве content:

    {
      "type": "search_result",
      "source": "https://docs.company.com/api-guide",
      "title": "API Documentation",
      "content": [
        {
          "type": "text",
          "text": "Authentication: All API requests require an API key."
        },
        {
          "type": "text",
          "text": "Rate Limits: The API allows 1000 requests per hour per key."
        },
        {
          "type": "text",
          "text": "Error Handling: The API returns standard HTTP status codes."
        }
      ]
    }

    Claude может цитировать определенные блоки, используя поля start_block_index и end_block_index.

    Продвинутое использование

    Комбинирование обоих методов

    Вы можете использовать результаты поиска на основе инструментов и верхнего уровня в одном разговоре:

    # Первое сообщение с результатами поиска верхнего уровня
    messages = [
        MessageParam(
            role="user",
            content=[
                SearchResultBlockParam(
                    type="search_result",
                    source="https://docs.company.com/overview",
                    title="Product Overview",
                    content=[
                        TextBlockParam(type="text", text="Our product helps teams collaborate...")
                    ],
                    citations={"enabled": True}
                ),
                TextBlockParam(
                    type="text",
                    text="Tell me about this product and search for pricing information"
                )
            ]
        )
    ]
    
    # Claude может ответить и вызвать инструмент для поиска информации о ценах
    # Затем вы предоставляете результаты инструмента с дополнительными результатами поиска

    Комбинирование с другими типами содержимого

    Оба метода поддерживают смешивание результатов поиска с другим содержимым:

    # В результатах инструмента
    tool_result = [
        SearchResultBlockParam(
            type="search_result",
            source="https://docs.company.com/guide",
            title="User Guide",
            content=[TextBlockParam(type="text", text="Configuration details...")],
            citations={"enabled": True}
        ),
        TextBlockParam(
            type="text",
            text="Additional context: This applies to version 2.0 and later."
        )
    ]
    
    # В содержимом верхнего уровня
    user_content = [
        SearchResultBlockParam(
            type="search_result",
            source="https://research.com/paper",
            title="Research Paper",
            content=[TextBlockParam(type="text", text="Key findings...")],
            citations={"enabled": True}
        ),
        {
            "type": "image",
            "source": {"type": "url", "url": "https://example.com/chart.png"}
        },
        TextBlockParam(
            type="text",
            text="How does the chart relate to the research findings?"
        )
    ]

    Управление кэшем

    Добавьте управление кэшем для лучшей производительности:

    {
      "type": "search_result",
      "source": "https://docs.company.com/guide",
      "title": "User Guide",
      "content": [{"type": "text", "text": "..."}],
      "cache_control": {
        "type": "ephemeral"
      }
    }

    Управление цитированиями

    По умолчанию цитирования отключены для результатов поиска. Вы можете включить цитирования, явно установив конфигурацию citations:

    {
      "type": "search_result",
      "source": "https://docs.company.com/guide",
      "title": "User Guide",
      "content": [{"type": "text", "text": "Important documentation..."}],
      "citations": {
        "enabled": true  // Включить цитирования для этого результата
      }
    }

    Когда citations.enabled установлено на true, Claude будет включать ссылки на цитирования при использовании информации из результата поиска. Это обеспечивает:

    • Естественные цитирования для ваших пользовательских приложений RAG
    • Указание источника при взаимодействии с собственными базами знаний
    • Цитирования качества веб-поиска для любого пользовательского инструмента, возвращающего результаты поиска

    Если поле citations опущено, цитирования отключены по умолчанию.

    Цитирования - это все или ничего: либо все результаты поиска в запросе должны иметь включенные цитирования, либо все должны иметь их отключенными. Смешивание результатов поиска с разными параметрами цитирования приведет к ошибке. Если вам нужно отключить цитирования для некоторых источников, вы должны отключить их для всех результатов поиска в этом запросе.

    Лучшие практики

    Для поиска на основе инструментов (Метод 1)

    • Динамическое содержимое: Используйте для поиска в реальном времени и динамических приложений RAG
    • Обработка ошибок: Возвращайте соответствующие сообщения при сбое поиска
    • Ограничения результатов: Возвращайте только наиболее релевантные результаты, чтобы избежать переполнения контекста

    Для поиска верхнего уровня (Метод 2)

    • Предварительно загруженное содержимое: Используйте, когда у вас уже есть результаты поиска
    • Пакетная обработка: Идеально подходит для обработки нескольких результатов поиска одновременно
    • Тестирование: Отлично подходит для тестирования поведения цитирования с известным содержимым

    Общие лучшие практики

    1. Эффективно структурируйте результаты

      • Используйте четкие, постоянные URL-адреса источников
      • Предоставляйте описательные названия
      • Разбивайте длинное содержимое на логические текстовые блоки
    2. Поддерживайте согласованность

      • Используйте согласованные форматы источников в вашем приложении
      • Убедитесь, что названия точно отражают содержимое
      • Сохраняйте согласованное форматирование
    3. Обработайте ошибки корректно

      def search_with_fallback(query):
          try:
              results = perform_search(query)
              if not results:
                  return {"type": "text", "text": "No results found."}
              return format_as_search_results(results)
          except Exception as e:
              return {"type": "text", "text": f"Search error: {str(e)}"}

    Ограничения

    • Блоки содержимого результатов поиска доступны на Claude API и Google Cloud's Vertex AI
    • Внутри результатов поиска поддерживается только текстовое содержимое (без изображений или других медиа)
    • Массив content должен содержать по крайней мере один текстовый блок
    • Ключевые преимущества
    • Как это работает
    • Схема результата поиска
    • Обязательные поля
    • Необязательные поля
    • Метод 1: Результаты поиска из вызовов инструментов
    • Пример: Инструмент базы знаний
    • Метод 2: Результаты поиска как содержимое верхнего уровня
    • Пример: Прямые результаты поиска
    • Ответ Claude с цитированиями
    • Поля цитирования
    • Несколько блоков содержимого
    • Продвинутое использование
    • Комбинирование обоих методов
    • Комбинирование с другими типами содержимого
    • Управление кэшем
    • Управление цитированиями
    • Лучшие практики
    • Для поиска на основе инструментов (Метод 1)
    • Для поиска верхнего уровня (Метод 2)
    • Общие лучшие практики
    • Ограничения