SemanticKernelのTextToImageについて


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

まず、SemanticKernelを導入します。

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

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

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

```csharp
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();
```

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

```xml
<!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>
```

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

![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/4CAA63nvHRAzRChyh4ZFArlXJubFCUqajALgZx0Om0NzeJMAG6Q9RTEfKKWvNpuickLegBbickMDrRTywAqzyd3Q/640?wx_fmt=png&from=appmsg)

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

(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