{"id":14063481,"url":"https://github.com/mkht/PSOpenAI","last_synced_at":"2025-07-29T15:33:56.530Z","repository":{"id":154039430,"uuid":"611242867","full_name":"mkht/PSOpenAI","owner":"mkht","description":"PowerShell module for OpenAI API.","archived":false,"fork":false,"pushed_at":"2024-10-29T12:02:25.000Z","size":22353,"stargazers_count":40,"open_issues_count":3,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-29T13:36:55.948Z","etag":null,"topics":["azureopenai","chatgpt","openai","powershell"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkht.png","metadata":{"files":{"readme":"README.ja.md","changelog":"CHANGELOG.ja.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-08T12:26:27.000Z","updated_at":"2024-10-29T12:02:29.000Z","dependencies_parsed_at":"2023-11-12T14:25:33.325Z","dependency_job_id":"f7252199-9a38-4aa8-b80c-c67ada6564f8","html_url":"https://github.com/mkht/PSOpenAI","commit_stats":null,"previous_names":[],"tags_count":74,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkht%2FPSOpenAI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkht%2FPSOpenAI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkht%2FPSOpenAI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkht%2FPSOpenAI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkht","download_url":"https://codeload.github.com/mkht/PSOpenAI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228028451,"owners_count":17858337,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azureopenai","chatgpt","openai","powershell"],"created_at":"2024-08-13T07:03:21.705Z","updated_at":"2024-12-04T01:30:58.614Z","avatar_url":"https://github.com/mkht.png","language":"PowerShell","funding_links":[],"categories":["PowerShell"],"sub_categories":[],"readme":"# PSOpenAI\r\n\r\nOpenAI および Azure OpenAI Service を PowerShell から使用するためのラッパーモジュールです。  \r\nChatGPT, 音声の文字起こし, テキストからの画像生成などの OpenAI の提供する機能を使用できます。\r\n\r\n**これはコミュニティベースの非公式モジュールであり OpenAI による提供ではありません**\r\n\r\n+ OpenAI API について  \r\nhttps://platform.openai.com/docs\r\n\r\n+ Azure OpenAI Service について  \r\nhttps://learn.microsoft.com/en-us/azure/ai-services/openai/overview\r\n\r\n----\r\n## 動作環境\r\n\r\n+ Windows PowerShell 5.1\r\n+ PowerShell 7 or higher\r\n+ Windows, macOS or Linux\r\n\r\n使用するには OpenAI のアカウントを作成し、以下URLから API キーを取得する必要があります。  \r\nhttps://platform.openai.com/account/api-keys\r\n\r\n----\r\n## インストール\r\n\r\n[PowerShell Gallery](https://www.powershellgallery.com/packages/PSOpenAI/) からインストールしてください。\r\n```Powershell\r\nInstall-Module -Name PSOpenAI\r\n```\r\n\r\n----\r\n## 使用できる関数\r\n\r\n### 共通\r\n+ [ConvertFrom-Token](/Docs/ConvertFrom-Token.md)\r\n+ [ConvertTo-Token](/Docs/ConvertTo-Token.md)\r\n+ [Get-CosineSimilarity](/Docs/Get-CosineSimilarity.md)\r\n+ [Get-OpenAIContext](/Docs/Get-OpenAIContext.md)\r\n+ [Set-OpenAIContext](/Docs/Set-OpenAIContext.md)\r\n+ [Clear-OpenAIContext](/Docs/Clear-OpenAIContext.md)\r\n\r\n### OpenAI\r\n#### Chat\r\n[ガイド: Chat の使用方法](/Guides/How_to_use_Chat.md)\r\n\r\n+ [Enter-ChatGPT](/Docs/Enter-ChatGPT.md)\r\n+ [Request-ChatCompletion](/Docs/Request-ChatCompletion.md)\r\n+ [New-ChatCompletionFunction](/Docs/New-ChatCompletionFunction.md)\r\n\r\n#### Assistants\r\n[ガイド: Assistants の使用方法](/Guides/How_to_use_Assistants.md)  \r\n[ガイド: Assistants と Vector Store を使用したファイル検索](/Guides/How_to_use_FileSearch_with_VectorStore.md)\r\n\r\n+ [Get-Assistant](/Docs/Get-Assistant.md)\r\n+ [New-Assistant](/Docs/New-Assistant.md)\r\n+ [Set-Assistant](/Docs/Set-Assistant.md)\r\n+ [Remove-Assistant](/Docs/Remove-Assistant.md)\r\n+ [Get-Thread](/Docs/Get-Thread.md)\r\n+ [New-Thread](/Docs/New-Thread.md)\r\n+ [Set-Thread](/Docs/Set-Thread.md)\r\n+ [Remove-Thread](/Docs/Remove-Thread.md)\r\n+ [Get-ThreadMessage](/Docs/Get-ThreadMessage.md)\r\n+ [Add-ThreadMessage](/Docs/Add-ThreadMessage.md)\r\n+ [Remove-ThreadMessage](/Docs/Remove-ThreadMessage.md)\r\n+ [Get-ThreadRun](/Docs/Get-ThreadRun.md)\r\n+ [Start-ThreadRun](/Docs/Start-ThreadRun.md)\r\n+ [Stop-ThreadRun](/Docs/Stop-ThreadRun.md)\r\n+ [Wait-ThreadRun](/Docs/Wait-ThreadRun.md)\r\n+ [Receive-ThreadRun](/Docs/Receive-ThreadRun.md)\r\n+ [Get-ThreadRunStep](/Docs/Get-ThreadRunStep.md)\r\n+ [Get-VectorStore](/Docs/Get-VectorStore.md)\r\n+ [New-VectorStore](/Docs/New-VectorStore.md)\r\n+ [Set-VectorStore](/Docs/Set-VectorStore.md)\r\n+ [Remove-VectorStore](/Docs/Remove-VectorStore.md)\r\n+ [Add-VectorStoreFile](/Docs/Add-VectorStoreFile.md)\r\n+ [Get-VectorStoreFile](/Docs/Get-VectorStoreFile.md)\r\n+ [Remove-VectorStoreFile](/Docs/Remove-VectorStoreFile.md)\r\n+ [Start-VectorStoreFileBatch](/Docs/Start-VectorStoreFileBatch.md)\r\n+ [Get-VectorStoreFileBatch](/Docs/Get-VectorStoreFileBatch.md)\r\n+ [Stop-VectorStoreFileBatch](/Docs/Stop-VectorStoreFileBatch.md)\r\n+ [Wait-VectorStoreFileBatch](/Docs/Wait-VectorStoreFileBatch.md)\r\n+ [Get-VectorStoreFileInBatch](/Docs/Get-VectorStoreFileInBatch.md)\r\n\r\n#### Realtime\r\n[Guide: Realtime API の使用方法](/Guides/How_to_use_Realtime_API.md)  \r\n\r\n+ [Connect-RealtimeSession](/Docs/Connect-RealtimeSession.md)\r\n+ [Disconnect-RealtimeSession](/Docs/Disconnect-RealtimeSession.md)\r\n+ [Set-RealtimeSessionCofiguration](/Docs/Set-RealtimeSessionCofiguration.md)\r\n+ [Send-RealtimeSessionEvent](/Docs/Send-RealtimeSessionEvent.md)\r\n+ [Add-RealtimeSessionItem](/Docs/Add-RealtimeSessionItem.md)\r\n+ [Remove-RealtimeSessionItem](/Docs/Remove-RealtimeSessionItem.md)\r\n+ [Request-RealtimeSessionResponse](/Docs/Request-RealtimeSessionResponse.md)\r\n+ [Stop-RealtimeSessionResponse](/Docs/Stop-RealtimeSessionResponse.md)\r\n+ [Start-RealtimeSessionAudioInput](/Docs/Start-RealtimeSessionAudioInput.md) *\r\n+ [Stop-RealtimeSessionAudioInput](/Docs/Stop-RealtimeSessionAudioInput.md) *\r\n+ [Start-RealtimeSessionAudioOutput](/Docs/Start-RealtimeSessionAudioInput.md) *\r\n+ [Stop-RealtimeSessionAudioOutput](/Docs/Stop-RealtimeSessionAudioInput.md) *\r\n\r\n\u003e [*] Windows と PowerShell 7.4 以上の組み合わせでのみ動作します\r\n\r\n#### Images\r\n+ [Request-ImageEdit](/Docs/Request-ImageEdit.md)\r\n+ [Request-ImageGeneration](/Docs/Request-ImageGeneration.md)\r\n+ [Request-ImageVariation](/Docs/Request-ImageVariation.md)\r\n\r\n#### Audio\r\n+ [Request-AudioSpeech](/Docs/Request-AudioSpeech.md)\r\n+ [Request-AudioTranscription](/Docs/Request-AudioTranscription.md)\r\n+ [Request-AudioTranslation](/Docs/Request-AudioTranslation.md)\r\n\r\n#### Files\r\n+ [Get-OpenAIFile](/Docs/Get-OpenAIFile.md)\r\n+ [Add-OpenAIFile](/Docs/Add-OpenAIFile.md)\r\n+ [Remove-OpenAIFile](/Docs/Remove-OpenAIFile.md)\r\n+ [Get-OpenAIFileContent](/Docs/Get-OpenAIFileContent.md)\r\n\r\n#### Others\r\n+ [Get-OpenAIModels](/Docs/Get-OpenAIModels.md)\r\n+ [Request-Embeddings](/Docs/Request-Embeddings.md)\r\n+ [Request-Moderation](/Docs/Request-Moderation.md)\r\n+ [Request-TextCompletion](/Docs/Request-TextCompletion.md)\r\n\r\n#### Batch\r\n[ガイド: Batch の使用方法](/Guides/How_to_use_Batch.md)\r\n\r\n+ [Start-Batch](/Docs/Start-Batch.md)\r\n+ [Get-Batch](/Docs/Get-Batch.md)\r\n+ [Wait-Batch](/Docs/Wait-Batch.md)\r\n+ [Stop-Batch](/Docs/Stop-Batch.md)\r\n+ [Get-BatchOutput](/Docs/Get-BatchOutput.md)\r\n\r\n### Azure OpenAI Service\r\n+ [ガイド: Azure OpenAI Service の使用方法](Guides/How_to_use_with_Azure_OpenAI_Service.md)\r\n\r\n----\r\n## 使い方\r\n\r\nより詳細で複雑なシナリオの説明は [Docs](/Docs) および [Guides](/Guides) も参照してください。\r\n\r\n### ChatGPT (インタラクティブ)\r\n\r\nコンソール上でインタラクティブにChatGPTと対話します。\r\n\r\n```PowerShell\r\n$global:OPENAI_API_KEY = '\u003cPut your API key here.\u003e'\r\nEnter-ChatGPT\r\n```\r\n\r\n![Interactive Chat](/Docs/images/InteractiveChat.gif)\r\n\r\n\r\n### ChatGPT (スクリプティング)\r\n\r\nChatGPTに質問をして回答を得ます。\r\n\r\n```PowerShell\r\n$global:OPENAI_API_KEY = '\u003cAPIキーをここに貼り付ける\u003e'\r\n$Result = Request-ChatCompletion -Message \"自己紹介をしてください\"\r\nWrite-Output $Result.Answer\r\n```\r\n\r\nこのような出力が得られます。\r\n\r\n```\r\nはじめまして、私はAIアシスタントのGPT-3です。人工知能のプログラムであり、自然言語処理を使って... (以下省略)\r\n```\r\n\r\n\u003e [!TIP]  \r\n\u003e デフォルトで使用するモデルはGPT-3.5-Turboです。  \r\n\u003e GPT-4oなど他のモデルを使用したい場合はモデル名を明示的に指定してください。  \r\n\u003e ```PowerShell\r\n\u003e Request-ChatCompletion -Message \"Who are you?\" -Model \"gpt-4o\"\r\n\u003e ```\r\n\u003e \r\n\r\n### 音声文字起こし\r\n\r\n音声ファイルからテキストに文字起こしをさせます。\r\n\r\n```PowerShell\r\n$global:OPENAI_API_KEY = '\u003cAPIキーをここに貼り付ける\u003e'\r\nRequest-AudioTranscription -File 'C:\\SampleData\\audio.mp3' -Format text\r\n```\r\n\r\n文字起こしの結果が出力されます。\r\n\r\n```\r\nPerhaps he made up to the party afterwards and took her and ...\r\n```\r\n\r\n### 画像生成\r\n\r\nテキストで指示を与えると、AIがそれっぽい画像を生成します。\r\n\r\n```PowerShell\r\n$global:OPENAI_API_KEY = '\u003cAPIキーをここに貼り付ける\u003e'\r\nRequest-ImageGeneration -Prompt 'かわいいライオンの子供' -Size 256x256 -OutFile 'C:\\output\\babylion.png'\r\n```\r\n\r\nこのような画像が出力されます。\r\n\r\n![Generated image](/Docs/images/babylion.png)\r\n\r\n\r\n### 文脈を保ったままChatGPTと対話する\r\n\r\nパイプライン経由で `Request-ChatCompletion` に対話の履歴を与えることで、文脈を維持したまま複数の質問を行うことができます。\r\n\r\n```PowerShell\r\nPS C:\\\u003e $FirstQA = Request-ChatCompletion -Message \"アメリカの人口は？\"\r\nPS C:\\\u003e Write-Output $FirstQA.Answer\r\n\r\n2021年現在、アメリカ合衆国の人口は約3億3300万人です。\r\n\r\nPS C:\\\u003e $SecondQA = $FirstQA | Request-ChatCompletion -Message \"では日本は？\"\r\nPS C:\\\u003e Write-Output $SecondQA.Answer\r\n\r\n2021年現在、日本の人口は約1億2600万人です。\r\n\r\nPS C:\\\u003e $ThirdQA = $SecondQA | Request-ChatCompletion -Message 'アメリカと日本を比較すると？'\r\nPS C:\\\u003e Write-Output $ThirdQA.Answer\r\n\r\nアメリカと日本の人口は、約3倍以上の開きがあります。\r\n```\r\n\r\n### ストリーム出力\r\n\r\nデフォルトではサーバからのレスポンスがすべて完了してから結果がまとめて出力されるため、特に長い出力がある場合は、処理結果が得られるまでに時間がかかります。\r\n\r\n`-Stream`オプションを使用するとChatGPTのWebUIのように結果はストリームとして逐次的に出力されるため、UXが改善する場合があります。現在`-Stream`オプションは`Request-ChatCompletion`と`Request-TextCompletion`で使用可能です。\r\n\r\n```PowerShell\r\nRequest-ChatCompletion 'Describe ChatGPT in 100 charactors.' -Stream | Write-Host -NoNewline\r\n```\r\n\r\n![Stream](/Docs/images/StreamOutput.gif)\r\n\r\n### 一部が欠けた画像を復元する\r\n\r\n一部がマスクされた画像を与え、推定された全体画像を出力させる例です。  \r\n与える画像はマスク部分が完全透過された正方形のPNG画像で、4MB未満でなければなりません。\r\n\r\n```PowerShell\r\nRequest-ImageEdit -Image 'C:\\sunflower_masked.png' -Prompt 'sunflower' -OutFile 'C:\\sunflower_restored.png' -Size 256x256\r\n```\r\n\r\n左が与えた画像、右が生成された画像です。\r\n\r\n| Source                                       | Generated                                        |\r\n| -------------------------------------------- | ------------------------------------------------ |\r\n| ![masked](/Docs/images/sunflower_masked.png) | ![restored](/Docs/images/sunflower_restored.png) |\r\n\r\n\r\n### モデレーション\r\n\r\nテキストが OpenAI のコンテンツポリシ－に抵触しているかテストします。\r\n\r\n\u003e 注意：モデレーションAPI は OpenAI への入力もしくは OpenAI からの出力結果をテストする目的に限り使用できます\r\n\r\n```PowerShell\r\nPS C:\\\u003e $Result = Request-Moderation -Text \"気に入らない人間を皆殺しにしてやる\"\r\nPS C:\\\u003e $Result.results.categories\r\n\r\n# True となっているカテゴリに抵触していることを示します\r\nsexual           : False\r\nhate             : True\r\nviolence         : True\r\nself-harm        : False\r\nsexual/minors    : False\r\nhate/threatening : False\r\nviolence/graphic : False\r\n```\r\n\r\n----\r\n## API キーについて\r\n\r\n+ [ガイド: APIキーとコンテキストについて](Guides/How_to_handle_API-keys_and_Context.md)\r\n\r\nほぼ全ての関数で認証のための API キーが必要です.  \r\nOpenAI のアカウントを作成し、以下URLから API キーを取得する必要があります。  \r\nhttps://platform.openai.com/account/api-keys\r\n\r\n関数に API キーを指定するには3種類の方法があります。\r\n\r\n### 方法 1: 環境変数 `OPENAI_API_KEY`. (推奨)\r\nAPI キーを環境変数 `OPENAI_API_KEY`に設定します。関数呼び出し時に暗黙的に使用されます。  \r\n\r\n```PowerShell\r\nPS C:\u003e $env:OPENAI_API_KEY = '\u003cPut your API key here.\u003e'\r\nPS C:\u003e Request-ChatCompletion -Message \"Who are you?\"\r\n```\r\n\r\n### 方法 2: Global 変数 `OPENAI_API_KEY`\r\nAPI キーを`$global:OPENAI_API_KEY`変数に設定します。関数呼び出し時に暗黙的に使用されます。\r\n\r\n```PowerShell\r\nPS C:\u003e $global:OPENAI_API_KEY = '\u003cPut your API key here.\u003e'\r\nPS C:\u003e Request-ChatCompletion -Message \"Who are you?\"\r\n```\r\n\r\n### 方法 3: 名前付きパラメータ\r\n各関数の `ApiKey` パラメータに API キーを指定します。すべての関数呼び出しに都度指定する必要があります。  \r\n\r\n```PowerShell\r\nPS C:\u003e Request-ChatCompletion -Message \"Who are you?\" -ApiKey '\u003cPut your API key here.\u003e'\r\n```\r\n\r\n## Azure OpenAI Service\r\nOpenAI ではなく Azure OpenAI Service を使用する場合は、AzureテナントにOpenAIリソースを作成し、APIキーとエンドポイントURLを取得する必要があります。詳細な手順はGuidesを参照してください。\r\n\r\n+ [How to use with Azure OpenAI Service](Guides/How_to_use_with_Azure_OpenAI_Service.md)\r\n\r\n### Azure のサンプルコード\r\n```powershell\r\n$global:OPENAI_API_KEY = '\u003cPut your api key here\u003e'\r\n$global:OPENAI_API_BASE  = 'https://\u003cresource-name\u003e.openai.azure.com/'\r\n\r\nRequest-ChatCompletion `\r\n  -Message 'Hello Azure OpenAI Service.' `\r\n  -Model 'gpt-4o' `\r\n  -ApiType Azure\r\n```\r\n\r\n----\r\n## 変更履歴\r\n\r\n[CHANGELOG.ja.md](/CHANGELOG.ja.md)\r\n\r\n----\r\n## ライセンス\r\n[MIT ライセンス](/LICENSE)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkht%2FPSOpenAI","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkht%2FPSOpenAI","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkht%2FPSOpenAI/lists"}