OpenAI および Azure OpenAI Service を PowerShell から使用するためのラッパーモジュールです。
ChatGPT, 音声の文字起こし, テキストからの画像生成などの OpenAI の提供する機能を使用できます。
これはコミュニティベースの非公式モジュールであり OpenAI による提供ではありません
-
OpenAI API について
https://platform.openai.com/docs -
Azure OpenAI Service について
https://learn.microsoft.com/en-us/azure/ai-services/openai/overview
- Windows PowerShell 5.1
- PowerShell 7 or higher
- Windows, macOS or Linux
使用するには OpenAI のアカウントを作成し、以下URLから API キーを取得する必要があります。
https://platform.openai.com/account/api-keys
PowerShell Gallery からインストールしてください。
Install-Module -Name PSOpenAI
- ConvertFrom-Token
- ConvertTo-Token
- Get-CosineSimilarity
- Get-OpenAIContext
- Set-OpenAIContext
- Clear-OpenAIContext
- Enter-ChatGPT
- Request-ChatCompletion
- Get-ChatCompletion
- Set-ChatCompletion
- Remove-ChatCompletion
- New-ChatCompletionFunction
ガイド: Assistants の使用方法
ガイド: Assistants と Vector Store を使用したファイル検索
- Get-Assistant
- New-Assistant
- Set-Assistant
- Remove-Assistant
- Get-Thread
- New-Thread
- Set-Thread
- Remove-Thread
- Get-ThreadMessage
- Add-ThreadMessage
- Remove-ThreadMessage
- Get-ThreadRun
- Start-ThreadRun
- Stop-ThreadRun
- Wait-ThreadRun
- Receive-ThreadRun
- Get-ThreadRunStep
- Get-VectorStore
- New-VectorStore
- Set-VectorStore
- Remove-VectorStore
- Add-VectorStoreFile
- Get-VectorStoreFile
- Remove-VectorStoreFile
- Start-VectorStoreFileBatch
- Get-VectorStoreFileBatch
- Stop-VectorStoreFileBatch
- Wait-VectorStoreFileBatch
- Get-VectorStoreFileInBatch
- Connect-RealtimeSession
- Disconnect-RealtimeSession
- Set-RealtimeSessionCofiguration
- Send-RealtimeSessionEvent
- Add-RealtimeSessionItem
- Remove-RealtimeSessionItem
- Request-RealtimeSessionResponse
- Stop-RealtimeSessionResponse
- Start-RealtimeSessionAudioInput *
- Stop-RealtimeSessionAudioInput *
- Start-RealtimeSessionAudioOutput *
- Stop-RealtimeSessionAudioOutput *
[*] Windows と PowerShell 7.4 以上の組み合わせでのみ動作します
より詳細で複雑なシナリオの説明は Docs および Guides も参照してください。
コンソール上でインタラクティブにChatGPTと対話します。
$global:OPENAI_API_KEY = '<Put your API key here.>'
Enter-ChatGPT
ChatGPTに質問をして回答を得ます。
$global:OPENAI_API_KEY = '<APIキーをここに貼り付ける>'
$Result = Request-ChatCompletion -Message "自己紹介をしてください"
Write-Output $Result.Answer
このような出力が得られます。
はじめまして、私はAIアシスタントのGPT-3です。人工知能のプログラムであり、自然言語処理を使って... (以下省略)
Tip
デフォルトで使用するモデルはGPT-3.5-Turboです。
GPT-4oなど他のモデルを使用したい場合はモデル名を明示的に指定してください。
Request-ChatCompletion -Message "Who are you?" -Model "gpt-4o"
入力テキストから音声読み上げを生成します。
$global:OPENAI_API_KEY = '<APIキーをここに貼り付ける>'
Request-AudioSpeech -Text 'Do something fun to play.' -OutFile 'C:\Output\text2speech.mp3' -Voice Onyx
ChatGPTと組み合わせることもできます。
Request-ChatCompletion -Message "Who are you?" | Request-AudioSpeech -OutFile 'C:\Output\ChatAnswer.mp3' -Voice Nova
音声ファイルからテキストに文字起こしをさせます。
$global:OPENAI_API_KEY = '<APIキーをここに貼り付ける>'
Request-AudioTranscription -File 'C:\SampleData\audio.mp3' -Format text
文字起こしの結果が出力されます。
Perhaps he made up to the party afterwards and took her and ...
テキストで指示を与えると、AIがそれっぽい画像を生成します。
$global:OPENAI_API_KEY = '<APIキーをここに貼り付ける>'
Request-ImageGeneration -Prompt 'かわいいライオンの子供' -Size 256x256 -OutFile 'C:\output\babylion.png'
このような画像が出力されます。
パイプライン経由で Request-ChatCompletion
に対話の履歴を与えることで、文脈を維持したまま複数の質問を行うことができます。
PS C:\> $FirstQA = Request-ChatCompletion -Message "アメリカの人口は?"
PS C:\> Write-Output $FirstQA.Answer
2021年現在、アメリカ合衆国の人口は約3億3300万人です。
PS C:\> $SecondQA = $FirstQA | Request-ChatCompletion -Message "では日本は?"
PS C:\> Write-Output $SecondQA.Answer
2021年現在、日本の人口は約1億2600万人です。
PS C:\> $ThirdQA = $SecondQA | Request-ChatCompletion -Message 'アメリカと日本を比較すると?'
PS C:\> Write-Output $ThirdQA.Answer
アメリカと日本の人口は、約3倍以上の開きがあります。
デフォルトではサーバからのレスポンスがすべて完了してから結果がまとめて出力されるため、特に長い出力がある場合は、処理結果が得られるまでに時間がかかります。
-Stream
オプションを使用するとChatGPTのWebUIのように結果はストリームとして逐次的に出力されるため、UXが改善する場合があります。現在-Stream
オプションはRequest-ChatCompletion
とRequest-TextCompletion
で使用可能です。
Request-ChatCompletion 'Describe ChatGPT in 100 charactors.' -Stream | Write-Host -NoNewline
一部がマスクされた画像を与え、推定された全体画像を出力させる例です。
与える画像はマスク部分が完全透過された正方形のPNG画像で、4MB未満でなければなりません。
Request-ImageEdit -Image 'C:\sunflower_masked.png' -Prompt 'sunflower' -OutFile 'C:\sunflower_restored.png' -Size 256x256
左が与えた画像、右が生成された画像です。
Source | Generated |
---|---|
![]() |
![]() |
テキストが OpenAI のコンテンツポリシ-に抵触しているかテストします。
注意:モデレーションAPI は OpenAI への入力もしくは OpenAI からの出力結果をテストする目的に限り使用できます
PS C:\> $Result = Request-Moderation -Text "気に入らない人間を皆殺しにしてやる"
PS C:\> $Result.results.categories
# True となっているカテゴリに抵触していることを示します
sexual : False
hate : True
violence : True
self-harm : False
sexual/minors : False
hate/threatening : False
violence/graphic : False
ほぼ全ての関数で認証のための API キーが必要です.
OpenAI のアカウントを作成し、以下URLから API キーを取得する必要があります。
https://platform.openai.com/account/api-keys
関数に API キーを指定するには3種類の方法があります。
API キーを環境変数 OPENAI_API_KEY
に設定します。関数呼び出し時に暗黙的に使用されます。
PS C:> $env:OPENAI_API_KEY = '<Put your API key here.>'
PS C:> Request-ChatCompletion -Message "Who are you?"
API キーを$global:OPENAI_API_KEY
変数に設定します。関数呼び出し時に暗黙的に使用されます。
PS C:> $global:OPENAI_API_KEY = '<Put your API key here.>'
PS C:> Request-ChatCompletion -Message "Who are you?"
各関数の ApiKey
パラメータに API キーを指定します。すべての関数呼び出しに都度指定する必要があります。
PS C:> Request-ChatCompletion -Message "Who are you?" -ApiKey '<Put your API key here.>'
OpenAI ではなく Azure OpenAI Service を使用する場合は、AzureテナントにOpenAIリソースを作成し、APIキーとエンドポイントURLを取得する必要があります。詳細な手順はGuidesを参照してください。
$global:OPENAI_API_KEY = '<Put your api key here>'
$global:OPENAI_API_BASE = 'https://<resource-name>.openai.azure.com/'
Request-ChatCompletion `
-Message 'Hello Azure OpenAI Service.' `
-Model 'gpt-4o' `
-ApiType Azure