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に指定してもよかったのですが、そこまではいらないかなということで固定値にしています。変わるようなら変数にしようかなと思います。