kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

Azure OpenAIにブログの要約をしてもらう

GPT-4が通ったことですし、何にしようかなと思ったのですが、隔週で実施している devblog radioのブログ要約をしてもらうことにしました。

これ前からやりたかったので、Cognitive Serviceもセットアップしていたのですが、どうもなぁ…ということで二の足を踏んでいましたが、GPT-4の要約、翻訳のおかげでやってみることにしました。ローカルでテストしたらだいたいいい感じだったので、試行してみます。

最初はAzure Functionsにしようと思っていましたが、どうせPowerShellでやっているので、同じスクリプト内でやったほうがいいかということでこんな関数を作ってみました。

function Get-SummarywithOpenAI(
    [string]$blogurl
)
{
    $Uri   = $ENV:OPENAI_API_URL
    $PostBody = @{
        max_tokens = 800
        temperature = 0.7
        top_p = 0.95
        frequency_penalty = 0
        presence_penalty = 0
        stop = @('##')
    }

    $Header =@{
      "api-key" = $ENV:OPENAI_API_KEY
      "Content-Type" ="application/json"
    }

    $PostBody.messages = @(
        @{
            role = 'user'
            content = '以下のURLを要約してください。本文が日本語以外である場合、日本語で200文字以内に要約してください。'+$blogurl
        }
    )

    try {
        $response = Invoke-RestMethod -Method Post -Uri $Uri `
            -Headers $Header `
            -Body ([System.Text.Encoding]::UTF8.GetBytes(($PostBody | ConvertTo-Json -Compress)))

       $Answer = $response.choices[0].message.content
   }
    catch {
        $Answer = '要約に失敗しました。'
    }

    return $Answer
}

環境変数OPENAI_API_URLにAPIエンドポイント(https://{略}.openai.azure.com/openai/deployments/{モデル名}/chat/completions?api-version=2023-03-15-preview))、OPENAI_API_KEYにAzureポータルから取得できるAPI KEYを設定してください。

パラメータはカスタマイズできるようにenvironmentに指定してもよかったのですが、そこまではいらないかなということで固定値にしています。変わるようなら変数にしようかなと思います。