Skip to content

Latest commit

 

History

History
350 lines (255 loc) · 13.3 KB

README.ja.md

File metadata and controls

350 lines (255 loc) · 13.3 KB

PSOpenAI

OpenAI および Azure OpenAI Service を PowerShell から使用するためのラッパーモジュールです。
ChatGPT, 音声の文字起こし, テキストからの画像生成などの OpenAI の提供する機能を使用できます。

これはコミュニティベースの非公式モジュールであり OpenAI による提供ではありません


動作環境

  • 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

使用できる関数

共通

OpenAI

Chat

ガイド: Chat の使用方法

Assistants

ガイド: Assistants の使用方法
ガイド: Assistants と Vector Store を使用したファイル検索

Realtime

Guide: Realtime API の使用方法

[*] Windows と PowerShell 7.4 以上の組み合わせでのみ動作します

Images

Audio

Files

Others

Batch

ガイド: Batch の使用方法

Azure OpenAI Service


使い方

より詳細で複雑なシナリオの説明は Docs および Guides も参照してください。

ChatGPT (インタラクティブ)

コンソール上でインタラクティブにChatGPTと対話します。

$global:OPENAI_API_KEY = '<Put your API key here.>'
Enter-ChatGPT

Interactive Chat

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'

このような画像が出力されます。

Generated image

文脈を保ったままChatGPTと対話する

パイプライン経由で Request-ChatCompletion に対話の履歴を与えることで、文脈を維持したまま複数の質問を行うことができます。

PS C:\> $FirstQA = Request-ChatCompletion -Message "アメリカの人口は?"
PS C:\> Write-Output $FirstQA.Answer

2021年現在、アメリカ合衆国の人口は約33300万人です。

PS C:\> $SecondQA = $FirstQA | Request-ChatCompletion -Message "では日本は?"
PS C:\> Write-Output $SecondQA.Answer

2021年現在、日本の人口は約12600万人です。

PS C:\> $ThirdQA = $SecondQA | Request-ChatCompletion -Message 'アメリカと日本を比較すると?'
PS C:\> Write-Output $ThirdQA.Answer

アメリカと日本の人口は、約3倍以上の開きがあります。

ストリーム出力

デフォルトではサーバからのレスポンスがすべて完了してから結果がまとめて出力されるため、特に長い出力がある場合は、処理結果が得られるまでに時間がかかります。

-Streamオプションを使用するとChatGPTのWebUIのように結果はストリームとして逐次的に出力されるため、UXが改善する場合があります。現在-StreamオプションはRequest-ChatCompletionRequest-TextCompletionで使用可能です。

Request-ChatCompletion 'Describe ChatGPT in 100 charactors.' -Stream | Write-Host -NoNewline

Stream

一部が欠けた画像を復元する

一部がマスクされた画像を与え、推定された全体画像を出力させる例です。
与える画像はマスク部分が完全透過された正方形のPNG画像で、4MB未満でなければなりません。

Request-ImageEdit -Image 'C:\sunflower_masked.png' -Prompt 'sunflower' -OutFile 'C:\sunflower_restored.png' -Size 256x256

左が与えた画像、右が生成された画像です。

Source Generated
masked restored

モデレーション

テキストが 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 キーについて

ほぼ全ての関数で認証のための API キーが必要です.
OpenAI のアカウントを作成し、以下URLから API キーを取得する必要があります。
https://platform.openai.com/account/api-keys

関数に API キーを指定するには3種類の方法があります。

方法 1: 環境変数 OPENAI_API_KEY. (推奨)

API キーを環境変数 OPENAI_API_KEYに設定します。関数呼び出し時に暗黙的に使用されます。

PS C:> $env:OPENAI_API_KEY = '<Put your API key here.>'
PS C:> Request-ChatCompletion -Message "Who are you?"

方法 2: Global 変数 OPENAI_API_KEY

API キーを$global:OPENAI_API_KEY変数に設定します。関数呼び出し時に暗黙的に使用されます。

PS C:> $global:OPENAI_API_KEY = '<Put your API key here.>'
PS C:> Request-ChatCompletion -Message "Who are you?"

方法 3: 名前付きパラメータ

各関数の ApiKey パラメータに API キーを指定します。すべての関数呼び出しに都度指定する必要があります。

PS C:> Request-ChatCompletion -Message "Who are you?" -ApiKey '<Put your API key here.>'

Azure OpenAI Service

OpenAI ではなく Azure OpenAI Service を使用する場合は、AzureテナントにOpenAIリソースを作成し、APIキーとエンドポイントURLを取得する必要があります。詳細な手順はGuidesを参照してください。

Azure のサンプルコード

$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

変更履歴

CHANGELOG.ja.md


ライセンス

MIT ライセンス