Modèles Cohere Command R et Command R+ - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Modèles Cohere Command R et Command R+

Vous effectuez des demandes d’inférence aux modèles Cohere Command R et Cohere Command R+ avec InvokeModel ou InvokeModelWithResponseStream (streaming). Vous avez besoin de l’ID du modèle que vous voulez utiliser. Pour obtenir l’ID du modèle, consultez Modèles de fondation pris en charge dans Amazon Bedrock.

Astuce

Pour les applications conversationnelles, nous vous recommandons d’utiliser l’API Converse. L’API Converse fournit un ensemble unifié de paramètres qui fonctionnent sur tous les modèles prenant en charge les messages. Pour plus d’informations, consultez Mener une conversation avec les opérations d’API Converse.

Demande et réponse

Request

Les modèles Cohere Command ont les paramètres d’inférence suivants.

{ "message": string, "chat_history": [ { "role":"USER or CHATBOT", "message": string } ], "documents": [ {"title": string, "snippet": string}, ], "search_queries_only" : boolean, "preamble" : string, "max_tokens": int, "temperature": float, "p": float, "k": float, "prompt_truncation" : string, "frequency_penalty" : float, "presence_penalty" : float, "seed" : int, "return_prompt" : boolean, "tools" : [ { "name": string, "description": string, "parameter_definitions": { "parameter name": { "description": string, "type": string, "required": boolean } } } ], "tool_results" : [ { "call": { "name": string, "parameters": { "parameter name": string } }, "outputs": [ { "text": string } ] } ], "stop_sequences": [string], "raw_prompting" : boolean }

Les paramètres suivants sont obligatoires.

  • message : (obligatoire) saisie de texte auquel le modèle doit répondre.

