Creación de conectores de ML en OpenSearch Service - Amazon OpenSearch Service

Creación de conectores de ML en OpenSearch Service

Las plantillas de Flow Framework de Amazon OpenSearch Service le permiten configurar e instalar conectores de ML mediante la API de creación de conectores que se ofrece en ml-commons. Puede usar conectores de ML para conectar OpenSearch Service a otros servicios de AWS o plataformas de terceros. Para obtener más información al respecto, consulte Creating connectors for third-party ML platforms. La API de Flow Framework de Amazon OpenSearch Service le permite automatizar las tareas de configuración y preprocesamiento de OpenSearch Service y se puede utilizar para crear conectores de ML.

Antes de poder crear un conector en OpenSearch Service, debe hacer lo siguiente:

  • Cree un dominio de Amazon SageMaker AI.

  • Crear un rol de IAM.

  • Configure el permiso para transferir roles.

  • Asigne los roles de flow-framework y ml-commons en los paneles de OpenSearch.

Para obtener más información sobre cómo configurar conectores de ML para servicios de AWS, consulte Amazon OpenSearch Service ML connectors for AWS services. Para obtener más información sobre el uso de los conectores de ML de OpenSearch Service con plataformas de terceros, consulte Amazon OpenSearch Service ML connectors for third-party platforms.

Creación de un conector mediante un servicio flow-framework

Para crear una plantilla de flow-framework con un conector, tendrá que enviar una solicitud POST al punto de conexión de su dominio de OpenSearch Service. Puede usar cURL, un cliente Python de muestra, Postman u otro método para enviar una solicitud firmada. La solicitud POST tiene el siguiente formato:

