1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SemanticKernelのTextToImageについて

Posted at

生成画像はLLMマルチモーダルの基本機能であり、SemanticKernelもこの基本機能を導入しました。これはTextToImageを追加することで実現されており、GPTでは内部的にDallEモデルに対応しています。以下の例では、生成を簡単な方法で実現しています。

まず、SemanticKernelを導入します。

  <ItemGroup>
    <PackageReference Include="Microsoft.SemanticKernel" Version="1.6.3" />
  </ItemGroup>

一つのプロンプトから異なるリクエストを受け取り、類似の画像を生成します。

バックエンドのコードは以下の通りです:

using Microsoft.SemanticKernel.TextToImage;
using Microsoft.SemanticKernel;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseStaticFiles();
var chatModelId = "gpt-4-0125-preview";
var key = File.ReadAllText(@"C:\GPT\key.txt");
#pragma warning disable SKEXP0010
var kernel = Kernel.CreateBuilder()
    .AddOpenAITextToImage(key)    
    .Build();
#pragma warning disable SKEXP0001
var dallE = kernel.GetRequiredService<ITextToImageService>();
app.MapGet("/image", async (string name) =>
{
    var width = 256;
    var imageDescription = $"请画一只站在树枝上,背景是蓝天,清晰的并且占满画面的{name}。";
    app.Logger.LogInformation(imageDescription);
    var imageUrl = await dallE.GenerateImageAsync(imageDescription, width, width);
    app.Logger.LogInformation(imageUrl);
    return imageUrl;
});
app.Run();

フロントエンドのコードは以下の通りです:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>上传</title>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col">
                <input type="text" class="form-control" id="textA" value="金雕">
            </div>
            <div class="col">
                <input type="text" class="form-control" id="textB" value="黄鹂">
            </div>
            <div class="col">
                <input type="text" class="form-control" id="textC" value="鹦鹉">
            </div>
            <div class="col">
                <button type="button" onclick="getimages()" class="btn btn-success">获取图片</button>
            </div>
        </div>
        <div class="row">
            <div class="col">
                <img id="imageA" src="" width="256">
            </div>
            <div class="col">
                <img id="imageB" src="" width="256">
            </div>
            <div class="col">
                <img id="imageC" src="" width="256">
            </div>
        </div>
        <div class="row">
            <span id="result"></span>
        </div>
    </div>
    <script>
        var i = 0;
        function getimages() {
            $("#result").html("生成中,请稍后……")
            getimage($("#textA").val(), $("#imageA"))
            getimage($("#textB").val(), $("#imageB"))
            getimage($("#textC").val(), $("#imageC"))
        }
        function getimage(name, image) {
            $.ajax({
                url: '/image?name=' + name,
                type: 'GET',
                success: function (data) {
                    i++
                    image.attr("src", data);
                    if (i == 3) {
                        i = 0;
                        $("#result").html("")
                    }
                },
                error: function (xhr, status, error) {
                    alter(error)
                }
            });
        }
    </script>
</body>
</html>

効果は以下の画像のようになります:

图片

この機能を利用すると、複雑な認証画像を生成することができます。提示語を設定するだけで、多様な認証画像を使用できるようになります。

(Translated by GPT)

元のリンク:https://mp.weixin.qq.com/s?__biz=MzA3NDM1MzIyMQ==&mid=2247488020&idx=1&sn=676b983a9084a6976548dab74ef3a979&chksm=9f004d3ea877c42829f9ed79df207a70cf2ffa6574e1fcdbb0381f5d14bd6ef9bb07a68b7c7b&token=1672532928&lang=zh_CN#rd&wt.mc_id=MVP_325642

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?