12 implementations of IChatClient
Microsoft.Extensions.AI.Abstractions (1)
Microsoft.Extensions.AI.Abstractions.Tests (1)
Microsoft.Extensions.AI.Evaluation.Safety (1)
Microsoft.Extensions.AI.Integration.Tests (3)
Microsoft.Extensions.AI.OpenAI (3)
Microsoft.Extensions.AI.Tests (1)
Microsoft.Extensions.DataIngestion.Tests (1)
Microsoft.ML.GenAI.Core (1)
568 references to IChatClient
Aspire.Azure.AI.Inference (7)
Aspire.Azure.AI.Inference.Tests (8)
Aspire.Azure.AI.OpenAI.Tests (25)
Aspire.Dashboard (5)
Aspire.OpenAI (8)
Aspire.OpenAI.Tests (25)
Microsoft.Extensions.AI (110)
ChatCompletion\AnonymousDelegatingChatClient.cs (6)
21private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? _getResponseFunc;
29private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? _getStreamingResponseFunc;
50IChatClient innerClient,
76IChatClient innerClient,
77Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? getResponseFunc,
78Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc)
ChatCompletion\ChatClientBuilder.cs (34)
12/// <summary>A builder for creating pipelines of <see cref="IChatClient"/>.</summary>
15private readonly Func<IServiceProvider, IChatClient> _innerClientFactory;
18private List<Func<IChatClient, IServiceProvider, IChatClient>>? _clientFactories;
21/// <param name="innerClient">The inner <see cref="IChatClient"/> that represents the underlying backend.</param>
23public ChatClientBuilder(IChatClient innerClient)
30/// <param name="innerClientFactory">A callback that produces the inner <see cref="IChatClient"/> that represents the underlying backend.</param>
31public ChatClientBuilder(Func<IServiceProvider, IChatClient> innerClientFactory)
36/// <summary>Builds an <see cref="IChatClient"/> that represents the entire pipeline. Calls to this instance will pass through each of the pipeline stages in turn.</summary>
38/// The <see cref="IServiceProvider"/> that should provide services to the <see cref="IChatClient"/> instances.
41/// <returns>An instance of <see cref="IChatClient"/> that represents the entire pipeline.</returns>
42public IChatClient Build(IServiceProvider? services = null)
45var chatClient = _innerClientFactory(services);
57$"Ensure that the callbacks passed to {nameof(Use)} return non-null {nameof(IChatClient)} instances.");
70public ChatClientBuilder Use(Func<IChatClient, IChatClient> clientFactory)
82public ChatClientBuilder Use(Func<IChatClient, IServiceProvider, IChatClient> clientFactory)
92/// an implementation for both <see cref="IChatClient.GetResponseAsync"/> and <see cref="IChatClient.GetStreamingResponseAsync"/>.
95/// A delegate that provides the implementation for both <see cref="IChatClient.GetResponseAsync"/> and
96/// <see cref="IChatClient.GetStreamingResponseAsync"/>. This delegate is invoked with the list of chat messages, the chat
117/// an implementation for both <see cref="IChatClient.GetResponseAsync"/> and <see cref="IChatClient.GetStreamingResponseAsync"/>.
120/// A delegate that provides the implementation for <see cref="IChatClient.GetResponseAsync"/>. When <see langword="null"/>,
121/// <paramref name="getStreamingResponseFunc"/> must be non-null, and the implementation of <see cref="IChatClient.GetResponseAsync"/>
125/// A delegate that provides the implementation for <see cref="IChatClient.GetStreamingResponseAsync"/>. When <see langword="null"/>,
126/// <paramref name="getResponseFunc"/> must be non-null, and the implementation of <see cref="IChatClient.GetStreamingResponseAsync"/>
132/// <paramref name="getResponseFunc"/> will provide the implementation of <see cref="IChatClient.GetResponseAsync"/>, and
133/// <paramref name="getStreamingResponseFunc"/> will provide the implementation of <see cref="IChatClient.GetStreamingResponseAsync"/>.
135/// is supplied without <paramref name="getStreamingResponseFunc"/>, the implementation of <see cref="IChatClient.GetStreamingResponseAsync"/>
138/// <see cref="IChatClient.GetResponseAsync"/> will be implemented by combining the updates from <paramref name="getStreamingResponseFunc"/>.
143Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? getResponseFunc,
144Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc)
ChatCompletion\ChatClientBuilderServiceCollectionExtensions.cs (15)
10/// <summary>Provides extension methods for registering <see cref="IChatClient"/> with a <see cref="IServiceCollection"/>.</summary>
13/// <summary>Registers a singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
15/// <param name="innerClient">The inner <see cref="IChatClient"/> that represents the underlying backend.</param>
23IChatClient innerClient,
32/// <summary>Registers a singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
34/// <param name="innerClientFactory">A callback that produces the inner <see cref="IChatClient"/> that represents the underlying backend.</param>
42Func<IServiceProvider, IChatClient> innerClientFactory,
49serviceCollection.Add(new ServiceDescriptor(typeof(IChatClient), builder.Build, lifetime));
53/// <summary>Registers a keyed singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
56/// <param name="innerClient">The inner <see cref="IChatClient"/> that represents the underlying backend.</param>
65IChatClient innerClient,
74/// <summary>Registers a keyed singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
77/// <param name="innerClientFactory">A callback that produces the inner <see cref="IChatClient"/> that represents the underlying backend.</param>
86Func<IServiceProvider, IChatClient> innerClientFactory,
93serviceCollection.Add(new ServiceDescriptor(typeof(IChatClient), serviceKey, factory: (services, serviceKey) => builder.Build(services), lifetime));
Microsoft.Extensions.AI.Abstractions (62)
ChatCompletion\ChatClientExtensions.cs (14)
12/// <summary>Provides a collection of static methods for extending <see cref="IChatClient"/> instances.</summary>
15/// <summary>Asks the <see cref="IChatClient"/> for an object of type <typeparamref name="TService"/>.</summary>
22/// The purpose of this method is to allow for the retrieval of strongly typed services that may be provided by the <see cref="IChatClient"/>,
25public static TService? GetService<TService>(this IChatClient client, object? serviceKey = null)
33/// Asks the <see cref="IChatClient"/> for an object of the specified type <paramref name="serviceType"/>
44/// The purpose of this method is to allow for the retrieval of services that are required to be provided by the <see cref="IChatClient"/>,
47public static object GetRequiredService(this IChatClient client, Type serviceType, object? serviceKey = null)
58/// Asks the <see cref="IChatClient"/> for an object of type <typeparamref name="TService"/>
68/// The purpose of this method is to allow for the retrieval of strongly typed services that are required to be provided by the <see cref="IChatClient"/>,
71public static TService GetRequiredService<TService>(this IChatClient client, object? serviceKey = null)
92this IChatClient client,
112this IChatClient client,
132this IChatClient client,
152this IChatClient client,
Microsoft.Extensions.AI.Abstractions.Tests (7)
Microsoft.Extensions.AI.Evaluation (14)
Microsoft.Extensions.AI.Evaluation.Console (1)
Microsoft.Extensions.AI.Evaluation.Integration.Tests (12)
Microsoft.Extensions.AI.Evaluation.Reporting (13)
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Microsoft.Extensions.AI.Evaluation.Safety (10)
Microsoft.Extensions.AI.Integration.Tests (30)
Microsoft.Extensions.AI.OllamaSharp.Integration.Tests (5)
Microsoft.Extensions.AI.OpenAI (29)
Microsoft.Extensions.AI.OpenAI.Tests (125)
OpenAIChatClientTests.cs (33)
40IChatClient chatClient = client.GetChatClient(model).AsIChatClient();
57IChatClient chatClient = openAIClient.AsIChatClient();
59Assert.Same(chatClient, chatClient.GetService<IChatClient>());
65using IChatClient pipeline = chatClient
78Assert.IsType<FunctionInvokingChatClient>(pipeline.GetService<IChatClient>());
85IChatClient chatClient = openAIClient.AsIChatClient();
87Assert.Same(chatClient, chatClient.GetService<IChatClient>());
90using IChatClient pipeline = chatClient
103Assert.IsType<FunctionInvokingChatClient>(pipeline.GetService<IChatClient>());
153using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
232using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
330using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
383using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
460using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
543using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
617using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
726using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
817using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
924using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1020using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1139using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1223using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1322using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1462using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1582using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1629using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1677using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1723using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1740private static IChatClient CreateChatClient(HttpClient httpClient, string modelId) =>
1862using IChatClient client = CreateChatClient(httpClient, "o4-mini");
1907using IChatClient client = CreateChatClient(httpClient, "gpt-oss-120b");
1957using IChatClient client = CreateChatClient(httpClient, "gpt-oss-120b");
2014using IChatClient client = new OpenAIClient(new ApiKeyCredential("apikey"), new OpenAIClientOptions { Transport = new HttpClientPipelineTransport(httpClient) })
OpenAIResponseClientTests.cs (80)
43IChatClient chatClient = client.GetResponsesClient(model).AsIChatClient();
54IChatClient chatClient = openAIClient.AsIChatClient();
56Assert.Same(chatClient, chatClient.GetService<IChatClient>());
59using IChatClient pipeline = chatClient
72Assert.IsType<FunctionInvokingChatClient>(pipeline.GetService<IChatClient>());
151using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
294using IChatClient client = CreateResponseClient(httpClient, "o4-mini");
427using IChatClient client = CreateResponseClient(httpClient, "o4-mini");
553using IChatClient client = CreateResponseClient(httpClient, "o4-mini");
658using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
798using IChatClient client = CreateResponseClient(httpClient, "computer-use-preview");
891using IChatClient client = CreateResponseClient(httpClient, "computer-use-preview");
997using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
1142using IChatClient client = CreateResponseClient(httpClient, modelId: "gpt-4o-mini");
1270using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
1404using (IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini"))
1525using (IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini"))
1770using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
2185using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
2308using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
2380using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
2469using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
2521using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
2616using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-2024-08-06");
2697using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-2024-08-06");
2764using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-2024-08-06");
2888using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-2024-08-06");
3108using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-2024-08-06");
3195using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-2024-08-06");
3264using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3316using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3374using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3433using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3494using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3556using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3619using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3692using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3773using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3854using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3932using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
3998using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4059using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4129using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4188using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4244using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4305using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4363using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4420using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4479using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4541using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4597using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4652using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4709using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4766using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4803using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4835using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4879using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4930using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
4976using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5011using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5046using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5081using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5119using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5157using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5177using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5215using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5258using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5301using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5344using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5419using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5491using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5532using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5586using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5649using IChatClient client = CreateResponseClient(httpClient, "gpt-4o-mini");
5722using IChatClient client = CreateResponseClient(httpClient, "gpt-4o");
5822using IChatClient client = CreateResponseClient(httpClient, "gpt-4o");
5939using IChatClient client = CreateResponseClient(httpClient, "gpt-4o");
6069using IChatClient client = CreateResponseClient(httpClient, "o4-mini");
6123using IChatClient client = new OpenAIClient(new ApiKeyCredential("apikey"), new OpenAIClientOptions { Transport = new HttpClientPipelineTransport(httpClient) })
6146private static IChatClient CreateResponseClient(HttpClient httpClient, string modelId) =>
Microsoft.Extensions.AI.Tests (69)
Microsoft.Extensions.DataIngestion (2)