Les paramètres suivants sont facultatifs.

  • chat_history : liste des messages précédents échangés entre l’utilisateur et le modèle, destinée à donner au modèle le contexte conversationnel pour répondre au message de l’utilisateur.

    Les champs suivants sont obligatoires.

    • role : rôle du message. Les valeurs valides sont les jetons USER ou CHATBOT.

    • message : contenu du texte du message.

    L’exemple suivant est un exemple JSON pour le champ chat_history.

    "chat_history": [ {"role": "USER", "message": "Who discovered gravity?"}, {"role": "CHATBOT", "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton"} ]
  • documents : liste de textes que le modèle peut citer pour générer une réponse plus précise. Chaque document est un dictionnaire chaîne-chaîne. La génération qui en résulte inclut des citations qui font référence à certains de ces documents. Nous vous recommandons de limiter le nombre total de mots des chaînes du dictionnaire à moins de 300 mots. Un champ _excludes (tableau de chaînes) peut être fourni en option pour empêcher l’affichage de certaines paires clé-valeur dans le modèle. Pour plus d’informations, consultez Guide du mode document dans la documentation Cohere.

    L’exemple suivant est un exemple JSON pour le champ documents.

    "documents": [ {"title": "Tall penguins", "snippet": "Emperor penguins are the tallest."}, {"title": "Penguin habitats", "snippet": "Emperor penguins only live in Antarctica."} ]
  • search_queries_only : la valeur par défaut est false. Lorsqu’elle est définie sur true, la réponse ne contiendra qu’une liste de requêtes de recherche générées, mais aucune recherche n’aura lieu et aucune réponse du modèle au message de l’utilisateur sera générée.

  • preamble : remplace le préambule par défaut pour la génération de requêtes de recherche. N’a aucun effet sur les générations d’utilisation des outils.

  • max_tokens : le nombre maximum de jetons que le modèle doit générer dans le cadre de la réponse. Notez que la définition d’une valeur faible peut entraîner des générations incomplètes. La définition de max_tokens peut entraîner des générations incomplètes ou inexistantes lorsqu’il est utilisé avec les champs tools ou documents.

  • temperature : utilisez une valeur inférieure pour réduire le caractère aléatoire de la réponse. Le caractère aléatoire peut être encore maximisé en augmentant la valeur du paramètre p.

    Par défaut Minimum Maximum

    0.3

    0

    1

  • p : top P. Utilisez une valeur inférieure pour ignorer les options les moins probables.

    Par défaut Minimum Maximum

    0.75

    0,01

    0.99

  • k : top K. Spécifiez le nombre de choix de jetons que le modèle utilise pour générer le jeton suivant.

    Par défaut Minimum Maximum

    0

    0

    500

  • prompt_truncation : la valeur par défaut est OFF. Détermine la manière dont l’invite est construite. Lorsque prompt_truncation est défini sur AUTO_PRESERVE_ORDER, certains éléments de chat_history et documents seront supprimés pour construire une invite correspondant à la limite de longueur du contexte du modèle. Au cours de ce processus, l’ordre des documents et l’historique du chat seront préservés. Si prompt_truncation est défini sur OFF, aucun élément ne sera supprimé.

  • frequency_penalty : utilisé pour réduire la répétitivité des jetons générés. Plus la valeur est élevée, plus une pénalité est appliquée aux jetons précédemment présents, proportionnelle au nombre de fois qu’ils sont déjà apparus dans l’invite ou la génération précédente.

    Par défaut Minimum Maximum

    0

    0

    1

  • presence_penalty : utilisé pour réduire la répétitivité des jetons générés. Similaire à frequency_penalty, sauf que cette pénalité est appliquée de la même manière à tous les jetons déjà apparus, quelle que soit leur fréquence exacte.

    Par défaut Minimum Maximum

    0

    0

    1

  • seed : si ce paramètre est spécifié, le système dorsal fera de son mieux pour échantillonner les jetons de manière déterministe, de telle sorte que les demandes répétées avec la même valeur de départ et les mêmes paramètres devraient renvoyer le même résultat. Cependant, le déterminisme ne peut être totalement garanti.

  • return_prompt : spécifiez true pour renvoyer l’invite complète envoyée au modèle. La valeur par défaut est false. Dans la réponse, l’invite dans le champ prompt.

  • tools : liste des outils (fonctions) disponibles que le modèle peut suggérer d’invoquer avant de produire une réponse textuelle. Une fois tools transmis (sans tool_results), le champ text dans la réponse sera "" et le champ tool_calls dans la réponse sera rempli avec une liste des appels d’outils à effectuer. Si aucun appel n’est nécessaire, le tableau tool_calls sera vide.

    Pour plus d’informations, consultez Utilisation d’outil dans la documentation Cohere.

    Astuce

    Nous vous recommandons d’utiliser l’API Converse pour intégrer l’utilisation des outils dans votre application. Pour plus d’informations, consultez Utilisation d’un outil pour compléter une réponse au modèle Amazon Bedrock.

    L’exemple suivant est un exemple JSON pour le champ tools.

    [ { "name": "top_song", "description": "Get the most popular song played on a radio station.", "parameter_definitions": { "sign": { "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP.", "type": "str", "required": true } } } ]

    Pour plus d’informations, consultez Utilisation d’outil en une seule étape (appel de fonction) dans la documentation Cohere.

  • tools_results : liste des résultats obtenus en invoquant les outils recommandés par le modèle lors du tour de chat précédent. Les résultats sont utilisés pour produire une réponse textuelle et sont référencés dans les citations. Lors de l’utilisation de tool_results, tools doit également être transmis. Chaque tool_result contient des informations sur la manière dont il a été invoqué, ainsi qu’une liste de sorties sous forme de dictionnaires. La logique de citation affinée unique de Cohere exige que la sortie soit une liste. Si la sortie n’est qu’un seul élément, tel que {"status": 200}, vous devez tout de même l’envelopper dans une liste.

    Pour plus d’informations, consultez Utilisation d’outil dans la documentation Cohere.

    L’exemple suivant est un exemple JSON pour le champ tools_results.

    [ { "call": { "name": "top_song", "parameters": { "sign": "WZPZ" } }, "outputs": [ { "song": "Elemental Hotel" } ] } ]
  • stop_sequences : liste de séquences d’arrêt. Une fois qu’une séquence d’arrêt est détectée, le modèle cesse de générer d’autres jetons.

  • raw_prompting : spécifiez true, pour envoyer le message de l’utilisateur au modèle sans aucun prétraitement. Sinon, spécifiez false.

Response

La réponse peut inclure les champs suivants :

