laf 클라우드를 사용하여 3분 만에 나만의 Midjourney 개발

기사 끝에 데모
Jianghu 연습이 있습니다. 먼저 감사의 물결, laf 감사합니다. 마법을 사용하지 않고 무료로 Midjourney에 액세스하겠습니다. laf를 모르면 Laf의 소개를 찌르십시오.

1. 이 블로그를 쓰게 된 배경

Laf는 최근 공식적으로 이벤트를 발표했습니다. 이벤트 링크 , 초보자도 액세스할 수 있습니다! 더 이상 고민할 필요 없이 링크를 클릭하여 가입하고 푸짐한 경품을 받으세요.

2. 접근 준비

laf.dev 에서 계정 을 등록하세요.

3. 인터페이스 작성 시작

  1. 먼저 왼쪽 하단 모서리에서 NPM 종속성에 종속성을 추가합니다.
  2. 새 클라우드 기능을 만들고 이름을 선택하십시오.
  3. 클라우드 기능 코드를 편집하고 다음 코드를 모두 복사하여 붙여넣으십시오. 이 샘플 코드는 laf에서 제공되며 직접 수정할 수 있습니다.
import cloud from '@lafjs/cloud'
import {
    
     Midjourney, MidjourneyMessage } from 'midjourney'
const SERVER_ID = '' // Midjourney 服务 ID
const CHANNEL_ID = '' // Midjourney 频道 ID
const SALAI_TOKEN = '' // Midjourney 服务 Token

const Limit = 100
const MaxWait = 3

// 初始化Midjourney
const client = new Midjourney({
    
    
  ServerId: SERVER_ID,
  ChannelId: CHANNEL_ID,
  SalaiToken: SALAI_TOKEN,
  Debug: true,
  SessionId: SALAI_TOKEN,
  Limit: Limit,
  MaxWait: MaxWait
});

// 云函数主入口代码
export default async function (ctx: FunctionContext) {
    
    
  const {
    
     type, param } = ctx.body
  switch (type) {
    
    
    case 'RetrieveMessages': // 查询生图结果
      return await RetrieveMessages(param)
    case 'imagine': // 生成图片
      return await imagine(param)
    case 'upscale': // 放大图片
      return await upscale(param)
    case 'variation': // 变换图片
      return await variation(param)
  }

}

// 查询最近消息
async function RetrieveMessages(param) {
    
    
  console.log("RetrieveMessages")
  const client = new MidjourneyMessage({
    
    
    ChannelId: CHANNEL_ID,
    SalaiToken: SALAI_TOKEN,
  });
  const msg = await client.RetrieveMessages();
  console.log("RetrieveMessages success ", msg)
  return msg
}

// 创建生图任务
async function imagine(param) {
    
    
  console.log("imagine", param)
  const {
    
     question, msg_Id } = param
  const msg = await client.Imagine(
    `[${
      
      msg_Id}] ${
      
      question}`,
    (uri: string, progress: string) => {
    
    
      console.log("loading", uri, "progress", progress);
    }
  );
  console.log("imagine success ", msg)
  return true
}

// upscale 放大图片
async function upscale(param) {
    
    
  console.log("upscale", param)
  const {
    
     question, index, id, url } = param
  const hash = url.split("_").pop()?.split(".")[0] ?? ""
  console.log(hash)
  const msg = await client.Upscale(
    question,
    index,
    id,
    hash,
    (uri: string, progress: string) => {
    
    
      console.log("loading", uri, "progress", progress);
    }
  );
  console.log("upscale success ", msg)
  return msg
}

// variation 变换图片
async function variation(param) {
    
    
  console.log("variation", param)
  const client = new Midjourney({
    
    
    ServerId: SERVER_ID,
    ChannelId: CHANNEL_ID,
    SalaiToken: SALAI_TOKEN,
    Debug: true,
    SessionId: SALAI_TOKEN,
    Limit: Limit,
    MaxWait: 100
  });
  const {
    
     question, index, id, url } = param
  const hash = url.split("_").pop()?.split(".")[0] ?? ""
  const msg = await client.Variation(
    question,
    index,
    id,
    hash,
    (uri: string, progress: string) => {
    
    
      console.log("loading", uri, "progress", progress);
    }
  );
  console.log("variation success ", msg)
  return msg
}

초기화하는 동안 값이 없는 세 개의 매개변수가 있음을 알아차렸을 수 있습니다.

오른쪽 상단 모서리에 있는 게시를 클릭하면 앱이 게시됩니다. 어때? 제목이 거짓말을 한 것이 아닙니다. 3분 동안 지속되지 않았습니다.

4. 디버그 인터페이스

  • 생성된 이미지

    msg_Id는 마음대로 채울 수 있지만 채널의 다른 사용자와 중복되지 않도록 너무 단순하지 않은 것이 가장 좋습니다.



  • RetrieveMessages는 현재 채널의 모든 사용자가 생성한 최근 50개의 결과를 검색합니다 .
    그림의 빨간색 선에 주의하십시오. 위의 선입니다. msg_Id이 ID를 통해 자신의 결과를 필터링할 수 있습니다. attachments해당 URL은 귀하의 것입니다. 링크 그림

  • 사진 변환(조정하고 싶은 사진 선택)

  1. type고정 패스 변형
  2. id두 번째 단계에서 msg_Id 필터링을 통해 얻은 데이터 조각의 ID입니다.
  3. url해당 첨부 파일의 URL입니다.
  4. question자신의 질문입니다
  5. index사진의 일련번호입니다. 사진의 일련번호는 아래 사진을 참조하세요.
    여기에 이미지 설명 삽입
  • 사진을 확대하는 것은
    사진 매개변수를 조정하는 것과 유사하며 유형을 업스케일로 변경하기만 하면 됩니다.

5. 인터페이스 호출 방법

오른쪽 상단의 게시 버튼 옆에 있는 링크를 복사하여 우편 배달부 또는 프런트 엔드 페이지에서 호출합니다. 프런트 엔드 인터페이스는 귀하에게 달려 있습니다. 그룹에 가입하여 아이디어와 작업을 교환하는 것을 환영합니다.

여섯, 끝

액세스는 여기에 있습니다. laf 관계자 덕분에 데모가 여기에 있습니다.

추천

출처blog.csdn.net/xinTianou123/article/details/130811154