OpenAI Chat with Function Calling
Why use OpenAI Function Calling?
OpenAI Chat with Function Calling allows you to extend the capabilities of the Language Model (LLM) by adding custom functions that can be called from within the chat session. This enables you to perform a wide range of tasks, such as accessing the current date/time, performing mathematical calculations, reading/writing files, and more.
By using custom functions, you can enhance the LLM's world knowledge and allow it to 'do stuff' that it wouldn't otherwise be able to do. This can be particularly useful when you need to interact with external systems or perform complex operations that are not natively supported by the LLM.
The ai chat
--built-in-functions
option enables CLI-provided "custom functions".
Prerequisites
Before you begin, you'll need to install the ai
CLI and set up Azure OpenAI.
Access information
Often, you need to access information that is not available to the OpenAI model. For example, you might want to know the current date and time, perform mathematical calculations, or read/write files. With custom functions provided by the CLI, you can easily access this information.
Perform actions
The ai dev new
command allows you to generate sample code that demonstrates how to use OpenAI Chat with Function Calling.
Prerequisites
Before you begin, you'll need to install the ai
CLI and set up Azure OpenAI.
List samples
AI - Azure AI CLI, Version 1.0.0
Copyright (c) 2024 Microsoft Corporation. All Rights Reserved.
Name Short Name Language
------------------------------------------------------ --------------------------------------------- --------------------------------
Environment Variables .env
Azure AI Inference Chat Completions (Streaming) az-inference-chat-streaming C#, Python
Helper Function Class Library helper-functions C#
OpenAI Assistants openai-asst C#, JavaScript, Python
OpenAI Assistants (Streaming) openai-asst-streaming C#, JavaScript, Python
OpenAI Assistants (w/ Code Interpreter) openai-asst-streaming-with-code C#, JavaScript, Python
OpenAI Assistants (w/ File Search) openai-asst-streaming-with-file-search C#, JavaScript, Python
OpenAI Assistants (w/ Functions) openai-asst-streaming-with-functions C#, JavaScript, Python
OpenAI Assistants Webpage openai-asst-webpage JavaScript, TypeScript
OpenAI Assistants Webpage (w/ Functions) openai-asst-webpage-with-functions JavaScript
OpenAI Chat Completions openai-chat C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (Streaming) openai-chat-streaming C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Data + AI Search) openai-chat-streaming-with-data C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Functions) openai-chat-streaming-with-functions C#, Go, JavaScript, Python
OpenAI Chat Webpage openai-chat-webpage JavaScript, TypeScript
OpenAI Chat Webpage (w/ Functions) openai-chat-webpage-with-functions JavaScript, TypeScript
OpenAI Chat Webpage (w/ Speech input/output) openai-chat-webpage-with-speech TypeScript
OpenAI Chat Webpage (w/ Functions + Speech) openai-chat-webpage-with-speech-and-functions TypeScript
Phi-3 Chat Completions (w/ ONNX) phi3-onnx-chat-streaming C#
Phi-3 Chat Completions (w/ ONNX + Functions) phi3-onnx-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (Streaming) sk-chat-streaming C#
Semantic Kernel Chat Completions (w/ Data + AI Search) sk-chat-streaming-with-data C#
Semantic Kernel Chat Completions (w/ Functions) sk-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (w/ Agents) sk-chat-with-agents C#
Speech-to-text speech-to-text C#, Python
Speech-to-text (w/ Continuous recognition) speech-to-text-continuous-reco C#, Python
Speech-to-text (w/ File input) speech-to-text-with-file C#, Python
Speech-to-text (w/ Keyword detection) speech-to-text-with-keyword C#, Python
Speech-to-text (w/ Translation) speech-to-text-with-translation C#, Python
Text-to-speech text-to-speech C#, Python
Text-to-speech (w/ File output) text-to-speech-with-file C#, Python
Generate, build, and run a sample
ai dev new openai-chat-streaming-with-functions --csharp
cd openai-chat-streaming-with-functions-cs
See the code; learn how it works...
Program.cs
OpenAIChatCompletionsCustomFunctions.cs
OpenAIChatCompletionsFunctionsStreamingClass.cs
List samples
AI - Azure AI CLI, Version 1.0.0
Copyright (c) 2024 Microsoft Corporation. All Rights Reserved.
Name Short Name Language
------------------------------------------------------ --------------------------------------------- --------------------------------
Environment Variables .env
Azure AI Inference Chat Completions (Streaming) az-inference-chat-streaming C#, Python
Helper Function Class Library helper-functions C#
OpenAI Assistants openai-asst C#, JavaScript, Python
OpenAI Assistants (Streaming) openai-asst-streaming C#, JavaScript, Python
OpenAI Assistants (w/ Code Interpreter) openai-asst-streaming-with-code C#, JavaScript, Python
OpenAI Assistants (w/ File Search) openai-asst-streaming-with-file-search C#, JavaScript, Python
OpenAI Assistants (w/ Functions) openai-asst-streaming-with-functions C#, JavaScript, Python
OpenAI Assistants Webpage openai-asst-webpage JavaScript, TypeScript
OpenAI Assistants Webpage (w/ Functions) openai-asst-webpage-with-functions JavaScript
OpenAI Chat Completions openai-chat C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (Streaming) openai-chat-streaming C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Data + AI Search) openai-chat-streaming-with-data C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Functions) openai-chat-streaming-with-functions C#, Go, JavaScript, Python
OpenAI Chat Webpage openai-chat-webpage JavaScript, TypeScript
OpenAI Chat Webpage (w/ Functions) openai-chat-webpage-with-functions JavaScript, TypeScript
OpenAI Chat Webpage (w/ Speech input/output) openai-chat-webpage-with-speech TypeScript
OpenAI Chat Webpage (w/ Functions + Speech) openai-chat-webpage-with-speech-and-functions TypeScript
Phi-3 Chat Completions (w/ ONNX) phi3-onnx-chat-streaming C#
Phi-3 Chat Completions (w/ ONNX + Functions) phi3-onnx-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (Streaming) sk-chat-streaming C#
Semantic Kernel Chat Completions (w/ Data + AI Search) sk-chat-streaming-with-data C#
Semantic Kernel Chat Completions (w/ Functions) sk-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (w/ Agents) sk-chat-with-agents C#
Speech-to-text speech-to-text C#, Python
Speech-to-text (w/ Continuous recognition) speech-to-text-continuous-reco C#, Python
Speech-to-text (w/ File input) speech-to-text-with-file C#, Python
Speech-to-text (w/ Keyword detection) speech-to-text-with-keyword C#, Python
Speech-to-text (w/ Translation) speech-to-text-with-translation C#, Python
Text-to-speech text-to-speech C#, Python
Text-to-speech (w/ File output) text-to-speech-with-file C#, Python
Generate, build, and run a sample
ai dev new openai-chat-streaming-with-functions --go
cd openai-chat-streaming-with-functions-go
See the code; learn how it works...
main.go
function_call_context.go
function_factory.go
openai_chat_completions_custom_functions.go
openai_chat_completions_functions_streaming_hello_world.go
List samples
AI - Azure AI CLI, Version 1.0.0
Copyright (c) 2024 Microsoft Corporation. All Rights Reserved.
Name Short Name Language
------------------------------------------------------ --------------------------------------------- --------------------------------
Environment Variables .env
Azure AI Inference Chat Completions (Streaming) az-inference-chat-streaming C#, Python
Helper Function Class Library helper-functions C#
OpenAI Assistants openai-asst C#, JavaScript, Python
OpenAI Assistants (Streaming) openai-asst-streaming C#, JavaScript, Python
OpenAI Assistants (w/ Code Interpreter) openai-asst-streaming-with-code C#, JavaScript, Python
OpenAI Assistants (w/ File Search) openai-asst-streaming-with-file-search C#, JavaScript, Python
OpenAI Assistants (w/ Functions) openai-asst-streaming-with-functions C#, JavaScript, Python
OpenAI Assistants Webpage openai-asst-webpage JavaScript, TypeScript
OpenAI Assistants Webpage (w/ Functions) openai-asst-webpage-with-functions JavaScript
OpenAI Chat Completions openai-chat C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (Streaming) openai-chat-streaming C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Data + AI Search) openai-chat-streaming-with-data C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Functions) openai-chat-streaming-with-functions C#, Go, JavaScript, Python
OpenAI Chat Webpage openai-chat-webpage JavaScript, TypeScript
OpenAI Chat Webpage (w/ Functions) openai-chat-webpage-with-functions JavaScript, TypeScript
OpenAI Chat Webpage (w/ Speech input/output) openai-chat-webpage-with-speech TypeScript
OpenAI Chat Webpage (w/ Functions + Speech) openai-chat-webpage-with-speech-and-functions TypeScript
Phi-3 Chat Completions (w/ ONNX) phi3-onnx-chat-streaming C#
Phi-3 Chat Completions (w/ ONNX + Functions) phi3-onnx-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (Streaming) sk-chat-streaming C#
Semantic Kernel Chat Completions (w/ Data + AI Search) sk-chat-streaming-with-data C#
Semantic Kernel Chat Completions (w/ Functions) sk-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (w/ Agents) sk-chat-with-agents C#
Speech-to-text speech-to-text C#, Python
Speech-to-text (w/ Continuous recognition) speech-to-text-continuous-reco C#, Python
Speech-to-text (w/ File input) speech-to-text-with-file C#, Python
Speech-to-text (w/ Keyword detection) speech-to-text-with-keyword C#, Python
Speech-to-text (w/ Translation) speech-to-text-with-translation C#, Python
Text-to-speech text-to-speech C#, Python
Text-to-speech (w/ File output) text-to-speech-with-file C#, Python
Generate, build, and run a sample
THE CLI does NOT currently generate Java samples for OpenAI Chat with Function Calling.
The OpenAI Java SDK does support OpenAI Function Calling
List samples
AI - Azure AI CLI, Version 1.0.0
Copyright (c) 2024 Microsoft Corporation. All Rights Reserved.
Name Short Name Language
------------------------------------------------------ --------------------------------------------- --------------------------------
Environment Variables .env
Azure AI Inference Chat Completions (Streaming) az-inference-chat-streaming C#, Python
Helper Function Class Library helper-functions C#
OpenAI Assistants openai-asst C#, JavaScript, Python
OpenAI Assistants (Streaming) openai-asst-streaming C#, JavaScript, Python
OpenAI Assistants (w/ Code Interpreter) openai-asst-streaming-with-code C#, JavaScript, Python
OpenAI Assistants (w/ File Search) openai-asst-streaming-with-file-search C#, JavaScript, Python
OpenAI Assistants (w/ Functions) openai-asst-streaming-with-functions C#, JavaScript, Python
OpenAI Assistants Webpage openai-asst-webpage JavaScript, TypeScript
OpenAI Assistants Webpage (w/ Functions) openai-asst-webpage-with-functions JavaScript
OpenAI Chat Completions openai-chat C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (Streaming) openai-chat-streaming C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Data + AI Search) openai-chat-streaming-with-data C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Functions) openai-chat-streaming-with-functions C#, Go, JavaScript, Python
OpenAI Chat Webpage openai-chat-webpage JavaScript, TypeScript
OpenAI Chat Webpage (w/ Functions) openai-chat-webpage-with-functions JavaScript, TypeScript
OpenAI Chat Webpage (w/ Speech input/output) openai-chat-webpage-with-speech TypeScript
OpenAI Chat Webpage (w/ Functions + Speech) openai-chat-webpage-with-speech-and-functions TypeScript
Phi-3 Chat Completions (w/ ONNX) phi3-onnx-chat-streaming C#
Phi-3 Chat Completions (w/ ONNX + Functions) phi3-onnx-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (Streaming) sk-chat-streaming C#
Semantic Kernel Chat Completions (w/ Data + AI Search) sk-chat-streaming-with-data C#
Semantic Kernel Chat Completions (w/ Functions) sk-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (w/ Agents) sk-chat-with-agents C#
Speech-to-text speech-to-text C#, Python
Speech-to-text (w/ Continuous recognition) speech-to-text-continuous-reco C#, Python
Speech-to-text (w/ File input) speech-to-text-with-file C#, Python
Speech-to-text (w/ Keyword detection) speech-to-text-with-keyword C#, Python
Speech-to-text (w/ Translation) speech-to-text-with-translation C#, Python
Text-to-speech text-to-speech C#, Python
Text-to-speech (w/ File output) text-to-speech-with-file C#, Python
Generate, build, and run a sample
ai dev new openai-chat-streaming-with-functions --javascript
cd openai-chat-streaming-with-functions-js
See the code; learn how it works...
Main.js
OpenAIChatCompletionsCustomFunctions.js
OpenAIChatCompletionsFunctionsStreamingClass.js
List samples
AI - Azure AI CLI, Version 1.0.0
Copyright (c) 2024 Microsoft Corporation. All Rights Reserved.
Name Short Name Language
------------------------------------------------------ --------------------------------------------- --------------------------------
Environment Variables .env
Azure AI Inference Chat Completions (Streaming) az-inference-chat-streaming C#, Python
Helper Function Class Library helper-functions C#
OpenAI Assistants openai-asst C#, JavaScript, Python
OpenAI Assistants (Streaming) openai-asst-streaming C#, JavaScript, Python
OpenAI Assistants (w/ Code Interpreter) openai-asst-streaming-with-code C#, JavaScript, Python
OpenAI Assistants (w/ File Search) openai-asst-streaming-with-file-search C#, JavaScript, Python
OpenAI Assistants (w/ Functions) openai-asst-streaming-with-functions C#, JavaScript, Python
OpenAI Assistants Webpage openai-asst-webpage JavaScript, TypeScript
OpenAI Assistants Webpage (w/ Functions) openai-asst-webpage-with-functions JavaScript
OpenAI Chat Completions openai-chat C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (Streaming) openai-chat-streaming C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Data + AI Search) openai-chat-streaming-with-data C#, Go, Java, JavaScript, Python
OpenAI Chat Completions (w/ Functions) openai-chat-streaming-with-functions C#, Go, JavaScript, Python
OpenAI Chat Webpage openai-chat-webpage JavaScript, TypeScript
OpenAI Chat Webpage (w/ Functions) openai-chat-webpage-with-functions JavaScript, TypeScript
OpenAI Chat Webpage (w/ Speech input/output) openai-chat-webpage-with-speech TypeScript
OpenAI Chat Webpage (w/ Functions + Speech) openai-chat-webpage-with-speech-and-functions TypeScript
Phi-3 Chat Completions (w/ ONNX) phi3-onnx-chat-streaming C#
Phi-3 Chat Completions (w/ ONNX + Functions) phi3-onnx-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (Streaming) sk-chat-streaming C#
Semantic Kernel Chat Completions (w/ Data + AI Search) sk-chat-streaming-with-data C#
Semantic Kernel Chat Completions (w/ Functions) sk-chat-streaming-with-functions C#
Semantic Kernel Chat Completions (w/ Agents) sk-chat-with-agents C#
Speech-to-text speech-to-text C#, Python
Speech-to-text (w/ Continuous recognition) speech-to-text-continuous-reco C#, Python
Speech-to-text (w/ File input) speech-to-text-with-file C#, Python
Speech-to-text (w/ Keyword detection) speech-to-text-with-keyword C#, Python
Speech-to-text (w/ Translation) speech-to-text-with-translation C#, Python
Text-to-speech text-to-speech C#, Python
Text-to-speech (w/ File output) text-to-speech-with-file C#, Python
Generate, build, and run a sample
ai dev new openai-chat-streaming-with-functions --python
cd openai-chat-streaming-with-functions-py
See the code; learn how it works...
main.py
openai_chat_completions_custom_functions.py
openai_chat_completions_functions_streaming.py