Discourse AI로 이런 자동화가 가능할까요?

오늘 수행하는 작업 중 하나를 n8n을 활용해 자동화하는 데 상당한 진전을 이루었는데, Discourse에서 네이티브로 가능할지 궁금합니다.

제품 마케팅 매니저들이 자사 제품 발표문을 작성하기 위한 초안 카테고리가 있습니다. 초안을 생성하면 제품명, 버전, 그리고 메이저/마이너/패치 릴리스 중 어느 것인지 확인합니다. 또한 발표문의 본문 내용을 가져와 LLM으로 요약하여 4~7단어의 설명을 생성합니다.

이 정보를 활용해 Adobe에서 다음과 같은 발표 배너를 생성합니다:

LLM과 전통적인 로직을 활용하면 이 작업을 수행할 수 있을 것 같습니다:

  • 배경은 발표 유형별로 하나의 색조만 사용되며, 각 색상은 4가지 변형이 있습니다—그중 하나를 무작위로 선택합니다.
  • 제품명과 버전은 상단의 박스에 입력됩니다.
  • 본문 중앙에는 요약된 설명이 배치됩니다.
  • https://storyset.com/ 을 활용해 우측에 배치할 빠른 일러스트를 생성합니다.

n8n을 활용해 이 작업을 수행하는 좋은 접근법을 가지고 있지만, Discourse AI 및 기타 도구를 네이티브로 활용하여도 될지 궁금합니다.

3개의 좋아요

훌륭한 새로운 GPT Image 1 모델을 사용하는 디자이너 페르소나는 다음과 같은 작업을 수행할 수 있습니다:

"POLICYPAK 25.3 Client-Side Enhancements"는 방패, 잠금, 리모트와 같은 아이콘이 포함된 기술 중심 환경에서 랩톱을 다루는 일러스트된 남성을 보여줍니다. 이는 보안 또는 소프트웨어 기능을 의미할 수 있습니다. (AI 캡션)

https://meta.discourse.org/discourse-ai/ai-bot/shared-ai-conversations/GCV5IkOpKHKPqOua3gQ9_Q

맞춤 페르소나와 적절한 도구를 사용하여 이 중 많은 부분을 구현할 수 있다고 생각합니다.

4개의 좋아요

사용자 정의 도구 사용에 대한 참고 사항입니다. 적절한 REST API가 있다면 쉽게 통합할 수 있습니다. 예를 들어, 저는 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;
}

예제에서 HTTP POST 요청과 base64 이미지의 파싱 과정을 확인할 수 있습니다.

5개의 좋아요

게시물 본문이 제공되는 경우, 해당 본문 내용을 유효한 매개변수로 변환하는 부담이 Discourse AI에 있는 것인가요? 즉, Discourse AI가 내용을 읽고 요청 객체를 생성하는 방식인가요? 아니면, 원본 내용을 도구로 전달하고, LLM이 해당 내용을 파싱하여 API 호출에 필요한 데이터를 추출하고 올바른 입력을 구성하는 부담을 지는 것이 적절한가요?

1개의 좋아요

네, 그 경우 도구에는 이미 게시글을 읽기 위한 API가 있으므로 ID만 전달하면 됩니다.

2개의 좋아요

혹시 이 기능의 문서로 안내해 주실 수 있을까요?

답변이 늦어 죄송합니다. 상황이 다소 까다롭고, 문서가 계속 발전하는 중이며 API 범위도 매주 확장되고 있기 때문입니다.

이러한 기법은 비교적 정확하고 최신의 마일리지 데이터를 제공할 수 있지만, 모든 API가 안정화되기까지는 조금 더 기다린 후 관련 사항을 확정해야 한다고 생각합니다:

2개의 좋아요