This sample shows how to take a ChatGPT prompt as HTTP Get or Post input, calculates the completions using OpenAI ChatGPT service, and then returns the output plus caches in a Blob state store.
- .NET 7 SDK required and Visual Studio 2022 is strongly recommended
- Azure Functions Core Tools ``
- OpenAPI API key
- Export these secrets as Env Vars using values from Step 3.
Mac/Linux
export OPENAI_API_KEY=*Paste from step 3*
Windows
Search for Environment Variables in Settings, create new System Variables similarly to these instructions:
Variable | Value |
---|---|
OPENAI_API_KEY | Paste from step 3 |
- Add this local.settings.json file to the text_summarize folder to simplify local development and include Key from step 3
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"OPENAI_API_KEY": "*Paste from step 3*"
}
}
- Open a new terminal and do the following:
func start
- Using your favorite REST client, e.g. RestClient in VS Code, PostMan, curl, make a post.
test.http
has been provided to run this quickly.
Terminal:
curl -i -X POST http://localhost:7071/api/chat/ \
-H "Content-Type: text/json" \
--data-binary "@testdata.json"
testdata.json
{
"prompt": "Write a poem about Azure Functions. Include two reasons why users love them."
}
test.http
POST http://localhost:7071/api/chat HTTP/1.1
content-type: application/json
{
"prompt": "Write a poem about Azure Functions. Include two reasons why users love them."
}
You will see chat happen in the Terminal standard out, the HTTP response, and saved off to a Blob for state management in the samples-chatgpt-output
container.
- Open
chatgpt.sln
using Visual Studio 2022 or later. - Press Run/F5 to run in the debugger
- Use same approach above to test using an HTTP REST client
- Open this folder in a new terminal
- Open VS Code by entering
code .
in the terminal - Press Run/Debug (F5) to run in the debugger
- Use same approach above to test using an HTTP REST client
The key code that makes this work is as follows in ./chat_function.cs
. C# uses an HTTP REST API wrapper function called OpenAICreateCompletion
plus user defined Record types for convenience and type safety. You can customize this or learn more snippets using Examples and OpenAPI Playground. Choose CURL/HTTP as the language and set CreateDefaultCompletionRequest
values accordingly.
// call OpenAI ChatGPT API here with desired chat prompt
var completion = await OpenAICreateCompletion("text-davinci-003", GeneratePrompt(prompt), 0.9m, 64, logger);
var choice = completion.choices[0];
logger.LogInformation($"Completions result: {choice}");
response = req.CreateResponse(HttpStatusCode.OK);
await response.WriteAsJsonAsync<Choice>(choice);
return response;
The easiest way to deploy this app is using the Azure Dev CLI aka AZD. If you open this repo in GitHub CodeSpaces the AZD tooling is already preinstalled.
To provision and deploy:
azd up