Bibliothèque de queries
Bibliothèque de queriesTraduire plusieurs phrases avec Mistral AI

Traduire plusieurs phrases avec Mistral AI

Cette requête récupère le contenu de plusieurs articles et traduit ces chaînes dans n'importe quelle langue en utilisant Mistral AI.

Pour vous connecter à l'API Mistral AI, vous devez fournir la variable $apiKey avec la clé API.

Vous pouvez remplacer la variable $model ("mistral-large-latest" par défaut) par le modèle Mistral que vous souhaitez utiliser.

query GetPostContent($limit: Int! = 5) {
  posts(pagination: {limit: $limit}, sort: {by: ID, order: ASC}) {
    content
      @export(
        as: "contentItems",
        type: LIST
      )
  }
}
 
query TranslateContentWithMistralAI(
  $fromLang: String!
  $toLang: String!
  $apiKey: String!
  $systemMessage: String! = "You are a language translator"
  $promptTemplate: String! = """
I'm working on internationalizing my application.
 
I've created a JSON with sentences in {$fromLang}. Please translate the sentences to {$toLang}. If a sentence contains HTML, do not translate inside the HTML tags.
 
Return a JSON with entry "translations", and the translations as an array, in the same order as in the input.
 
This is the JSON:
 
{$encodedContentItems}
"""
  $model: String! = "mistral-large-latest"
)
  @depends(on: "GetPostContent")
{
  contentItems: _echo(value: $contentItems)
  encodedContentItems: _arrayEncodeAsJSONString(array: $contentItems)
  prompt: _strReplaceMultiple(
    search: ["{$fromLang}", "{$toLang}", "{$encodedContentItems}"],
    replaceWith: [$fromLang, $toLang, $__encodedContentItems],
    in: $promptTemplate
  )
  authorizationHeader: _sprintf(
    string: "Bearer %s"
    values: [$apiKey]
  )
    @remove
  mistralAIResponse: _sendJSONObjectItemHTTPRequest(input: {
    url: "https://api.mistral.ai/v1/chat/completions",
    method: POST,
    options: {
      headers: [
        {
          name: "Authorization",
          value: $__authorizationHeader
        },
      ],
      json: {
        model: $model,
        messages: [
          {
            role: "system",
            content: $systemMessage
          },
          {
            role: "user",
            content: $__prompt
          },
        ],
        response_format: {
          type: "json_object"
        }
      }
    }
  })
    @underJSONObjectProperty(by: { key: "choices" })
      @underArrayItem(index: 0)
        @underJSONObjectProperty(by: { path: "message.content" })
          @export(as: "jsonEncodedTranslatedContent")
}
 
query ExtractTranslatedContent
  @depends(on: "TranslateContentWithMistralAI")
{
  jsonEncodedTranslatedContent: _echo(value: $jsonEncodedTranslatedContent)
    @remove
  decodedTranslatedContent: _strDecodeJSONObject(string: $jsonEncodedTranslatedContent)
    @remove
  translatedContent: _objectProperty(
    object: $__decodedTranslatedContent,
    by: { key: "translations" }
  )
}