File tree 3 files changed +65
-2
lines changed
3 files changed +65
-2
lines changed Original file line number Diff line number Diff line change @@ -22,9 +22,10 @@ The PowerShell AI module integrates with the OpenAI API and let's you easily acc
22
22
' Disable-ChatPersistence'
23
23
' Enable-AIShortCutKey'
24
24
' Enable-ChatPersistence'
25
- ' Get-DalleImage'
26
- ' Get-ChatCompletion'
25
+ ' Get-ChatCompletion'
27
26
' Get-ChatPersistence'
27
+ ' Get-CompletionFromMessages'
28
+ ' Get-DalleImage'
28
29
' Get-GPT3Completion'
29
30
' Get-GPT4Completion'
30
31
' Get-GPT4Response'
Original file line number Diff line number Diff line change
1
+ function Get-CompletionFromMessages {
2
+ param (
3
+ [Parameter (Mandatory )]
4
+ $Messages
5
+ )
6
+
7
+ $payload = (Get-ChatSessionOptions ).Clone()
8
+
9
+ $payload.messages = $messages
10
+ $payload = $payload | ConvertTo-Json - Depth 10
11
+
12
+ $body = [System.Text.Encoding ]::UTF8.GetBytes($payload )
13
+
14
+ if ((Get-ChatAPIProvider ) -eq ' OpenAI' ) {
15
+ $uri = Get-OpenAIChatCompletionUri
16
+ }
17
+ elseif ((Get-ChatAPIProvider ) -eq ' AzureOpenAI' ) {
18
+ $uri = Get-ChatAzureOpenAIURI
19
+ }
20
+
21
+ $result = Invoke-OpenAIAPI - Uri $uri - Method ' Post' - Body $body
22
+ $result.choices.message
23
+ }
Original file line number Diff line number Diff line change
1
+ Import-Module $PSScriptRoot \..\PowerShellAI.psd1 - Force
2
+
3
+ Describe " Get-CompletionFromMessages" - Tag " Get-CompletionFromMessages" {
4
+
5
+ It " tests the function Get-CompletionFromMessages exists" {
6
+ $actual = Get-Command Get-CompletionFromMessages - ErrorAction SilentlyContinue
7
+ $actual | Should -Not - BeNullOrEmpty
8
+ }
9
+
10
+ It " tests Get-CompletionFromMessages has a parameter named Messages" {
11
+ $actual = Get-Command Get-CompletionFromMessages - ErrorAction SilentlyContinue
12
+ $actual.Parameters.Keys | Should - Contain Messages
13
+ }
14
+
15
+ It " tests Get-CompletionFromMessages returns a response" {
16
+ Mock Invoke-RestMethodWithProgress - ModuleName PowerShellAI - ParameterFilter {
17
+ $Params.Method -eq ' Post' -and $Params.Uri -eq (Get-OpenAIChatCompletionUri )
18
+ } - MockWith {
19
+ [PSCustomObject ]@ {
20
+ choices = @ (
21
+ [PSCustomObject ]@ {
22
+ message = [PSCustomObject ]@ {
23
+ content = ' Mocked Get-GPT4Completion call'
24
+ }
25
+ }
26
+ )
27
+ }
28
+ }
29
+
30
+ $messages = $ (
31
+ New-ChatMessageTemplate - Role system " I am a bot"
32
+ New-ChatMessageTemplate - Role user " Hello"
33
+ )
34
+
35
+ $actual = Get-CompletionFromMessages - Messages $messages
36
+
37
+ $actual.content | Should - BeExactly " Mocked Get-GPT4Completion call"
38
+ }
39
+ }
You can’t perform that action at this time.
0 commit comments