38 instantiations of ChatRole
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatRole.cs (5)
20public static ChatRole System { get; } = new("system"); 23public static ChatRole Assistant { get; } = new("assistant"); 26public static ChatRole User { get; } = new("user"); 29public static ChatRole Tool { get; } = new("tool"); 94new(reader.GetString()!);
Microsoft.Extensions.AI.Abstractions.Tests (28)
ChatCompletion\ChatRoleTests.cs (28)
15Assert.Equal("abc", new ChatRole("abc").Value); 21Assert.Throws<ArgumentNullException>(() => new ChatRole(null!)); 22Assert.Throws<ArgumentException>(() => 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 (1)
AzureAIInferenceChatClient.cs (1)
264new ChatRole(role.ToString());
Microsoft.Extensions.AI.Ollama (2)
OllamaChatClient.cs (2)
130Role = chunk.Message?.Role is not null ? new ChatRole(chunk.Message.Role) : null, 226return new ChatMessage(new(message.Role), contents);
Microsoft.Extensions.AI.OpenAI (1)
OpenAIChatClient.cs (1)
371_ => new ChatRole(role.ToString()),
Microsoft.Extensions.AI.Tests (1)
ChatCompletion\DistributedCachingChatClientTest.cs (1)
43new(new ChatRole("fakeRole"), "This is some content")
227 references to ChatRole
Microsoft.Extensions.AI (12)
ChatCompletion\ChatClientStructuredOutputExtensions.cs (3)
70CompleteAsync<T>(chatClient, [new ChatMessage(ChatRole.User, chatMessage)], options, useNativeJsonSchema, cancellationToken); 93CompleteAsync<T>(chatClient, [new ChatMessage(ChatRole.User, chatMessage)], serializerOptions, options, useNativeJsonSchema, cancellationToken); 155promptAugmentation = new ChatMessage(ChatRole.System, $$"""
ChatCompletion\FunctionInvokingChatClient.cs (2)
313ChatMessage functionCallMessage = new(ChatRole.Assistant, [.. functionCallContents]); 525ChatMessage message = new(ChatRole.Tool, contents);
ChatCompletion\OpenTelemetryChatClient.cs (7)
225ChatRole? role = null; 236messages.Add(new ChatMessage(role ?? ChatRole.Assistant, items)); 452if (message.Role == ChatRole.Assistant) 457else if (message.Role == ChatRole.Tool) 473Log(new(1, message.Role == ChatRole.System ? OpenTelemetryConsts.GenAI.System.Message : OpenTelemetryConsts.GenAI.User.Message), 476Role = message.Role != ChatRole.System && message.Role != ChatRole.User && !string.IsNullOrWhiteSpace(message.Role.Value) ? message.Role.Value : null,
Microsoft.Extensions.AI.Abstractions (32)
ChatCompletion\ChatClientExtensions.cs (2)
29return client.CompleteAsync([new ChatMessage(ChatRole.User, chatMessage)], options, cancellationToken); 47return client.CompleteStreamingAsync([new ChatMessage(ChatRole.User, chatMessage)], options, cancellationToken);
ChatCompletion\ChatFinishReason.cs (1)
80/// <summary>Provides a <see cref="JsonConverter{ChatFinishReason}"/> for serializing <see cref="ChatRole"/> instances.</summary>
ChatCompletion\ChatMessage.cs (4)
27public ChatMessage(ChatRole role, string? content) 36ChatRole role, 51public ChatRole Role { get; set; } = ChatRole.User;
ChatCompletion\ChatRole.cs (24)
17public readonly struct ChatRole : IEquatable<ChatRole> 20public static ChatRole System { get; } = new("system"); 23public static ChatRole Assistant { get; } = new("assistant"); 26public static ChatRole User { get; } = new("user"); 29public static ChatRole Tool { get; } = new("tool"); 32/// Gets the value associated with this <see cref="ChatRole"/>. 40/// Initializes a new instance of the <see cref="ChatRole"/> struct with the provided value. 42/// <param name="value">The value to associate with this <see cref="ChatRole"/>.</param> 50/// Returns a value indicating whether two <see cref="ChatRole"/> instances are equivalent, as determined by a 53/// <param name="left"> the first <see cref="ChatRole"/> instance to compare.</param> 54/// <param name="right"> the second <see cref="ChatRole"/> instance to compare.</param> 56public static bool operator ==(ChatRole left, ChatRole right) 62/// Returns a value indicating whether two <see cref="ChatRole"/> instances are not equivalent, as determined by a 65/// <param name="left"> the first <see cref="ChatRole"/> instance to compare. </param> 66/// <param name="right"> the second <see cref="ChatRole"/> instance to compare. </param> 68public static bool operator !=(ChatRole left, ChatRole right) 75=> obj is ChatRole otherRole && Equals(otherRole); 78public bool Equals(ChatRole other) 88/// <summary>Provides a <see cref="JsonConverter{ChatRole}"/> for serializing <see cref="ChatRole"/> instances.</summary> 90public sealed class Converter : JsonConverter<ChatRole> 93public override ChatRole Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => 97public override void Write(Utf8JsonWriter writer, ChatRole value, JsonSerializerOptions options) =>
ChatCompletion\StreamingChatCompletionUpdate.cs (1)
36public ChatRole? Role { get; set; }
Microsoft.Extensions.AI.Abstractions.Tests (31)
ChatCompletion\ChatClientExtensionsTests.cs (2)
54Assert.Equal(ChatRole.User, m.Role); 81Assert.Equal(ChatRole.User, m.Role);
ChatCompletion\ChatCompletionTests.cs (5)
130new ChatMessage(ChatRole.Assistant, "Choice1"), 131new ChatMessage(ChatRole.Assistant, "Choice2"), 132new ChatMessage(ChatRole.Assistant, "Choice3"), 133new ChatMessage(ChatRole.Assistant, "Choice4"), 154Assert.Equal(ChatRole.Assistant, result.Choices[i].Role);
ChatCompletion\ChatMessageTests.cs (10)
19Assert.Equal(ChatRole.User, message.Role); 34ChatMessage message = new(ChatRole.Assistant, text); 36Assert.Equal(ChatRole.Assistant, message.Role); 59Assert.Throws<ArgumentNullException>("contents", () => new ChatMessage(ChatRole.User, (IList<AIContent>)null!)); 74ChatMessage message = new(ChatRole.System, content); 76Assert.Equal(ChatRole.System, message.Role); 124ChatMessage message = new(ChatRole.User, 149ChatMessage message = new(ChatRole.User, []); 163ChatMessage message = new(ChatRole.User, 298var chatMessageJson = JsonSerializer.Serialize(new ChatMessage(ChatRole.User, contents: items)
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)
70new() { Role = ChatRole.User, Text = "Message 1" }, 71new() { Role = ChatRole.User, Text = "Message 2" }
ChatCompletion\StreamingChatCompletionUpdateTests.cs (6)
40update.Role = ChatRole.Assistant; 41Assert.Equal(ChatRole.Assistant, update.Role); 91Role = ChatRole.User, 120Role = ChatRole.User, 168Role = ChatRole.Assistant, 208Assert.Equal(ChatRole.Assistant, result.Role);
Microsoft.Extensions.AI.AzureAIInference (10)
AzureAIInferenceChatClient.cs (10)
150ChatRole? streamedRole = default; 259private static ChatRole ToChatRole(global::Azure.AI.Inference.ChatRole role) => 260role.Equals(global::Azure.AI.Inference.ChatRole.System) ? ChatRole.System : 261role.Equals(global::Azure.AI.Inference.ChatRole.User) ? ChatRole.User : 262role.Equals(global::Azure.AI.Inference.ChatRole.Assistant) ? ChatRole.Assistant : 263role.Equals(global::Azure.AI.Inference.ChatRole.Tool) ? ChatRole.Tool : 423if (input.Role == ChatRole.System) 427else if (input.Role == ChatRole.Tool) 451else if (input.Role == ChatRole.User) 462else if (input.Role == ChatRole.Assistant)
Microsoft.Extensions.AI.AzureAIInference.Tests (9)
AzureAIInferenceChatClientTests.cs (9)
135Assert.Equal(ChatRole.Assistant, response.Message.Role); 205Assert.Equal(ChatRole.Assistant, updates[i].Role); 294new(ChatRole.System, "You are a really nice friend."), 295new(ChatRole.User, "hello!"), 296new(ChatRole.Assistant, "hi, how are you?"), 297new(ChatRole.User, "i'm good. how are you?"), 313Assert.Equal(ChatRole.Assistant, response.Message.Role); 419Assert.Equal(ChatRole.Assistant, response.Message.Role); 520Assert.Equal(ChatRole.Assistant, updates[i].Role);
Microsoft.Extensions.AI.Integration.Tests (17)
ChatClientIntegrationTests.cs (9)
58new(ChatRole.User, "Pick a city, any city"), 59new(ChatRole.Assistant, "Seattle"), 60new(ChatRole.User, "And another one"), 61new(ChatRole.Assistant, "Jakarta"), 62new(ChatRole.User, "What continent are they each in?"), 77new(ChatRole.User, "Quote, word for word, Neil Armstrong's famous words.") 265var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 282var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 308var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000");
PromptBasedFunctionCallingChatClient.cs (3)
66message.Role = ChatRole.User; 73message.Role = ChatRole.Assistant; 157existingToolPrompt = new ChatMessage(ChatRole.System, (string?)null);
ReducingChatClientTests.cs (5)
46new ChatMessage(ChatRole.User, "Hi there! Can you tell me about golden retrievers?"), 47new 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."), 48new ChatMessage(ChatRole.User, "What kind of exercise do they need?"), 49new 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."), 50new ChatMessage(ChatRole.User, "Are they good with kids?"),
Microsoft.Extensions.AI.Ollama.Tests (11)
OllamaChatClientTests.cs (11)
107Assert.Equal(ChatRole.Assistant, response.Message.Role); 174Assert.Equal(ChatRole.Assistant, updates[i].Role); 245new(ChatRole.User, "hello!"), 246new(ChatRole.Assistant, "hi, how are you?"), 247new(ChatRole.User, "i'm good. how are you?"), 269Assert.Equal(ChatRole.Assistant, response.Message.Role); 358Assert.Equal(ChatRole.Assistant, response.Message.Role); 444new(ChatRole.User, "How old is Alice?"), 445new(ChatRole.Assistant, [new FunctionCallContent("abcd1234", "GetPersonAge", new Dictionary<string, object?> { ["personName"] = "Alice" })]), 446new(ChatRole.Tool, [new FunctionResultContent("abcd1234", "GetPersonAge", 42)]), 456Assert.Equal(ChatRole.Assistant, response.Message.Role);
Microsoft.Extensions.AI.OpenAI (10)
OpenAIChatClient.cs (10)
191ChatRole? streamedRole = null; 364private static ChatRole ToChatRole(ChatMessageRole role) => 367ChatMessageRole.System => ChatRole.System, 368ChatMessageRole.User => ChatRole.User, 369ChatMessageRole.Assistant => ChatRole.Assistant, 370ChatMessageRole.Tool => ChatRole.Tool, 583if (input.Role == ChatRole.System) 587else if (input.Role == ChatRole.Tool) 611else if (input.Role == ChatRole.User) 623else if (input.Role == ChatRole.Assistant)
Microsoft.Extensions.AI.OpenAI.Tests (9)
OpenAIChatClientTests.cs (9)
177Assert.Equal(ChatRole.Assistant, response.Message.Role); 251Assert.Equal(ChatRole.Assistant, updates[i].Role); 339new(ChatRole.System, "You are a really nice friend."), 340new(ChatRole.User, "hello!"), 341new(ChatRole.Assistant, "hi, how are you?"), 342new(ChatRole.User, "i'm good. how are you?"), 358Assert.Equal(ChatRole.Assistant, response.Message.Role); 465Assert.Equal(ChatRole.Assistant, response.Message.Role); 569Assert.Equal(ChatRole.Assistant, updates[i].Role);
Microsoft.Extensions.AI.Tests (86)
ChatCompletion\ChatClientStructuredOutputExtensionsTests.cs (18)
19var expectedCompletion = new ChatCompletion([new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult))]) 42Assert.Equal(ChatRole.System, message.Role); 55var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 79var expectedCompletion = new ChatCompletion([new ChatMessage(ChatRole.Assistant, "This is not valid JSON")]); 85var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 98var expectedCompletion = new ChatCompletion([new ChatMessage(ChatRole.Assistant, "null")]); 104var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 117var expectedCompletion = new ChatCompletion([new ChatMessage(ChatRole.Assistant, [new ImageContent("https://example.com")])]); 123var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 137var expectedCompletion = new ChatCompletion([new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult))]); 159var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 179var expectedCompletion = new ChatCompletion([new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult))]); 193var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 217var expectedCompletion = new ChatCompletion([new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult, jso))]); 227Assert.Equal(ChatRole.System, message.Role); 239var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 263return Task.FromResult(new ChatCompletion([new ChatMessage(ChatRole.Assistant, resultDuplicatedJson)])); 267var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") };
ChatCompletion\DistributedCachingChatClientTest.cs (7)
85var result1 = await outer.CompleteAsync([new ChatMessage(ChatRole.User, "some input")]); 90var result2 = await outer.CompleteAsync([new ChatMessage(ChatRole.User, "some input")]); 97await outer.CompleteAsync([new ChatMessage(ChatRole.User, "some modified input")]); 113return new ChatCompletion([new(ChatRole.Assistant, "Hello")]); 122var result1 = outer.CompleteAsync([new ChatMessage(ChatRole.User, "some input")]); 123var result2 = outer.CompleteAsync([new ChatMessage(ChatRole.User, "some input")]); 134var result3 = outer.CompleteAsync([new ChatMessage(ChatRole.User, "some input")]);
ChatCompletion\FunctionInvokingChatClientTests.cs (51)
41new ChatMessage(ChatRole.User, "hello"), 42new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 43new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", "Func1", result: "Result 1")]), 44new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 45new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", "Func2", result: "Result 2: 42")]), 46new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 47new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", "VoidReturn", result: "Success: Function completed.")]), 48new ChatMessage(ChatRole.Assistant, "world"), 65new ChatMessage(ChatRole.User, "hello"), 66new ChatMessage(ChatRole.Assistant, [ 71new ChatMessage(ChatRole.Tool, [ 76new ChatMessage(ChatRole.Assistant, [ 79new ChatMessage(ChatRole.Tool, [ 82new ChatMessage(ChatRole.Assistant, "world"), 103new ChatMessage(ChatRole.User, "hello"), 104new ChatMessage(ChatRole.Assistant, [ 108new ChatMessage(ChatRole.Tool, [ 112new ChatMessage(ChatRole.Assistant, "done"), 136new ChatMessage(ChatRole.User, "hello"), 137new ChatMessage(ChatRole.Assistant, [ 141new ChatMessage(ChatRole.Tool, [ 145new ChatMessage(ChatRole.Assistant, "done"), 168new ChatMessage(ChatRole.User, "hello"), 169new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 170new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", "Func1", result: "Result 1")]), 171new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 172new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", "Func2", result: "Result 2: 42")]), 173new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 174new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", "VoidReturn", result: "Success: Function completed.")]), 175new ChatMessage(ChatRole.Assistant, "world"), 180new ChatMessage(ChatRole.User, "hello"), 181new ChatMessage(ChatRole.Assistant, "world") 215new ChatMessage(ChatRole.User, "hello"), 216new ChatMessage(ChatRole.Assistant, [new TextContent("extra"), new FunctionCallContent("callId1", "Func1"), new TextContent("stuff")]), 217new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", "Func1", result: "Result 1")]), 218new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 219new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", "Func2", result: "Result 2: 42")]), 220new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } }), new TextContent("more")]), 221new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", "VoidReturn", result: "Success: Function completed.")]), 222new ChatMessage(ChatRole.Assistant, "world"), 227new ChatMessage(ChatRole.User, "hello"), 228new ChatMessage(ChatRole.Assistant, [new TextContent("extra"), new TextContent("stuff")]), 229new ChatMessage(ChatRole.Assistant, "more"), 230new ChatMessage(ChatRole.Assistant, "world"), 260new ChatMessage(ChatRole.User, "hello"), 261new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 262new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", "Func1", result: detailedErrors ? "Error: Function failed. Exception: Oh no!" : "Error: Function failed.")]), 263new ChatMessage(ChatRole.Assistant, "world"), 281new(ChatRole.Assistant, [new FunctionCallContent("callId1", func1.Metadata.Name)]), 282new(ChatRole.Assistant, [new FunctionCallContent("callId2", func2.Metadata.Name)]), 289List<ChatMessage> chat = [new ChatMessage(ChatRole.User, "hello")];
ChatCompletion\LoggingChatClientTests.cs (2)
39return Task.FromResult(new ChatCompletion([new(ChatRole.Assistant, "blue whale")])); 48[new(ChatRole.User, "What's the biggest animal?")],
ChatCompletion\OpenTelemetryChatClientTests.cs (8)
42return new ChatCompletion([new ChatMessage(ChatRole.Assistant, "The blue whale, I think.")]) 67Role = ChatRole.Assistant, 99new(ChatRole.System, "You are a close friend."), 100new(ChatRole.User, "Hey!"), 101new(ChatRole.Assistant, [new FunctionCallContent("12345", "GetPersonName")]), 102new(ChatRole.Tool, [new FunctionResultContent("12345", "GetPersonName", "John")]), 103new(ChatRole.Assistant, "Hey John, what's up?"), 104new(ChatRole.User, "What's the biggest animal?")