Guide de démarrage rapide : Interroger l'API

Prérequis

  1. Suivez toutes les étapes requises dans le guide de démarrage rapide Avant de commencer.
  2. Déployez l'API.

Présentation

Quelle que soit votre méthode d'installation, vous pouvez interroger l'API en utilisant les mêmes méthodes. La procédure à suivre pour interroger l'API varie selon que vous avez configuré ou non un point de terminaison public. Si votre point de terminaison n'est pas public, vous devez déterminer comment exposer vous-même l'API. Plusieurs options permettent d'effectuer cette opération, y compris la création d'un objet Ingress si votre cluster le permet, la publication du service créé, l'exécution d'Istio, etc.

Les étapes décrites ci-dessous vous expliquent comment interroger un point de terminaison. Il existe deux méthodes :

  1. Interroger le point de terminaison depuis votre cluster (aucune adresse IP publique requise)
  2. Interroger une adresse IP publique

Interroger le nom DNS interne (aucune adresse IP publique requise)

Cet exemple exécute une requête depuis le cluster en utilisant le nom DNS (Domain Name Service) attribué au service : $NAME.$NAMESPACE, par exemple speech.speech.. Vous pouvez définir les variables d'environnement ou les remplacer par la valeur réelle des commandes.

  1. Créez une tâche dans le cluster à partir de laquelle interroger l'API. Si cette tâche existe déjà dans le cluster, commencez par la supprimer.

    kubectl delete jobs.batch -n $NAMESPACE query-api
    
    echo "apiVersion: batch/v1
    kind: Job
    metadata:
      name: query-api
      namespace: $NAMESPACE
    spec:
      template:
        metadata:
          annotations:
            sidecar.istio.io/inject: 'false'
          labels:
            app: query
        spec:
          containers:
          - name: entrypoint
            image: gcr.io/cloud-marketplace/speech-onprem/speech-to-text-on-prem:$VERSION
            command: ["/bin/sh", "-c"]
            args:
            - curl https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/speech/snippets/resources/commercial_mono.wav --output /tmp/audio.wav;
              /bin/onprem_client --address=$NAME.$NAMESPACE:443 --file_paths /tmp/audio.wav
          restartPolicy: Never
    " | kubectl apply -f -
    
  2. Consultez les journaux pour afficher la transcription :

    kubectl logs -n $NAMESPACE --follow $(kubectl get po -n $NAMESPACE -l
    app=query -o=jsonpath='{.items[0].metadata.name}') -c entrypoint
    

Interroger une adresse IP publique

Si vous avez installé Istio dans le cluster, assurez-vous que la passerelle d'entrée Istio s'exécute avec une adresse IP publique. Si vous n'avez pas installé Istio, vous pouvez définir la valeur de $PUBLIC_IP. Une fois cette opération effectuée, vous pouvez envoyer des requêtes de transcription à un point de terminaison public.

  1. Si vous avez installé Istio, suivez les instructions pour obtenir l'adresse IP publique de l'objet Ingress et la définir sur PUBLIC_IP.

  2. Si vous n'avez pas installé Istio, vérifiez que l'adresse IP a été associée. Elle doit s'afficher sous EXTERNAL-IP comme suit. Si elle ne s'affiche pas au bout de quelques minutes, accédez à votre cluster dans la console pour résoudre le problème.

    kubectl get service $NAME --namespace $NAMESPACE
    
    1. Copiez le binaire onprem_client à partir de l'image Docker :

      kubectl cp -n $NAMESPACE $(kubectl get pod -n $NAMESPACE -l
      app.kubernetes.io/name=$NAME -o=jsonpath='{.items[0].metadata.name}'
      ):/bin/onprem_client ./onprem_client
      
      kubectl cp -n $NAMESPACE $(kubectl get pod -n $NAMESPACE -l
      app.kubernetes.io/name=$NAME -o=jsonpath='{.items[0].metadata.name}'
      ):/usr/grte.tar ./grte.tar
      
      sudo tar -xvf grte.tar -C /
      
      chmod a+x ./onprem_client
      
    2. Envoyez une requête à l'aide du binaire onprem_client :

      ./onprem_client --address ${PUBLIC_IP}:443
      --file_paths /path/to/audio.wav
      

Étape suivante

Découvrez comment envoyer une requête de transcription à l'API de reconnaissance vocale sur site.