microsoft/teams.net

Public

mirrored fromhttps://github.com/microsoft/teams.netAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
8e11e5e231765b6fbeae91b4033a354e2340d0af

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

Libraries/Microsoft.Teams.AI.Models.OpenAI/Extensions/UserMessage.cs

51lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4using Microsoft.Teams.AI.Messages;
5
6using OpenAI.Chat;
7
8namespace Microsoft.Teams.AI.Models.OpenAI;
9
10public static partial class MessageExtensions
11{
12 public static UserMessage<IEnumerable<IContent>> ToTeams(this UserChatMessage message)
13 {
14 var parts = message.Content.Select<ChatMessageContentPart, IContent>(part =>
15 {
16 if (part.Kind == ChatMessageContentPartKind.Text)
17 {
18 return new TextContent() { Text = part.Text };
19 }
20
21 return new ImageContent() { ImageUrl = part.ImageUri.ToString() };
22 });
23
24 return new(parts);
25 }
26
27 public static UserChatMessage ToOpenAI(this UserMessage<IEnumerable<IContent>> message)
28 {
29 var parts = message.Content.Select(part =>
30 {
31 if (part is TextContent text)
32 {
33 return ChatMessageContentPart.CreateTextPart(text.Text);
34 }
35
36 if (part is ImageContent image)
37 {
38 return ChatMessageContentPart.CreateImagePart(new Uri(image.ImageUrl));
39 }
40
41 throw new Exception("invalid content part");
42 });
43
44 return ChatMessage.CreateUserMessage(parts);
45 }
46
47 public static UserChatMessage ToOpenAI(this UserMessage<string> message)
48 {
49 return ChatMessage.CreateUserMessage(message.Content);
50 }
51}