POST /_plugins/_flow_framework/workflow { "name": "Deploy Claude Model", "description": "Deploy a model using a connector to Claude", "use_case": "PROVISION", "version": { "template": "1.0.0", "compatibility": [ "2.12.0", "3.0.0" ] }, "workflows": { "provision": { "nodes": [ { "id": "create_claude_connector", "type": "create_connector", "user_inputs": { "name": "Claude Instant Runtime Connector", "version": "1", "protocol": "aws_sigv4", "description": "The connector to Bedrock service for Claude model", "actions": [ { "headers": { "x-amz-content-sha256": "required", "content-type": "application/json" }, "method": "POST", "request_body": "{ \"prompt\":\"${parameters.prompt}\", \"max_tokens_to_sample\":${parameters.max_tokens_to_sample}, \"temperature\":${parameters.temperature}, \"anthropic_version\":\"${parameters.anthropic_version}\" }", "action_type": "predict", "url": "https://bedrock-runtime.us-west-2.amazonaws.com/model/anthropic.claude-instant-v1/invoke" } ], "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "parameters": { "endpoint": "bedrock-runtime.us-west-2.amazonaws.com", "content_type": "application/json", "auth": "Sig_V4", "max_tokens_to_sample": "8000", "service_name": "bedrock", "temperature": "0.0001", "response_filter": "$.completion", "region": "us-west-2", "anthropic_version": "bedrock-2023-05-31" } } } ] } } }

Si el dominio reside en una nube privada virtual (Amazon VPC), debe haberse conectado a la Amazon VPC para que la solicitud cree correctamente el conector de IA. El acceso a una Amazon VPC depende de la configuración de red, pero generalmente implica conectarse a una VPN o una red corporativa. Para comprobar que tiene acceso al dominio de OpenSearch Service, diríjase a https://your-vpc-domain.region.es.amazonaws.com en un navegador web y compruebe que recibe la respuesta JSON predeterminada. Reemplace el texto de marcador con sus propios valores.

Cliente Python de muestra

El cliente de Python es más simple de automatizar que una solicitud HTTP y tiene una mejor reutilización. Para crear el conector de IA con el cliente Python, guarde el siguiente código de ejemplo en un archivo Python. El cliente requiere los paquetes AWS SDK para Python (Boto3), Requests:HTTP for Humans y requests-aws4auth 1.2.3.

import boto3 import requests from requests_aws4auth import AWS4Auth host = 'domain-endpoint/' region = 'region' service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) path = '_plugins/_flow_framework/workflow' url = host + path payload = { "name": "Deploy Claude Model", "description": "Deploy a model using a connector to Claude", "use_case": "PROVISION", "version": { "template": "1.0.0", "compatibility": [ "2.12.0", "3.0.0" ] }, "workflows": { "provision": { "nodes": [ { "id": "create_claude_connector", "type": "create_connector", "user_inputs": { "name": "Claude Instant Runtime Connector", "version": "1", "protocol": "aws_sigv4", "description": "The connector to Bedrock service for Claude model", "actions": [ { "headers": { "x-amz-content-sha256": "required", "content-type": "application/json" }, "method": "POST", "request_body": "{ \"prompt\":\"${parameters.prompt}\", \"max_tokens_to_sample\":${parameters.max_tokens_to_sample}, \"temperature\":${parameters.temperature}, \"anthropic_version\":\"${parameters.anthropic_version}\" }", "action_type": "predict", "url": "https://bedrock-runtime.us-west-2.amazonaws.com/model/anthropic.claude-instant-v1/invoke" } ], "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "parameters": { "endpoint": "bedrock-runtime.us-west-2.amazonaws.com", "content_type": "application/json", "auth": "Sig_V4", "max_tokens_to_sample": "8000", "service_name": "bedrock", "temperature": "0.0001", "response_filter": "$.completion", "region": "us-west-2", "anthropic_version": "bedrock-2023-05-31" } } } ] } } } headers = {"Content-Type": "application/json"} r = requests.post(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text)

Plantillas de flujo de trabajo predefinidas

Amazon OpenSearch Service proporciona varias plantillas de flujo de trabajo para algunos casos de uso de machine learning (ML) comunes. El uso de una plantilla simplifica las configuraciones complejas y proporciona muchos valores predeterminados para casos de uso como la búsqueda semántica o conversacional. Puede especificar una plantilla de flujo de trabajo al llamar a la API Create Workflow.

  • Para usar una plantilla de flujo de trabajo proporcionada por OpenSearch Service, especifique el caso de uso de la plantilla como parámetro de consulta use_case.

  • Para usar una plantilla de flujo de trabajo personalizada, proporcione la plantilla completa en el cuerpo de la solicitud. Para ver un ejemplo de plantilla personalizada, consulte un ejemplo de plantilla JSON o un ejemplo de plantilla YAML.

Casos de uso de plantillas

Esta tabla proporciona información general de las diferentes plantillas disponibles, una descripción de las plantillas y los parámetros necesarios.

Caso de uso de plantillas Descripción Parámetros requeridos

bedrock_titan_embedding_model_deploy

Crea e implementa un modelo de incrustación de Amazon Bedrock (de forma predeterminada, titan-embed-text-v1)

create_connector.credential.roleArn

bedrock_titan_embedding_model_deploy

Crea e implementa un modelo de incrustación multimodal de Amazon Bedrock (de forma predeterminada, titan-embed-text-v1)

create_connector.credential.roleArn

cohere_embedding_model_deploy

Crea e implementa un modelo de incrustación de Cohere (de forma predeterminada, embed-english-v3.0).

create_connector.credential.roleArn, create_connector.credential.secretArn

cohere_chat_model_deploy

Crea e implementa un modelo de chat de Cohere (de forma predeterminada, Cohere Command).

create_connector.credential.roleArn, create_connector.credential.secretArn

open_ai_embedding_model_deploy

Crea e implementa un modelo de incrustación de OpenAI (de forma predeterminada, text-embedding-ada-002).

create_connector.credential.roleArn, create_connector.credential.secretArn

openai_chat_model_deploy

Crea e implementa un modelo de chat de OpenAI (por defecto, gpt-3.5-turbo).

create_connector.credential.roleArn, create_connector.credential.secretArn

semantic_search_with_cohere_embedding

Configura la búsqueda semántica e implementa un modelo de incrustación de Cohere. Debe proporcionar la clave de API para el modelo de Cohere.

create_connector.credential.roleArn, create_connector.credential.secretArn

semantic_search_with_cohere_embedding_query_enricher

Configura la búsqueda semántica e implementa un modelo de incrustación de Cohere. Agrega un procesador de búsqueda query_enricher que establece un ID de modelo predeterminado para las consultas neuronales. Debe proporcionar la clave de API para el modelo de Cohere.

create_connector.credential.roleArn, create_connector.credential.secretArn

multimodal_search_with_bedrock_titan

Implementa un modelo multimodal de Amazon Bedrock y configura una canalización de ingesta con un procesador text_image_embedding y un índice k-NN para la búsqueda multimodal. Debe proporcionar sus credenciales de AWS.

create_connector.credential.roleArn

nota

Para todas las plantillas que requieren un ARN de secreto, la opción predeterminada es almacenar el secreto con el nombre de clave “key” en AWS Secrets Manager.

Plantillas predeterminadas con modelos entrenados previamente

Amazon OpenSearch Service ofrece dos plantillas de flujo de trabajo predeterminadas adicionales que no están disponibles en OpenSearch Service de código abierto.

Caso de uso de plantillas Descripción

semantic_search_with_local_model

Configura la búsqueda semántica e implementa un modelo entrenado previamente (msmarco-distilbert-base-tas-b). Agrega un procesador de búsqueda neural_query_enricher que establece un ID de modelo predeterminado para las consultas neuronales y crea un índice k-NN vinculado denominado “my-nlp-index”.

hybrid_search_with_local_model

Configura la búsqueda híbrida e implementa un modelo entrenado previamente (msmarco-distilbert-base-tas-b). Agrega un procesador de búsqueda neural_query_enricher que establece un ID de modelo predeterminado para las consultas neuronales y crea un índice k-NN vinculado denominado “my-nlp-index”.