{ "response_id": string, "text": string, "generation_id": string, "citations": [ { "start": int, "end": int, "text": "string", "document_ids": [ "string" ] } ], "finish_reason": string, "tool_calls": [ { "name": string, "parameters": { "parameter name": string } } ], { "meta": { "api_version": { "version": string }, "billed_units": { "input_tokens": int, "output_tokens": int } } }
  • response_id : identifiant unique pour achever la conversation

  • text : réponse du modèle à la saisie d’un message de chat.

  • generation_id : identifiant unique pour achever la conversation, utilisé avec le point de terminaison des commentaires sur la plateforme de Cohere.

  • citations : tableau de citations en ligne et de métadonnées associées pour la réponse générée. Contient les champs suivants :

    • start : index auquel la citation commence, à partir de 0.

    • end : index après lequel la citation se termine, à partir de 0.

    • text : texte auquel se rapporte la citation.

    • document_ids : tableau d’identifiants d’ID de document correspondant aux documents cités pour le texte.

  • prompt : invite complète envoyée au modèle. Spécifiez le champ return_prompt pour renvoyer ce champ.

  • finish_reason : raison pour laquelle le modèle a cessé de générer une sortie. Il peut s’agir de l’une des valeurs suivantes :

    • complete : l’achèvement a atteint la fin du jeton de génération, assurez-vous que c’est la raison de finition pour obtenir les meilleures performances.

    • error_toxic : la génération n’a pas pu être terminée en raison de nos filtres de contenu.

    • error_limit : la génération n’a pas pu être terminée, car la limite de contexte du modèle a été atteinte.

    • error : la génération n’a pas pu être terminée en raison d’une erreur.

    • user_cancel : la génération n’a pas pu être terminée, car elle a été arrêtée par l’utilisateur.

    • max_tokens : la génération n’a pas pu être terminée, car l’utilisateur a spécifié une limite max_tokens dans la demande et cette limite a été atteinte. Il est possible que les performances ne soient pas optimales.

  • tool_calls : liste des outils appropriés pour les appels. Renvoyé uniquement si vous spécifiez le champ d’entrée tools.

    Pour plus d’informations, consultez Utilisation d’outil dans la documentation Cohere.

    Astuce

    Nous vous recommandons d’utiliser l’API Converse pour intégrer l’utilisation des outils dans votre application. Pour plus d’informations, consultez Utilisation d’un outil pour compléter une réponse au modèle Amazon Bedrock.

    L’exemple suivant est un exemple JSON pour le champ tool_calls.

    [ { "name": "top_song", "parameters": { "sign": "WZPZ" } } ]
  • meta : données d’utilisation de l’API (n’existent que pour le streaming).

    • api_version : version de l’API. La version se trouve dans le champ version.

    • billed_units : unités facturées. Les valeurs possibles sont :

      • input_tokens : nombre de jetons d’entrée facturés.

      • output_tokens : nombre de jetons de sortie facturés.

Exemple de code

Cet exemple montre comment appeler le modèle Cohere Command R.

# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to use the Cohere Command R model. """ import json import logging import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_text(model_id, body): """ Generate text using a Cohere Command R model. Args: model_id (str): The model ID to use. body (str) : The reqest body to use. Returns: dict: The response from the model. """ logger.info("Generating text with Cohere model %s", model_id) bedrock = boto3.client(service_name='bedrock-runtime') response = bedrock.invoke_model( body=body, modelId=model_id ) logger.info( "Successfully generated text with Cohere Command R model %s", model_id) return response def main(): """ Entrypoint for Cohere example. """ logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") model_id = 'cohere.command-r-v1:0' chat_history = [ {"role": "USER", "message": "What is an interesting new role in AI if I don't have an ML background?"}, {"role": "CHATBOT", "message": "You could explore being a prompt engineer!"} ] message = "What are some skills I should have?" try: body = json.dumps({ "message": message, "chat_history": chat_history, "max_tokens": 2000, "temperature": 0.6, "p": 0.5, "k": 250 }) response = generate_text(model_id=model_id, body=body) response_body = json.loads(response.get('body').read()) response_chat_history = response_body.get('chat_history') print('Chat history\n------------') for response_message in response_chat_history: if 'message' in response_message: print(f"Role: {response_message['role']}") print(f"Message: {response_message['message']}\n") print("Generated text\n--------------") print(f"Stop reason: {response_body['finish_reason']}") print(f"Response text: \n{response_body['text']}") except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) else: print(f"Finished generating text with Cohere model {model_id}.") if __name__ == "__main__": main()