--- title: Chat & Text Models --- classDiagram %% Use https://mermaid.live/ to preview this diagram. The VS Code extension does not handle namespaces. direction LR namespace Microsoft_SemanticKernel { class KernelContent { <> +InnerContent : Object +ModelId : String +Metadata : IDictionary +string(modelContent : KernelContent) } class StreamingKernelContent { <> +ChoiceIndex : Integer +InnerContent : Object +Metadata : IDictionary +ToString() +ToByteArray() +string(modelContent : StreamingKernelContent) } class TextContent { +Text : String +Encoding : Encoding +ToString() } class StreamingTextContent { +Text : String +Encoding : Encoding +ToString() +ToByteArray() } class ChatMessageContent { +Role : AuthorRole +Content : String +Items : ChatMessageContentItemCollection +Encoding : Encoding +ToString() } class StreamingChatMessageContent { +Content : String +Role : AuthorRole +Encoding : Encoding +ToString() +ToByteArray() } class ImageContent { +Uri : Uri +ToString() } } namespace Microsoft_SemanticKernel_ChatCompletion { class ChatMessageContentItemCollection { +Count +Add(item: KernelContent) } class ChatHistory { +AddMessage(chatMessageContent : ChatMessageContent) +AddMessage(authorRole : AuthorRole, content : string, encoding : Encoding, metadata : IDictionary) +AddUserMessage(content : string) +AddAssistantMessage(content : string) +AddSystemMessage(content : string) } } namespace Microsoft_SemanticKernel_Connectors_OpenAI { class OpenAIChatMessageContent { +FunctionCall : FunctionCall +Name : Name +GetOpenAIFunctionResponse() } class AzureOpenAIWithDataChatMessageContent { +ToolContent : String } class OpenAIStreamingTextContent { +ToByteArray() +ToString() } class OpenAIStreamingChatMessageContent { +Name : String +FunctionName : String +FunctionArgument : String +ToByteArray() +ToString() +GetOpenAIStreamingFunctionResponse(fullContent : OpenAIStreamingChatMessageContent[]) } class AzureOpenAIWithDataStreamingChatMessageContent { +FunctionName : String +FunctionArgument : String -IsValidMessage(message : ChatWithDataStreamingMessage) } class OpenAIChatHistory { } } KernelContent <|-- TextContent KernelContent <|-- ImageContent KernelContent <|-- ChatMessageContent KernelContent *-- ChatMessageContentItemCollection ChatMessageContent <|-- OpenAIChatMessageContent ChatMessageContent <|-- AzureOpenAIWithDataChatMessageContent StreamingKernelContent <|-- StreamingTextContent StreamingTextContent <|-- OpenAIStreamingTextContent StreamingKernelContent <|-- StreamingChatMessageContent StreamingChatMessageContent <|-- OpenAIStreamingChatMessageContent StreamingChatMessageContent <|-- AzureOpenAIWithDataStreamingChatMessageContent ChatHistory <|-- OpenAIChatHistory ChatMessageContent o-- ChatMessageContentItemCollection