laf クラウドを使用して、3 分で独自の Midjourney を開発します

記事の最後には、
Jianghu の実践のデモがあります。まず、感謝の手を振りましょう、ありがとうラフ、魔法を使わずに Midjourney に無料でアクセスさせてください、ラフを知らない場合は、ラフの紹介文を押してください

1. このブログを書く背景

Laf は最近公式にイベントをリリースしました。イベントのリンクがあり、初心者でもアクセスできます。すぐにリンクをクリックしてサインアップし、素晴らしい賞品を獲得しましょう。

2. アクセスの準備

laf.devでアカウントを登録します (laf.run ではなく laf.dev を使用する必要があることに注意してください)。新規ユーザーは 1 か月間無料で体験できますが、古いユーザーはスキップします

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 つあることに気づいたかもしれません。アクティビティのリンクをよく読んで、

右上隅にある「公開」をクリックすると、アプリが公開されます。どうでしょうか?タイトルに嘘はありませんでしたね、3分くらいでしたね。

4. デバッグインターフェース

  • 生成された画像

    msg_Id は自由に入力できますが、チャネル内の他のユーザーとの重複を避けるために、単純すぎないことが最善です。



  • RetrieveMessages は、現在のチャネルのすべてのユーザーによって生成された最新の 50 件の結果を取得します。
    画像内の赤い線に注目してください。これは上記のものです。msg_Idこの ID を通じて独自の結果をフィルタリングできます。attachments対応する URL はあなたのものです。へのリンク写真

  • 画像を変換します (調整したいものを選択してください)

  1. type固定パスのバリエーション
  2. id2 番目のステップの msg_Id フィルタリングを通じて取得されたデータの ID です。
  3. url対応する添付ファイル内の URL です
  4. questionあなた自身の質問です
  5. index写真のシリアル番号です。写真のシリアル番号については、下の写真を参照してください。
    ここに画像の説明を挿入
  • 画像の拡大は
    画像パラメータの調整と似ており、タイプをアップスケールに変更するだけです。

5. インターフェースの呼び出し方法

右上隅にある公開ボタンの横にあるリンクをコピーして、郵便配達員またはフロントエンド ページで呼び出します。フロントエンド インターフェイスはあなた次第です。アイデアや作品を交換するためにグループに参加することを歓迎します。

6、終わり

アクセスはここにあります。LAF 公式に感謝します。デモはここにあります

おすすめ

転載: blog.csdn.net/xinTianou123/article/details/130811154