社内SEの話

日々起きたことの記録用

【Powershell】ChatGPTから返事をしてもらう

はじめに

PowerShellを使ってChatGPTから返したくなったので実験的に作ってみました。
良ければ参考にしてください。

API Keyを事前に取得しておく

API Keyについて

boonx4m312s.hatenablog.com

ChatGPTについて

boonx4m312s.hatenablog.com

Powershell 5

function PowerChatGPT(){
    Param(
        $Prompt
        ,$apikey='apikey'
        ,$MaxToken = 300
    )

    $uri = 'https://api.openai.com/v1/completions'
    $headers = @{
        'Content-Type' = 'application/json'
        'Authorization' = "Bearer $apikey"
    }
    $data = @{
        'model' = 'text-davinci-002'
        'prompt' = $Prompt
        'temperature' = 0.7
        'max_tokens' = $MaxToken
    }

    $contenttype = 'application/json;charset=utf-8'
    $response = Invoke-RestMethod -Uri $uri -Headers $headers -Method 'POST' -Body ($data | ConvertTo-Json) -ContentType $contenttype
        $con=[System.Text.Encoding]::Utf8.GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($response.choices.text))
        $con
}

PowerChatGPT -Prompt 'Powershellの便利な点を教えて'

結果が返って来ました。

Powershell5の場合は文字コードSJISのため返ってきたテキストをコンバートさせる必要があります。

Powershell7

function PowerChatGPT(){
    Param(
        $Prompt
        ,$apikey='apikey'
        ,$MaxToken = 300
    )

    $uri = 'https://api.openai.com/v1/completions'
    $headers = @{
        'Content-Type' = 'application/json'
        'Authorization' = "Bearer $apikey"
    }
    $data = @{
        'model' = 'text-davinci-002'
        'prompt' = $Prompt
        'temperature' = 0.7
        'max_tokens' = $MaxToken
    }

    $contenttype = 'application/json;charset=utf-8'
    $response = Invoke-RestMethod -Uri $uri -Headers $headers -Method 'POST' -Body ($data | ConvertTo-Json) -ContentType $contenttype
    $response.choices.text
}


PowerChatGPT -Prompt 'Powershellで便利なシーンを10例出してください' -MaxToken 1000

同様に結果が返ってきました。

コマンド登録したい場合は任意に設定してみてください。

実は登録したことがないので時間のある時に試してみたいと思います。