Last active
August 22, 2024 10:15
-
-
Save potatoqualitee/e7a44c19bbc80f46dc2ef525bc97c98e to your computer and use it in GitHub Desktop.
Structured Objects in PowerShell using PSOpenAI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
############# Install PSOpenAI and set your API key ############# | |
Install-Module PSOpenAI | |
Import-Module PSOpenAI # only when it's first installed | |
$env:OPENAI_API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxx' | |
############# Here's some markdown that'd be extracted from a PDF, however you want ############# | |
$markdown = "# Dog Shot Record | |
2309 Kelley Road, Gulfport, MS, 39501 | |
**CLINIC NAME** | |
Phone: 123-1234567 - Email: info@petshopname.com | |
## Dog's Information | |
- **Name:** Chewy | |
- **Age:** 5 | |
- **Date of Birth:** February 25, 2014 | |
- **Gender:** Male | |
- **Breed:** Labrador | |
- **Color:** Brown | |
## Owner's Information | |
- **Name:** Jane Doe | |
- **Address:** 1375 McDowell Street, Mount Pleasant, TN, 38474 | |
## Immunization Dates | |
| Vaccine | Immunization Date 1 | Immunization Date 2 | Immunization Date 3 | Veterinarian Name | | |
|----------------|---------------------|---------------------|---------------------|-------------------| | |
| Distemper | 02/01/2019 | | | John Smith | | |
| Measles | 02/01/2019 | | | John Smith | | |
| Parainfluenza | 02/01/2019 | | | John Smith | | |
| DHPP | 02/01/2019 | 09/01/2017 | 09/01/2018 | John Smith | | |
| Bordatella | 02/01/2019 | 09/01/2017 | 09/01/2018 | John Smith | | |
| Coronavirus | 02/01/2019 | 10/01/2017 | 09/01/2018 | John Smith | | |
| Leptospirosis | 02/01/2019 | 09/01/2017 | 09/01/2018 | John Smith | | |
| Lyme disease | 02/01/2019 | 10/01/2017 | 09/01/2018 | John Smith | | |
**Veterinarian Name:** John Smith | |
**Veterinarian Signature:** | |
**Date of Signature:** February 25, 2019" | |
############# Provide the JSON schema ############# | |
$jsonSchema = '{ | |
"name": "pet", | |
"strict": true, | |
"schema": { | |
"type": "object", | |
"properties": { | |
"pet_name": { | |
"type": "string", | |
"description": "What is the name of the pet?" | |
}, | |
"owner_name": { | |
"type": "string", | |
"description": "What is the name of the owner of the pet?" | |
}, | |
"pet_breed": { | |
"type": "string", | |
"description": "What is the breed of the pet?" | |
}, | |
"vaccinations": { | |
"type": "array", | |
"items": { | |
"type": "object", | |
"properties": { | |
"vaccine_name": { | |
"type": "string", | |
"description": "What is the name of the vaccine administered?" | |
}, | |
"date_administered_1": { | |
"type": "string", | |
"description": "When was the first dose of the vaccine administered?" | |
}, | |
"date_administered_2": { | |
"type": "string", | |
"description": "When was the second dose of the vaccine administered?" | |
}, | |
"date_administered_3": { | |
"type": "string", | |
"description": "When was the third dose of the vaccine administered?" | |
}, | |
"veterinarian": { | |
"type": "string", | |
"description": "Who is the veterinarian that administered the first dose?" | |
} | |
}, | |
"required": [ | |
"vaccine_name", | |
"date_administered_1", | |
"date_administered_2", | |
"date_administered_3", | |
"veterinarian" | |
], | |
"additionalProperties": false | |
}, | |
"description": "What vaccinations were given to the pet, including the vaccine names, administration dates, and veterinarian names?" | |
} | |
}, | |
"required": [ | |
"pet_name", | |
"owner_name", | |
"pet_breed", | |
"vaccinations" | |
], | |
"additionalProperties": false | |
} | |
}' | |
############# call dat ############# | |
$params = @{ | |
Model = "gpt-4o-2024-08-06" | |
SystemMessage = "You are an assistant that extracts information from pet vaccination records." | |
Message = $markdown | |
Format = "json_schema" | |
JsonSchema = $jsonSchema | |
} | |
$result = Request-ChatCompletion @params | |
$result.Answers | ConvertFrom-Json |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi Chrissie,
Just a heads up, line 55 breaks at pet's. At line 119 $result.Answer
Thanks for this! Definitely a game changer!!! 😃