Skip to content

Commit 63738ff

Browse files
committed
Added Get-CompletionFromMessages
1 parent 075f704 commit 63738ff

File tree

3 files changed

+65
-2
lines changed

3 files changed

+65
-2
lines changed

PowerShellAI.psd1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ The PowerShell AI module integrates with the OpenAI API and let's you easily acc
2222
'Disable-ChatPersistence'
2323
'Enable-AIShortCutKey'
2424
'Enable-ChatPersistence'
25-
'Get-DalleImage'
26-
'Get-ChatCompletion'
25+
'Get-ChatCompletion'
2726
'Get-ChatPersistence'
27+
'Get-CompletionFromMessages'
28+
'Get-DalleImage'
2829
'Get-GPT3Completion'
2930
'Get-GPT4Completion'
3031
'Get-GPT4Response'

Public/Get-CompletionFromMessages.ps1

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
}

0 commit comments

Comments
 (0)