Skip to content

ingest_knowledge_base_documents async

ingest_knowledge_base_documents(
    knowledge_base_id: Id,
    data_source_id: Id,
    documents: KnowledgeBaseDocuments,
    *,
    config_overrides: Optional[AsyncBedrockAgentClientConfig] = None,
    client_token: Optional[ClientToken] = None,
) -> IngestKnowledgeBaseDocumentsResponse

Ingests documents directly into the knowledge base that is connected to the data source. The dataSourceType specified in the content for each document must match the type of the data source that you specify in the header. For more information, see Ingest changes directly into a knowledge base in the Amazon Bedrock User Guide.

Parameters:

  • knowledge_base_id (Id) –

    The unique identifier of the knowledge base to ingest the documents into.

  • data_source_id (Id) –

    The unique identifier of the data source connected to the knowledge base that you're adding documents to.

  • client_token (Optional[ClientToken], default: None ) –

    A unique, case-sensitive identifier to ensure that the API request completes no more than one time. If this token matches a previous request, Amazon Bedrock ignores the request, but does not return an error. For more information, see Ensuring idempotency.

  • documents (KnowledgeBaseDocuments) –

    A list of objects, each of which contains information about the documents to add.

Raises:

Source code in docs_src/capo_bedrock_agent/_services/async_bedrock_agent.py
async def ingest_knowledge_base_documents(
    self,
    knowledge_base_id: "capo_bedrock_agent.types.id.Id",
    data_source_id: "capo_bedrock_agent.types.id.Id",
    documents: "capo_bedrock_agent.types.knowledge_base_documents.KnowledgeBaseDocuments",
    *,
    config_overrides: Optional[AsyncBedrockAgentClientConfig] = None,
    client_token: Optional[
        "capo_bedrock_agent.types.client_token.ClientToken"
    ] = None,
) -> "capo_bedrock_agent.types.ingest_knowledge_base_documents_response.IngestKnowledgeBaseDocumentsResponse":
    """<p>Ingests documents directly into the knowledge base that is connected to the data source. The <code>dataSourceType</code> specified in the content for each document must match the type of the data source that you specify in the header. For more information, see <a href="https://docs.aws.amazon.com/bedrock/latest/userguide/kb-direct-ingestion.html">Ingest changes directly into a knowledge base</a> in the Amazon Bedrock User Guide.</p>

    Args:
        knowledge_base_id: <p>The unique identifier of the knowledge base to ingest the documents into.</p>
        data_source_id: <p>The unique identifier of the data source connected to the knowledge base that you're adding documents to.</p>
        client_token: <p>A unique, case-sensitive identifier to ensure that the API request completes no more than one time. If this token matches a previous request, Amazon Bedrock ignores the request, but does not return an error. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a>.</p>
        documents: <p>A list of objects, each of which contains information about the documents to add.</p>

    Raises:
        capo_bedrock_agent.errors.access_denied_exception.AccessDeniedException: <p>The request is denied because of missing access permissions.</p>
        capo_bedrock_agent.errors.internal_server_exception.InternalServerException: <p>An internal server error occurred. Retry your request.</p>
        capo_bedrock_agent.errors.resource_not_found_exception.ResourceNotFoundException: <p>The specified resource Amazon Resource Name (ARN) was not found. Check the Amazon Resource Name (ARN) and try your request again.</p>
        capo_bedrock_agent.errors.service_quota_exceeded_exception.ServiceQuotaExceededException: <p>The number of requests exceeds the service quota. Resubmit your request later.</p>
        capo_bedrock_agent.errors.throttling_exception.ThrottlingException: <p>The number of requests exceeds the limit. Resubmit your request later.</p>
        capo_bedrock_agent.errors.validation_exception.ValidationException: <p>Input validation failed. Check your request parameters and retry the request.</p>
        capo_bedrock_agent.errors.UnknownServiceError: The service returned an error code this client does not model.
    """

    async def _handler(
        req: "AsyncOperationRequest[capo_bedrock_agent.types.ingest_knowledge_base_documents_request.IngestKnowledgeBaseDocumentsRequest]",
    ) -> AsyncOperationResponse[
        "capo_bedrock_agent.types.ingest_knowledge_base_documents_response.IngestKnowledgeBaseDocumentsResponse"
    ]:
        import capo_bedrock_agent._operations.amazon_bedrock_agent_build_time_lambda.ingest_knowledge_base_documents

        (
            output,
            http_response,
        ) = await capo_bedrock_agent._operations.amazon_bedrock_agent_build_time_lambda.ingest_knowledge_base_documents.async_ingest_knowledge_base_documents(
            req.options, req.input
        )
        return AsyncOperationResponse(output=output, response=http_response)

    def _redact_input(
        input_: "capo_bedrock_agent.types.ingest_knowledge_base_documents_request.IngestKnowledgeBaseDocumentsRequest",
    ) -> dict[str, Any]:
        import capo_bedrock_agent.types.ingest_knowledge_base_documents_request

        return capo_bedrock_agent.types.ingest_knowledge_base_documents_request.redact_sensitive(
            input_
        )

    interceptors_, options_ = self.operation_options(
        config_overrides,
        OperationLogging(
            "IngestKnowledgeBaseDocuments", redact_input=_redact_input
        ),
    )
    input_: capo_bedrock_agent.types.ingest_knowledge_base_documents_request.IngestKnowledgeBaseDocumentsRequest = {
        "knowledge_base_id": knowledge_base_id,
        "data_source_id": data_source_id,
        "documents": documents,
    }
    if client_token is None:
        client_token = str(uuid.uuid4())
    input_["client_token"] = client_token

    response = await aexecute_pipeline(
        AsyncOperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    await response.response.aclose()
    return response.output