45 instantiations of ChatRole
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatRole.cs (5)
22public static ChatRole System { get; } = new("system"); 25public static ChatRole Assistant { get; } = new("assistant"); 28public static ChatRole User { get; } = new("user"); 31public static ChatRole Tool { get; } = new("tool"); 96new(reader.GetString()!);
Microsoft.Extensions.AI.Abstractions.Tests (31)
ChatCompletion\ChatResponseTests.cs (1)
130ChatResponse response = new(new ChatMessage(new ChatRole("customRole"), "Text") { MessageId = "someMessage" })
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (2)
32new(new("human"), ", ") { AuthorName = "Someone", AdditionalProperties = new() { ["a"] = "b" } }, 56Assert.Equal(new ChatRole("human"), message.Role);
ChatCompletion\ChatRoleTests.cs (28)
15Assert.Equal("abc", new ChatRole("abc").Value); 21Assert.Throws<ArgumentNullException>("value", () => new ChatRole(null!)); 22Assert.Throws<ArgumentException>("value", () => new ChatRole(" ")); 28Assert.True(new ChatRole("abc").Equals(new ChatRole("ABC"))); 29Assert.True(new ChatRole("abc").Equals((object)new ChatRole("ABC"))); 30Assert.True(new ChatRole("abc") == new ChatRole("ABC")); 31Assert.False(new ChatRole("abc") != new ChatRole("ABC")); 33Assert.False(new ChatRole("abc").Equals(new ChatRole("def"))); 34Assert.False(new ChatRole("abc").Equals((object)new ChatRole("def"))); 35Assert.False(new ChatRole("abc").Equals(null)); 36Assert.False(new ChatRole("abc").Equals("abc")); 37Assert.False(new ChatRole("abc") == new ChatRole("def")); 38Assert.True(new ChatRole("abc") != new ChatRole("def")); 40Assert.Equal(new ChatRole("abc").GetHashCode(), new ChatRole("abc").GetHashCode()); 41Assert.Equal(new ChatRole("abc").GetHashCode(), new ChatRole("ABC").GetHashCode()); 42Assert.NotEqual(new ChatRole("abc").GetHashCode(), new ChatRole("def").GetHashCode()); // not guaranteed 57ChatRole role = new("abc");
Microsoft.Extensions.AI.AzureAIInference (2)
AzureAIInferenceChatClient.cs (2)
43private static ChatRole ChatRoleDeveloper { get; } = new("developer"); 274new ChatRole(role.ToString());
Microsoft.Extensions.AI.Ollama (1)
OllamaChatClient.cs (1)
283return new ChatMessage(new(message.Role), contents) { MessageId = responseId };
Microsoft.Extensions.AI.OpenAI (2)
OpenAIChatClient.cs (1)
624_ => new ChatRole(role.ToString()),
OpenAIClientExtensions.cs (1)
38internal static ChatRole ChatRoleDeveloper { get; } = new ChatRole("developer");
Microsoft.Extensions.AI.Tests (4)
ChatCompletion\DistributedCachingChatClientTest.cs (4)
48new ChatMessage(new ChatRole("fakeRole"), "This is some content") 251Role = new ChatRole("fakeRole2"), 264Role = new ChatRole("fakeRole2"), 685new ChatMessage(new ChatRole("fakeRole"),
477 references to ChatRole
Aspire.Azure.AI.OpenAI.Tests (1)
AspireAzureOpenAIClientBuilderChatClientExtensionsTests.cs (1)
221=> Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello from middleware")));
Aspire.OpenAI.Tests (1)
AspireOpenAIClientBuilderChatClientExtensionsTests.cs (1)
269=> Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello from middleware")));
Microsoft.Extensions.AI (9)
ChatCompletion\ChatClientStructuredOutputExtensions.cs (3)
74GetResponseAsync<T>(chatClient, new ChatMessage(ChatRole.User, chatMessage), options, useJsonSchemaResponseFormat, cancellationToken); 114GetResponseAsync<T>(chatClient, new ChatMessage(ChatRole.User, chatMessage), serializerOptions, options, useJsonSchemaResponseFormat, cancellationToken); 213promptAugmentation = new ChatMessage(ChatRole.User, $$"""
ChatCompletion\FunctionInvokingChatClient.cs (1)
763return [new(ChatRole.Tool, contents)];
ChatCompletion\OpenTelemetryChatClient.cs (5)
463if (message.Role == ChatRole.Assistant) 468else if (message.Role == ChatRole.Tool) 484Log(new(1, message.Role == ChatRole.System ? OpenTelemetryConsts.GenAI.System.Message : OpenTelemetryConsts.GenAI.User.Message), 487Role = message.Role != ChatRole.System && message.Role != ChatRole.User && !string.IsNullOrWhiteSpace(message.Role.Value) ? message.Role.Value : null,
Microsoft.Extensions.AI.Abstractions (37)
ChatCompletion\ChatClientExtensions.cs (2)
100return client.GetResponseAsync(new ChatMessage(ChatRole.User, chatMessage), options, cancellationToken); 140return client.GetStreamingResponseAsync(new ChatMessage(ChatRole.User, chatMessage), options, cancellationToken);
ChatCompletion\ChatMessage.cs (5)
21/// <remarks>The instance defaults to having a role of <see cref="ChatRole.User"/>.</remarks> 30public ChatMessage(ChatRole role, string? content) 38public ChatMessage(ChatRole role, IList<AIContent>? contents) 69public ChatRole Role { get; set; } = ChatRole.User;
ChatCompletion\ChatResponseExtensions.cs (3)
87list.Add(new ChatMessage(update.Role ?? ChatRole.Assistant, contentsList) 271message = new ChatMessage(ChatRole.Assistant, []); 288if (update.Role is ChatRole role)
ChatCompletion\ChatResponseUpdate.cs (3)
50public ChatResponseUpdate(ChatRole? role, string? content) 58public ChatResponseUpdate(ChatRole? role, IList<AIContent>? contents) 72public ChatRole? Role { get; set; }
ChatCompletion\ChatRole.cs (24)
19public readonly struct ChatRole : IEquatable<ChatRole> 22public static ChatRole System { get; } = new("system"); 25public static ChatRole Assistant { get; } = new("assistant"); 28public static ChatRole User { get; } = new("user"); 31public static ChatRole Tool { get; } = new("tool"); 34/// Gets the value associated with this <see cref="ChatRole"/>. 42/// Initializes a new instance of the <see cref="ChatRole"/> struct with the provided value. 44/// <param name="value">The value to associate with this <see cref="ChatRole"/>.</param> 52/// Returns a value indicating whether two <see cref="ChatRole"/> instances are equivalent, as determined by a 55/// <param name="left">The first <see cref="ChatRole"/> instance to compare.</param> 56/// <param name="right">The second <see cref="ChatRole"/> instance to compare.</param> 58public static bool operator ==(ChatRole left, ChatRole right) 64/// Returns a value indicating whether two <see cref="ChatRole"/> instances are not equivalent, as determined by a 67/// <param name="left">The first <see cref="ChatRole"/> instance to compare. </param> 68/// <param name="right">The second <see cref="ChatRole"/> instance to compare. </param> 70public static bool operator !=(ChatRole left, ChatRole right) 77=> obj is ChatRole otherRole && Equals(otherRole); 80public bool Equals(ChatRole other) 90/// <summary>Provides a <see cref="JsonConverter{ChatRole}"/> for serializing <see cref="ChatRole"/> instances.</summary> 92public sealed class Converter : JsonConverter<ChatRole> 95public override ChatRole Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => 99public override void Write(Utf8JsonWriter writer, ChatRole value, JsonSerializerOptions options) =>
Microsoft.Extensions.AI.Abstractions.Tests (30)
ChatCompletion\ChatClientExtensionsTests.cs (3)
112Assert.Equal(ChatRole.User, m.Role); 139Assert.Equal(ChatRole.User, m.Role); 146return YieldAsync([new ChatResponseUpdate(ChatRole.Assistant, "world")]);
ChatCompletion\ChatMessageTests.cs (10)
21Assert.Equal(ChatRole.User, message.Role); 36ChatMessage message = new(ChatRole.Assistant, text); 38Assert.Equal(ChatRole.Assistant, message.Role); 67message = new(ChatRole.User, (string?)null); 71message = new(ChatRole.User, (IList<AIContent>?)null); 75message = new ChatMessage(ChatRole.User, Array.Empty<AIContent>()); 92ChatMessage message = new(ChatRole.System, content); 94Assert.Equal(ChatRole.System, message.Role); 142ChatMessage message = new(ChatRole.User, 260var chatMessage = new ChatMessage(ChatRole.User, contents: items)
ChatCompletion\ChatResponseTests.cs (3)
87ChatResponse original = new(new ChatMessage(ChatRole.Assistant, "the message")) 103Assert.Equal(ChatRole.Assistant, result.Messages.Single().Role); 122ChatResponse response = new(new ChatMessage(ChatRole.Assistant, $"This is a test.{Environment.NewLine}It's multiple lines."));
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (1)
31new(ChatRole.Assistant, "Hello") { ResponseId = "someResponse", MessageId = "12345", CreatedAt = new DateTimeOffset(1, 2, 3, 4, 5, 6, TimeSpan.Zero), ModelId = "model123" },
ChatCompletion\ChatResponseUpdateTests.cs (5)
40update.Role = ChatRole.Assistant; 41Assert.Equal(ChatRole.Assistant, update.Role); 89Role = ChatRole.User, 118Role = ChatRole.Assistant, 158Assert.Equal(ChatRole.Assistant, result.Role);
ChatCompletion\ChatRoleTests.cs (6)
48Assert.Equal("assistant", ChatRole.Assistant.Value); 49Assert.Equal("system", ChatRole.System.Value); 50Assert.Equal("tool", ChatRole.Tool.Value); 51Assert.Equal("user", ChatRole.User.Value); 57ChatRole role = new("abc"); 61ChatRole? result = JsonSerializer.Deserialize(json, TestJsonSerializerContext.Default.ChatRole);
ChatCompletion\DelegatingChatClientTests.cs (2)
61new(ChatRole.User, "Message 1"), 62new(ChatRole.User, "Message 2")
Microsoft.Extensions.AI.AzureAIInference (11)
AzureAIInferenceChatClient.cs (11)
43private static ChatRole ChatRoleDeveloper { get; } = new("developer"); 146ChatRole? streamedRole = default; 268private static ChatRole ToChatRole(global::Azure.AI.Inference.ChatRole role) => 269role.Equals(global::Azure.AI.Inference.ChatRole.System) ? ChatRole.System : 270role.Equals(global::Azure.AI.Inference.ChatRole.User) ? ChatRole.User : 271role.Equals(global::Azure.AI.Inference.ChatRole.Assistant) ? ChatRole.Assistant : 272role.Equals(global::Azure.AI.Inference.ChatRole.Tool) ? ChatRole.Tool : 437if (input.Role == ChatRole.System) 445else if (input.Role == ChatRole.Tool) 468else if (input.Role == ChatRole.User) 485else if (input.Role == ChatRole.Assistant)
Microsoft.Extensions.AI.AzureAIInference.Tests (19)
AzureAIInferenceChatClientTests.cs (19)
145[new ChatMessage(ChatRole.User, "hello".Select(c => (AIContent)new TextContent(c.ToString())).ToList())] : 146[new ChatMessage(ChatRole.User, "hello")]; 158Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 218[new ChatMessage(ChatRole.User, "hello".Select(c => (AIContent)new TextContent(c.ToString())).ToList())] : 219[new ChatMessage(ChatRole.User, "hello")]; 241Assert.Equal(ChatRole.Assistant, updates[i].Role); 986new(ChatRole.System, "You are a really nice friend."), 987new(ChatRole.User, "hello!"), 988new(ChatRole.Assistant, "hi, how are you?"), 989new(ChatRole.User, "i'm good. how are you?"), 990new(ChatRole.Assistant, [new FunctionCallContent("abcd123", "GetMood")]), 991new(ChatRole.Tool, [new FunctionResultContent("abcd123", "happy")]), 1007Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1067Assert.NotNull(await client.GetResponseAsync([new(ChatRole.User, 1132new(ChatRole.Assistant, (string?)null), 1133new(ChatRole.User, "hello!"), 1142Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1258Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1354Assert.Equal(ChatRole.Assistant, updates[i].Role);
Microsoft.Extensions.AI.Evaluation (9)
ChatMessageExtensions.cs (6)
26/// last <see cref="ChatMessage"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 31/// <paramref name="messages"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 39messages.LastOrDefault() is ChatMessage lastMessage && lastMessage.Role == ChatRole.User 56/// last <see cref="ChatMessage"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 65/// <paramref name="messages"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 78lastMessage.Role == ChatRole.User)
EvaluatorExtensions.cs (3)
51modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse), 95userRequest: new ChatMessage(ChatRole.User, userRequest), 96modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse),
Microsoft.Extensions.AI.Evaluation.Integration.Tests (9)
SafetyEvaluatorTests.cs (6)
272Role = ChatRole.User, 310Role = ChatRole.Assistant, 344Role = ChatRole.User, 357Role = ChatRole.Assistant, 393Role = ChatRole.User, 406Role = ChatRole.Assistant,
test\Libraries\Microsoft.Extensions.AI.Evaluation.Tests\ChatMessageUtilities.cs (3)
9=> new ChatMessage(ChatRole.System, message); 12=> new ChatMessage(ChatRole.User, message); 15=> new ChatMessage(ChatRole.Assistant, message);
Microsoft.Extensions.AI.Evaluation.NLP.Tests (17)
BLEUEvaluatorTests.cs (6)
20var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "The quick brown fox jumps over the lazy dog.")); 36var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Completely unrelated sentence.")); 51var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Some text.")); 71var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 91var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 104var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, ""));
F1EvaluatorTests.cs (5)
20var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "The quick brown fox jumps over the lazy dog.")); 36var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Completely unrelated sentence.")); 51var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Some text.")); 71var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 84var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, ""));
GLEUEvaluatorTests.cs (6)
20var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "The quick brown fox jumps over the lazy dog.")); 36var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Completely unrelated sentence.")); 51var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Some text.")); 71var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 91var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 104var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, ""));
Microsoft.Extensions.AI.Evaluation.Quality (22)
CoherenceEvaluator.cs (2)
118List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 198evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
CompletenessEvaluator.cs (2)
126List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 190evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
EquivalenceEvaluator.cs (2)
123List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 175evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
FluencyEvaluator.cs (2)
110List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 178evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
GroundednessEvaluator.cs (2)
128List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 300evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
IntentResolutionEvaluator.cs (2)
172List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 317evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
RelevanceEvaluator.cs (2)
123List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 204evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
RelevanceTruthAndCompletenessEvaluator.cs (1)
264return [new ChatMessage(ChatRole.User, evaluationPrompt)];
RetrievalEvaluator.cs (2)
142List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 229evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
TaskAdherenceEvaluator.cs (1)
265List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, systemPrompt)];
ToolCallAccuracyEvaluator.cs (2)
171List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 222evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
Utilities\JsonOutputFixer.cs (2)
67new ChatMessage(ChatRole.System, SystemPrompt), 68new ChatMessage(ChatRole.User, fixPrompt)
Microsoft.Extensions.AI.Evaluation.Reporting (3)
ScenarioRunExtensions.cs (3)
36modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse), 65userRequest: new ChatMessage(ChatRole.User, userRequest), 66modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse),
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (8)
ResultStoreTester.cs (2)
34messages: [new ChatMessage(ChatRole.User, "User prompt")], 35modelResponse: new ChatResponse(new ChatMessage(ChatRole.Assistant, "LLM response")),
ScenarioRunResultTests.cs (4)
86messages: [new ChatMessage(ChatRole.User, "prompt")], 87modelResponse: new ChatResponse(new ChatMessage(ChatRole.Assistant, "response")), 177messages: [new ChatMessage(ChatRole.User, "prompt")], 178modelResponse: new ChatResponse(new ChatMessage(ChatRole.Assistant, "response")),
SerializationChainingTests.cs (2)
31Role = ChatRole.User, 50Assert.Equal(ChatRole.User, resp.ModelResponse.Messages[0].Role);
Microsoft.Extensions.AI.Evaluation.Safety (11)
ContentSafetyChatClient.cs (2)
78return new ChatResponse(new ChatMessage(ChatRole.Assistant, annotationResult)) 111yield return new ChatResponseUpdate(ChatRole.Assistant, annotationResult)
ContentSafetyEvaluator.cs (1)
142var payloadMessage = new ChatMessage(ChatRole.User, payload);
ContentSafetyServicePayloadUtilities.cs (8)
424if (message.Role == ChatRole.User) 433else if (message.Role == ChatRole.Assistant) 497$"{evaluatorName} only considers messages with role '{ChatRole.User}' and '{ChatRole.Assistant}'. " + 498$"The unsupported messages (which may include messages with role '{ChatRole.System}' and '{ChatRole.Tool}') were ignored.")]; 507$"These turns were either missing a message with role '{ChatRole.User}' or '{ChatRole.Assistant}'. " +
Microsoft.Extensions.AI.Evaluation.Tests (3)
ChatMessageUtilities.cs (3)
9=> new ChatMessage(ChatRole.System, message); 12=> new ChatMessage(ChatRole.User, message); 15=> new ChatMessage(ChatRole.Assistant, message);
Microsoft.Extensions.AI.Integration.Tests (34)
ChatClientIntegrationTests.cs (26)
69new(ChatRole.User, "Pick a city, any city"), 70new(ChatRole.Assistant, "Seattle"), 71new(ChatRole.User, "And another one"), 72new(ChatRole.Assistant, "Jakarta"), 73new(ChatRole.User, "What continent are they each in?"), 87new(ChatRole.System, []), 88new(ChatRole.User, []), 89new(ChatRole.Assistant, []), 90new(ChatRole.User, "What is 1 + 2? Reply with a single number."), 103new(ChatRole.User, "Quote, word for word, Neil Armstrong's famous words.") 161List<ChatMessage> history = [new(ChatRole.User, "Explain in 100 words how AI works")]; 168Assert.Equal(ChatRole.Assistant, history[1].Role); 184new(ChatRole.User, 202new(ChatRole.User, 232new(ChatRole.User, "What is the current secret number?") 299new(ChatRole.User, "What is the secret number for id foo?") 331new(ChatRole.User, "What is the secret number for John aged 19?") 361new(ChatRole.User, "Can you add bacon, lettuce, and tomatoes to Peter's shopping cart?") 640var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 656var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 681var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 733var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 772var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 814var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 842await chatClient.GetResponseAsync([new(ChatRole.User, "What's the biggest animal?")]); 941var response = await chatClient.GetResponseAsync([new(ChatRole.User, "What's the biggest animal?")]);
PromptBasedFunctionCallingChatClient.cs (3)
72chatMessagesList[messageIndex] = new ChatMessage(ChatRole.User, $"<tool_call_result>{toolCallResultJson}</tool_call_result>"); 77chatMessagesList[messageIndex] = new ChatMessage(ChatRole.Assistant, $"<tool_call_json>{toolCallJson}</tool_call_json>"); 186return new ChatMessage(ChatRole.System, prompt);
ReducingChatClientTests.cs (5)
47new ChatMessage(ChatRole.User, "Hi there! Can you tell me about golden retrievers?"), 48new ChatMessage(ChatRole.Assistant, "Of course! Golden retrievers are known for their friendly and tolerant attitudes. They're great family pets and are very intelligent and easy to train."), 49new ChatMessage(ChatRole.User, "What kind of exercise do they need?"), 50new ChatMessage(ChatRole.Assistant, "Golden retrievers are quite active and need regular exercise. Daily walks, playtime, and activities like fetching or swimming are great for them."), 51new ChatMessage(ChatRole.User, "Are they good with kids?"),
Microsoft.Extensions.AI.Ollama (1)
OllamaChatClient.cs (1)
315Role = ChatRole.System.Value,
Microsoft.Extensions.AI.Ollama.Tests (11)
OllamaChatClientTests.cs (11)
124Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 194Assert.Equal(ChatRole.Assistant, updates[i].Role); 269new(ChatRole.User, "hello!"), 270new(ChatRole.Assistant, "hi, how are you?"), 271new(ChatRole.User, "i'm good. how are you?"), 293Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 382Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 467new(ChatRole.User, "How old is Alice?"), 468new(ChatRole.Assistant, [new FunctionCallContent("abcd1234", "GetPersonAge", new Dictionary<string, object?> { ["personName"] = "Alice" })]), 469new(ChatRole.Tool, [new FunctionResultContent("abcd1234", 42)]), 479Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role);
Microsoft.Extensions.AI.OpenAI (32)
OpenAIAssistantChatClient.cs (6)
180Role = ChatRole.Assistant, 206yield return new(mcu.Role == MessageRole.User ? ChatRole.User : ChatRole.Assistant, mcu.Text) 224Role = ChatRole.Assistant, 389if (chatMessage.Role == ChatRole.System || 430chatMessage.Role == ChatRole.Assistant ? MessageRole.Assistant : MessageRole.User,
OpenAIChatClient.cs (11)
130if (input.Role == ChatRole.System || 131input.Role == ChatRole.User || 136input.Role == ChatRole.System ? new SystemChatMessage(parts) { ParticipantName = input.AuthorName } : 140else if (input.Role == ChatRole.Tool) 163else if (input.Role == ChatRole.Assistant) 297ChatRole? streamedRole = null; 616private static ChatRole FromOpenAIChatRole(ChatMessageRole role) => 619ChatMessageRole.System => ChatRole.System, 620ChatMessageRole.User => ChatRole.User, 621ChatMessageRole.Assistant => ChatRole.Assistant, 622ChatMessageRole.Tool => ChatRole.Tool,
OpenAIClientExtensions.cs (2)
37/// <summary>Gets a <see cref="ChatRole"/> for "developer".</summary> 38internal static ChatRole ChatRoleDeveloper { get; } = new ChatRole("developer");
OpenAIResponseChatClient.cs (13)
87Messages = [new(ChatRole.Assistant, [])], 173ChatRole? lastRole = null; 260lastRole = ChatRole.Assistant; 347/// <summary>Creates a <see cref="ChatRole"/> from a <see cref="MessageRole"/>.</summary> 348private static ChatRole ToChatRole(MessageRole? role) => 351MessageRole.System => ChatRole.System, 353MessageRole.User => ChatRole.User, 354_ => ChatRole.Assistant, 474if (input.Role == ChatRole.System || 480yield return input.Role == ChatRole.System ? 488if (input.Role == ChatRole.User) 494if (input.Role == ChatRole.Tool) 522if (input.Role == ChatRole.Assistant)
Microsoft.Extensions.AI.OpenAI.Tests (39)
OpenAIChatClientTests.cs (27)
165Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 253Assert.Equal(ChatRole.Assistant, updates[i].Role); 804new(ChatRole.System, "You are a really nice friend."), 805new(ChatRole.User, "hello!"), 806new(ChatRole.Assistant, "hi, how are you?"), 807new(ChatRole.User, "i'm good. how are you?"), 823Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 911new(ChatRole.System, [new TextContent("You are a really nice friend."), new TextContent("Really nice.")]), 912new(ChatRole.User, "hello!"), 921Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1007new(ChatRole.System, "You are a really nice friend."), 1008new(ChatRole.User, "hello!"), 1009new(ChatRole.Assistant, (string?)null), 1010new(ChatRole.User, "i'm good. how are you?"), 1019Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1132Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1216Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1326Assert.Equal(ChatRole.Assistant, updates[i].Role); 1449new(ChatRole.System, "You are a really nice friend."), 1450new(ChatRole.User, "hello!"), 1451new(ChatRole.Assistant, 1457new (ChatRole.Tool, 1462new(ChatRole.Assistant, "You are great."), 1463new(ChatRole.User, "Thanks!"), 1472Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 1569new(ChatRole.User, 1586Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role);
OpenAIConversionTests.cs (10)
87new(ChatRole.System, "You are a helpful assistant."), 88new(ChatRole.User, "Hello"), 89new(ChatRole.Assistant, 98new(ChatRole.Tool, [new FunctionResultContent("callid123", "theresult")]), 99new(ChatRole.Assistant, "The answer is 42."), 139new(ChatRole.System, "You are a helpful assistant."), 140new(ChatRole.User, "Hello"), 141new(ChatRole.Assistant, 150new(ChatRole.Tool, [new FunctionResultContent("callid123", "theresult")]), 151new(ChatRole.Assistant, "The answer is 42."),
OpenAIResponseClientTests.cs (2)
160Assert.Equal(ChatRole.Assistant, response.Messages.Single().Role); 277Assert.Equal(ChatRole.Assistant, updates[i].Role);
Microsoft.Extensions.AI.Tests (145)
ChatCompletion\ChatClientStructuredOutputExtensionsTests.cs (20)
23var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult, JsonContext2.Default.Animal))) 81var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 106var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult, JsonContext2.Default.Options))) 129Assert.Equal(ChatRole.User, message.Role); 142var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 167var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult, JsonContext2.Default.Options))); 201var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "This is not valid JSON")); 207var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 220var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "null")); 226var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 239var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, [new UriContent("https://example.com", "image/*")])); 245var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 259var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult, JsonContext2.Default.Options))); 273var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 294var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(payload, JsonContext2.Default.Options))); 301var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 326var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult, jso))); 369var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 393return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, resultDuplicatedJson))); 397var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") };
ChatCompletion\DistributedCachingChatClientTest.cs (23)
140return new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello")); 184var input = new ChatMessage(ChatRole.User, "abc"); 214return new ChatResponse(new ChatMessage(ChatRole.Assistant, "A good result")); 223var input = new ChatMessage(ChatRole.User, "abc"); 313new(ChatRole.Assistant, "This"), 314new(ChatRole.Assistant, " becomes one chunk"), 315new() { Role = ChatRole.Assistant, Contents = [new FunctionCallContent("callId1", "separator")] }, 316new(ChatRole.Assistant, "... and this"), 317new(ChatRole.Assistant, " becomes another"), 318new(ChatRole.Assistant, " one."), 368new() { Role = ChatRole.Assistant, Contents = [new TextContent("Hello")] }, 369new() { Role = ChatRole.Assistant, Contents = [new TextContent(" world, ")] }, 372Role = ChatRole.Assistant, 383Role = ChatRole.Assistant, 436new(ChatRole.Assistant, "Chunk 1"), 484() => new(ChatRole.Assistant, "Chunk 1"), 494var input = new ChatMessage(ChatRole.User, "abc"); 523[() => new(ChatRole.Assistant, "A good result")]); 532var input = new ChatMessage(ChatRole.User, "abc"); 559return new(new ChatMessage(ChatRole.Assistant, options!.AdditionalProperties!["someKey"]!.ToString())); 610return new(new ChatMessage(ChatRole.Assistant, innerCallCount.ToString())); 656return new(new ChatMessage(ChatRole.Assistant, options!.AdditionalProperties!["someKey"]!.ToString())); 744new ChatMessage(ChatRole.Assistant, [new TextContent("Hey")])));
ChatCompletion\FunctionInvokingChatClientTests.cs (86)
87new ChatMessage(ChatRole.User, "hello"), 88new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 89new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 90new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 91new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 92new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 93new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 94new ChatMessage(ChatRole.Assistant, "world"), 118new ChatMessage(ChatRole.User, "hello"), 119new ChatMessage(ChatRole.Assistant, 125new ChatMessage(ChatRole.Tool, 131new ChatMessage(ChatRole.Assistant, 136new ChatMessage(ChatRole.Tool, 141new ChatMessage(ChatRole.Assistant, "world"), 178new ChatMessage(ChatRole.User, "hello"), 179new ChatMessage(ChatRole.Assistant, 184new ChatMessage(ChatRole.Tool, 189new ChatMessage(ChatRole.Assistant, "done"), 222new ChatMessage(ChatRole.User, "hello"), 223new ChatMessage(ChatRole.Assistant, 228new ChatMessage(ChatRole.Tool, 233new ChatMessage(ChatRole.Assistant, "done"), 256new ChatMessage(ChatRole.User, "hello"), 257new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 258new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1 from delegate")]), 259new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 260new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42 from delegate")]), 261new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 262new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 263new ChatMessage(ChatRole.Assistant, "world"), 305new ChatMessage(ChatRole.User, "hello"), 306new ChatMessage(ChatRole.Assistant, [new FunctionCallContent($"callId0", "VoidReturn")]), 313plan.Add(new ChatMessage(ChatRole.Tool, [new FunctionResultContent($"callId{i}", result: "Success: Function completed.")])); 314plan.Add(new ChatMessage(ChatRole.Assistant, [new FunctionCallContent($"callId{(i + 1)}", "VoidReturn")])); 354new ChatMessage(ChatRole.User, "hello"), 432new ChatMessage(ChatRole.User, "hello"), 449var assistantMessage = new ChatMessage(ChatRole.Assistant, []); 450var toolMessage = new ChatMessage(ChatRole.Tool, []); 479new ChatMessage(ChatRole.User, "hello"), 480new ChatMessage(ChatRole.Assistant, [new TextContent("extra"), new FunctionCallContent("callId1", "Func1"), new TextContent("stuff")]), 481new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 1")]), 482new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 483new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 484new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } }), new TextContent("more")]), 485new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 486new ChatMessage(ChatRole.Assistant, "world"), 516new ChatMessage(ChatRole.User, "hello"), 517new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 518new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: detailedErrors ? "Error: Function failed. Exception: Oh no!" : "Error: Function failed.")]), 519new ChatMessage(ChatRole.Assistant, "world"), 538new ChatMessage(ChatRole.User, "hello"), 539new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["arg1"] = "value1" })]), 540new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 541new ChatMessage(ChatRole.Assistant, "world"), 594new ChatMessage(ChatRole.User, "hello"), 595new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["arg1"] = "value1" })]), 596new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 597new ChatMessage(ChatRole.Assistant, "world"), 655new(ChatRole.User, "Hello"), 713new(ChatRole.User, "Hello"), 723new(ChatRole.Assistant, [new FunctionCallContent($"callId{chatContents.Count()}", "Func1")]) : 724new(ChatRole.Assistant, "The answer is 42."); 771new ChatMessage(ChatRole.User, "hello"), 772new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["i"] = 41 })]), 773new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 41")]), 774new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["i"] = 42 })]), 775new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 42")]), 782new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "Func1", new Dictionary<string, object?> { ["i"] = 43 })]), 783new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Result 43")]), 784new ChatMessage(ChatRole.Assistant, "world"), 838var existingSearchResult = chatContents.SingleOrDefault(m => m.Role == ChatRole.Tool); 847var message = new ChatMessage(ChatRole.Assistant, resultContents); 855List<ChatMessage> messages = [new(ChatRole.User, "hello")]; 862Assert.Equal(ChatRole.Tool, lastMessage.Role); 890return new ChatResponse(new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId-abc", "Func1")])) 898return new ChatResponse(new ChatMessage(ChatRole.Assistant, "done!")); 927new ChatMessage(ChatRole.User, "hello"), 928new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["arg1"] = "value1" })]), 929new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 930new ChatMessage(ChatRole.Assistant, "world"), 956new ChatMessage(ChatRole.User, "hello"), 957new ChatMessage(ChatRole.Assistant, [ 961new ChatMessage(ChatRole.Tool, 966new ChatMessage(ChatRole.Assistant, "world"), 1030var message = new ChatMessage(ChatRole.Assistant, [.. plan[contents.Count()].Contents]) 1124ChatMessage message = new(ChatRole.Assistant, [.. plan[contents.Count()].Contents])
ChatCompletion\LoggingChatClientTests.cs (5)
59return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "blue whale"))); 69[new(ChatRole.User, "What's the biggest animal?")], 108yield return new(ChatRole.Assistant, "blue "); 109yield return new(ChatRole.Assistant, "whale"); 118[new(ChatRole.User, "What's the biggest animal?")],
ChatCompletion\OpenTelemetryChatClientTests.cs (8)
41return new ChatResponse(new ChatMessage(ChatRole.Assistant, "The blue whale, I think.")) 72yield return new ChatResponseUpdate(ChatRole.Assistant, text) 110new(ChatRole.System, "You are a close friend."), 111new(ChatRole.User, "Hey!"), 112new(ChatRole.Assistant, [new FunctionCallContent("12345", "GetPersonName")]), 113new(ChatRole.Tool, [new FunctionResultContent("12345", "John")]), 114new(ChatRole.Assistant, "Hey John, what's up?"), 115new(ChatRole.User, "What's the biggest animal?")
ChatCompletion\UseDelegateChatClientTests.cs (3)
42return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "hello"))); 91return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "hello"))); 184return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "non-streaming hello")));
Microsoft.ML.GenAI.Core (2)
CausalLMPipelineChatClient.cs (2)
47var chatMessage = new ChatMessage(ChatRole.Assistant, output); 73yield return new(ChatRole.Assistant, output)
Microsoft.ML.GenAI.Core.Tests (3)
CausalLMDatasetTest.cs (3)
86new ChatMessage(ChatRole.System, "You are a helpful contoso assistant"), 87new ChatMessage(ChatRole.User, "What is contoso"), 93new ChatMessage(ChatRole.Assistant, "Contoso is a company"),
Microsoft.ML.GenAI.LLaMA (6)
Llama3_1ChatTemplateBuilder.cs (6)
93var availableRoles = new[] { ChatRole.System, ChatRole.User, ChatRole.Assistant }; 112_ when message.Role == ChatRole.System => $"<|start_header_id|>system<|end_header_id|>{Newline}{content.Trim()}<|eot_id|>{Newline}", 113_ when message.Role == ChatRole.User => $"<|start_header_id|>user<|end_header_id|>{Newline}{content.Trim()}<|eot_id|>{Newline}", 114_ when message.Role == ChatRole.Assistant => $"<|start_header_id|>assistant<|end_header_id|>{Newline}{content.Trim()}<|eot_id|>{Newline}",
Microsoft.ML.GenAI.LLaMA.Tests (3)
LLaMA3_1Tests.cs (3)
134new ChatMessage(ChatRole.System, "You are a helpful AI assistant."), 135new ChatMessage(ChatRole.User, "Hello?"), 136new ChatMessage(ChatRole.Assistant, "World!"),
Microsoft.ML.GenAI.Phi (6)
Phi3\Phi3ChatTemplateBuilder.cs (6)
94var availableRoles = new[] { ChatRole.System, ChatRole.User, ChatRole.Assistant }; 115_ when message.Role == ChatRole.System => $"<|system|>{Newline}{content}<|end|>{Newline}", 116_ when message.Role == ChatRole.User => $"<|user|>{Newline}{content}<|end|>{Newline}", 117_ when message.Role == ChatRole.Assistant => $"<|assistant|>{Newline}{content}<|end|>{Newline}",
Microsoft.ML.GenAI.Samples (5)
Llama\SFT_Llama_3_2_1B.cs (3)
107new ChatMessage(ChatRole.System, "You are a helpful contoso assistant"), 108new ChatMessage(ChatRole.User, data.input), 111var assistantMessage = new ChatMessage(ChatRole.Assistant, data.output);
MEAI\Llama3_1.cs (1)
47var chatMessage = new ChatMessage(ChatRole.User, task);
MEAI\Phi3.cs (1)
37var chatMessage = new ChatMessage(ChatRole.User, task);