Est-il possible d'automatiser cela avec Discourse AI aujourd'hui ?

Il y a une tâche que nous effectuons aujourd’hui et pour laquelle j’ai pu réaliser de bons progrès en l’automatisant à l’aide de n8n, mais je me demande si c’est possible nativement avec Discourse.

Nous avons une catégorie de brouillons où les chefs de produit rédigent des annonces de produits à envoyer concernant leurs produits. Lorsqu’ils créent ce brouillon, nous examinons le nom du produit, la version, s’il s’agit d’une version majeure/mineure/corrective. Nous prenons également le corps du contenu de leur annonce et le résumons avec un LLM pour obtenir une description de 4 à 7 mots du contenu.

Nous l’utilisons ensuite pour créer la bannière d’annonce dans Adobe, comme ceci :

J’ai l’impression que cela pourrait être fait par un LLM et une logique traditionnelle :

  • L’arrière-plan est juste une teinte par type d’annonce et il y a quatre variations de chaque couleur — nous en sélectionnons une au hasard.
  • Le nom du produit et la version sont saisis dans les cases en haut.
  • La description au milieu au centre du corps.
  • Nous utilisons https://storyset.com/ pour créer rapidement une illustration à placer à droite.

J’ai l’impression d’avoir une bonne approche pour faire cela avec n8n, mais je me demande si cela pourrait être fait nativement avec Discourse AI et d’autres outils ?

3 « J'aime »

La persona Diseñador, que utiliza el excelente nuevo modelo GPT Image 1, es capaz de hacer cosas como esta:

Creo que podrías implementar algo utilizando personas personalizadas y las herramientas adecuadas para lograr gran parte de esto, sin duda.

4 « J'aime »

Note pour l’utilisation d’outils personnalisés, tant qu’il existe des API REST appropriées, vous pouvez vous intégrer facilement. Par exemple, voici comment je m’intègre à la génération d’images de flux :

const apiKey = "password";
const model = "black-forest-labs/FLUX.1.1-pro";

let prompt;

function invoke(params) {
  let seed = parseInt(params.seed);
  if (!(seed > 0)) {
    seed = Math.floor(Math.random() * 1000000) + 1;
  }

  let height = parseInt(params.height);
  if (!height || height < 256 || height > 1440) {
      height = 768;
  }
  let width = parseInt(params.width);
  if (!width || width < 256 || width > 1440) {
      width = 1024;
  }
  
  width = width - (width % 32);
  height = height - (height %32);

  prompt = params.prompt;
  const negative_prompt = params.negative_prompt || "";
  const body = {
    model: model,
    prompt: prompt,
    width: width,
    height: height,
    steps: 10,
    n: 1,
    seed: seed,
    negative_prompt: negative_prompt,
    response_format: "b64_json",
  };

  const result = http.post("https://api.together.xyz/v1/images/generations", {
    headers: {
      "Authorization": `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(body),
  });
  
  if (result.status !== 200) {
      return { error: true, body: result.body };
  }

  const base64Image = JSON.parse(result.body).data[0].b64_json;
  const image = upload.create("generated_image.png", base64Image);
  const raw = `
![${prompt}](${image.short_url})
`;
  
  if (!params.show_to_user === false) {
     chain.setCustomRaw(raw);
  }

  return { result: "Image generated successfully", prompt: prompt, url: image.url, seed: seed, negative_prompt: negative_prompt };
}

function details() {
  return prompt;
}

Vous pouvez voir le POST HTTP et l’analyse de l’image base 64 dans l’exemple.

5 « J'aime »

Si l’on donne le corps d’un article, la responsabilité de transformer le contenu de ce corps en paramètres valides incombe-t-elle à Discourse AI pour lire le contenu puis créer l’objet de la requête ? Ou le contenu brut doit-il être transmis à l’outil et la responsabilité d’un LLM qui l’analyse pour les données nécessaires à la construction d’une entrée appropriée pour son appel d’API incombe-t-elle à ce dernier ?

1 « J'aime »

Oui, dans ce cas, l’outil dispose déjà d’une API pour lire les publications, vous pouvez donc simplement passer un identifiant.

2 « J'aime »

Pourriez-vous me diriger vers la documentation pour cela par hasard ?

Désolé pour le retard de réponse, c’est délicat, notre documentation évolue et la surface de l’API s’agrandit chaque semaine.

Ce type de technique fournit une précision kilométrique à jour, mais je pense que nous devons attendre un peu que toutes les API se stabilisent avant de fixer les choses :

2 « J'aime »