209 references to AIFunctionFactory
Microsoft.Extensions.AI (1)
ChatCompletion\FunctionInvocationContext.cs (1)
18
private static readonly AIFunction _nopFunction =
AIFunctionFactory
.Create(() => { }, nameof(FunctionInvocationContext));
Microsoft.Extensions.AI.Abstractions (2)
Functions\AIFunctionFactoryOptions.cs (2)
79
/// By default, the return value of invoking the method wrapped into an <see cref="AIFunction"/> by <see cref="
AIFunctionFactory
"/>
89
/// method for <see cref="AIFunction"/> instances produced by <see cref="
AIFunctionFactory
"/> to wrap
Microsoft.Extensions.AI.Abstractions.Tests (19)
ChatCompletion\ChatOptionsTests.cs (4)
68
AIFunctionFactory
.Create(() => 42),
69
AIFunctionFactory
.Create(() => 43),
166
AIFunctionFactory
.Create(() => 42),
167
AIFunctionFactory
.Create(() => 43),
Contents\FunctionCallContentTests.cs (6)
111
AIFunction function =
AIFunctionFactory
.Create((DayOfWeek[] a, double b, Guid c, Dictionary<string, string> d) => b, serializerOptions: TestJsonSerializerContext.Default.Options);
133
AIFunction function =
AIFunctionFactory
.Create((DayOfWeek[] a, double b, Guid c, Dictionary<string, string> d) => b, serializerOptions: TestJsonSerializerContext.Default.Options);
141
var ex = Assert.Throws<NotSupportedException>(() =>
AIFunctionFactory
.Create((CustomType arg) => { }, serializerOptions: TestJsonSerializerContext.Default.Options));
145
ex = Assert.Throws<NotSupportedException>(() =>
AIFunctionFactory
.Create(() => new CustomType(), serializerOptions: TestJsonSerializerContext.Default.Options));
166
AIFunction function =
AIFunctionFactory
.Create((DayOfWeek[] a, double b, Guid c, Dictionary<string, string> d) => b, serializerOptions: TestJsonSerializerContext.Default.Options);
187
AIFunction function =
AIFunctionFactory
.Create((DayOfWeek[] a, double b, Guid c, Dictionary<string, string> d) => b, serializerOptions: TestJsonSerializerContext.Default.Options);
Functions\ApprovalRequiredAIFunctionTests.cs (2)
21
var inner =
AIFunctionFactory
.Create(() => 42);
37
var inner =
AIFunctionFactory
.Create(() => "result");
Functions\DelegatingAIFunctionTests.cs (2)
23
AIFunction expected =
AIFunctionFactory
.Create(() => 42);
64
AIFunction inner =
AIFunctionFactory
.Create(int () =>
Utilities\AIJsonSchemaTransformCacheTests.cs (1)
51
AIFunction func =
AIFunctionFactory
.Create((int x, int y) => x + y);
Utilities\AIJsonUtilitiesTests.cs (4)
285
AIFunction func =
AIFunctionFactory
.Create((int x, int y) => x + y, serializerOptions: options);
339
AIFunction func =
AIFunctionFactory
.Create((
360
AIFunction func =
AIFunctionFactory
.Create((int a, int? b, long c, short d, float e, double f, decimal g) => { }, serializerOptions: options);
410
AIFunction func =
AIFunctionFactory
.Create(([Range(1, 10)] int num, [StringLength(100, MinimumLength = 1)] string str) => num + str.Length, serializerOptions: options);
Microsoft.Extensions.AI.AzureAIInference.Tests (6)
AzureAIInferenceChatClientTests.cs (6)
328
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
412
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
501
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
576
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
1251
Tools = [
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.")],
1338
Tools = [
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.")],
Microsoft.Extensions.AI.Evaluation.Integration.Tests (2)
AgentQualityEvaluatorTests.cs (2)
43
Tools = [
AIFunctionFactory
.Create(GetOrders),
AIFunctionFactory
.Create(GetOrderStatus)]
Microsoft.Extensions.AI.Integration.Tests (37)
ChatClientIntegrationTests.cs (37)
237
Tools = [
AIFunctionFactory
.Create(() => secretNumber, "GetSecretNumber")]
253
Tools = [
AIFunctionFactory
.Create((int a, int b) => a * b, "SecretComputation")]
268
Tools = [
AIFunctionFactory
.Create((int a, int b) => a * b, "SecretComputation")]
302
AIFunction func =
AIFunctionFactory
.Create((string id = "defaultId") => id is "foo" ? secretNumber : -1, "GetSecretNumberById");
334
AIFunction func =
AIFunctionFactory
.Create((PersonRecord person) => person.Name is "John" ? secretNumber + person.Age : -1, "GetSecretNumberByPerson");
366
AIFunction func =
AIFunctionFactory
.Create((string[] items, string shopperId) => { shoppingCart.AddRange(items); shopperName = shopperId; }, "AddItemsToShoppingCart");
450
AIFunctionFactory
.Create((int? i) => i, createOptions()),
451
AIFunctionFactory
.Create((string? s) => s, createOptions()),
452
AIFunctionFactory
.Create((int? i = null) => i, createOptions()),
453
AIFunctionFactory
.Create((bool b) => b, createOptions()),
454
AIFunctionFactory
.Create((double d) => d, createOptions()),
455
AIFunctionFactory
.Create((decimal d) => d, createOptions()),
456
AIFunctionFactory
.Create((float f) => f, createOptions()),
457
AIFunctionFactory
.Create((long l) => l, createOptions()),
458
AIFunctionFactory
.Create((char c) => c, createOptions()),
459
AIFunctionFactory
.Create((DateTime dt) => dt, createOptions()),
460
AIFunctionFactory
.Create((DateTimeOffset? dt) => dt, createOptions()),
461
AIFunctionFactory
.Create((TimeSpan ts) => ts, createOptions()),
463
AIFunctionFactory
.Create((DateOnly d) => d, createOptions()),
464
AIFunctionFactory
.Create((TimeOnly t) => t, createOptions()),
466
AIFunctionFactory
.Create((Uri uri) => uri, createOptions()),
467
AIFunctionFactory
.Create((Guid guid) => guid, createOptions()),
468
AIFunctionFactory
.Create((List<int> list) => list, createOptions()),
469
AIFunctionFactory
.Create((int[] arr, ComplexObject? co) => arr, createOptions()),
470
AIFunctionFactory
.Create((string p1 = "str", int p2 = 42, BindingFlags p3 = BindingFlags.IgnoreCase, char p4 = 'x') => p1, createOptions()),
471
AIFunctionFactory
.Create((string? p1 = "str", int? p2 = 42, BindingFlags? p3 = BindingFlags.IgnoreCase, char? p4 = 'x') => p1, createOptions()),
575
Tools = [
AIFunctionFactory
.Create((string personName) =>
597
var tool =
AIFunctionFactory
.Create(() =>
620
var getSecretNumberTool =
AIFunctionFactory
.Create(() => 123, "GetSecretNumber");
621
var shieldsUpTool =
AIFunctionFactory
.Create(() => shieldsUp = true, "ShieldsUp");
717
var getTemperature =
AIFunctionFactory
.Create([Description("Gets the current temperature")] () =>
756
var getTemperature =
AIFunctionFactory
.Create([Description("Gets the current temperature")] () =>
798
var getTemperature =
AIFunctionFactory
.Create([Description("Gets the current temperature")] () =>
888
new ChatOptions { Tools = [
AIFunctionFactory
.Create(() => secretNumber, "GetSecretNumber")] });
914
new ChatOptions { Tools = [
AIFunctionFactory
.Create(() => secretNumber, "GetSecretNumber")] }))
1068
Tools = [
AIFunctionFactory
.Create((int personId) =>
1219
var getWeather =
AIFunctionFactory
.Create(([Description("Gets weather for a city")] string city) =>
Microsoft.Extensions.AI.OllamaSharp.Integration.Tests (3)
OllamaSharpChatClientIntegrationTests.cs (3)
46
Tools = [
AIFunctionFactory
.Create(() => secretNumber, "GetSecretNumber")],
66
var stockPriceTool =
AIFunctionFactory
.Create([Description("Returns the stock price for a given ticker symbol")] (
76
var irrelevantTool =
AIFunctionFactory
.Create(() => { didCallIrrelevantTool = true; return 123; }, "GetSecretNumber");
Microsoft.Extensions.AI.OpenAI.Tests (10)
OpenAIChatClientTests.cs (7)
331
Tools = [
AIFunctionFactory
.Create(() => 42, "GetPersonAge", "Gets the age of the specified person.")],
381
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
458
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
541
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
615
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
1108
Tools = [
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.")],
1292
Tools = [
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.")],
OpenAIConversionTests.cs (1)
20
private static readonly AIFunction _testFunction =
AIFunctionFactory
.Create(
OpenAIResponseClientTests.cs (2)
532
Tools = [
AIFunctionFactory
.Create(() => 42, "GetPersonAge", "Gets the age of the specified person.")],
674
AIFunction tool =
AIFunctionFactory
.Create(([Description("The person whose age is being requested")] string personName) => 42, "GetPersonAge", "Gets the age of the specified person.");
Microsoft.Extensions.AI.Tests (129)
ChatCompletion\FunctionInvocationContextTests.cs (1)
51
AIFunction function =
AIFunctionFactory
.Create(() => { }, nameof(Properties_Roundtrip));
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (29)
24
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
26
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2")),
65
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
66
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
99
AIFunction func1 =
AIFunctionFactory
.Create(() => "Result 1", "Func1");
100
AIFunction func2 =
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2");
145
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
146
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
196
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
197
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
255
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
256
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
314
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
315
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
378
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
379
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2")),
432
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
433
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2")),
495
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
496
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
525
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
526
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
571
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create(() => "Result 1", "Func1")),
572
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
623
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
624
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
695
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
696
new ApprovalRequiredAIFunction(
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2")),
697
AIFunctionFactory
.Create(() => "Result 3", "Func3"),
ChatCompletion\FunctionInvokingChatClientTests.cs (39)
72
IList<AITool> additionalTools = [
AIFunctionFactory
.Create(() => "Additional Tool")];
84
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
85
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
86
AIFunctionFactory
.Create((int i) => { }, "VoidReturn"),
113
new() { Tools = [
AIFunctionFactory
.Create(() => "Shouldn't be invoked", "ChatOptionsFunc")] } :
119
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
120
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
121
AIFunctionFactory
.Create((int i) => { }, "VoidReturn"),
146
Tools = [
AIFunctionFactory
.Create(() => "Result 1", "Func1")]
152
AIFunctionFactory
.Create(() => "Should never be invoked", "Func1"),
153
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
154
AIFunctionFactory
.Create((int i) => { }, "VoidReturn"),
183
AIFunctionFactory
.Create((int? i = 42) => "Result 1", "Func1"),
184
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
234
AIFunctionFactory
.Create(async (string arg) =>
281
AIFunctionFactory
.Create(async (string arg) =>
320
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
321
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
322
AIFunctionFactory
.Create((int i) => { }, "VoidReturn"),
371
AIFunctionFactory
.Create(() => { actualCallCount++; }, "VoidReturn"),
413
AIFunctionFactory
.Create((bool shouldThrow, int callIndex) =>
494
AIFunctionFactory
.Create(() =>
543
AIFunctionFactory
.Create(() => "Result 1", "Func1"),
544
AIFunctionFactory
.Create((int i) => $"Result 2: {i}", "Func2"),
545
AIFunctionFactory
.Create((int i) => { }, "VoidReturn"),
582
AIFunctionFactory
.Create(string () => throw new InvalidOperationException("Oh no!"), "Func1"),
618
Tools = [
AIFunctionFactory
.Create(() => "Result 1", "Func1")]
674
Tools = [
AIFunctionFactory
.Create(() => "Result 1", "Func1")]
722
Tools = [
AIFunctionFactory
.Create((string text) => $"Result for {text}", "Func1")]
780
Tools = [
AIFunctionFactory
.Create(() => "doesn't matter", "Func1")]
819
var function =
AIFunctionFactory
.Create(async (int i) =>
894
var function =
AIFunctionFactory
.Create((string? result = null) =>
949
Tools = [
AIFunctionFactory
.Create(() => "Result 1", "Func1")],
1010
Tools = [
AIFunctionFactory
.Create((IServiceProvider actual) =>
1043
Tools = [
AIFunctionFactory
.Create(async (string arg, CancellationToken cancellationToken) =>
1071
Tools = [
AIFunctionFactory
.Create((int i) => $"Known: {i}", "KnownFunc")]
1123
var declarationOnly =
AIFunctionFactory
.Create(() => "unused", "DefOnly").AsDeclarationOnly();
1148
var known =
AIFunctionFactory
.Create(() => { invoked++; return "OK"; }, "Known");
1149
var defOnly =
AIFunctionFactory
.Create(() => "unused", "DefOnly").AsDeclarationOnly();
Functions\AIFunctionFactoryTest.cs (60)
30
Assert.Throws<ArgumentNullException>("method", () =>
AIFunctionFactory
.Create(method: null!));
31
Assert.Throws<ArgumentNullException>("method", () =>
AIFunctionFactory
.Create(method: null!, target: new object()));
32
Assert.Throws<ArgumentNullException>("method", () =>
AIFunctionFactory
.Create(method: null!, target: new object(), name: "myAiFunk"));
33
Assert.Throws<ArgumentNullException>("target", () =>
AIFunctionFactory
.Create(typeof(AIFunctionFactoryTest).GetMethod(nameof(InvalidArguments_Throw))!, (object?)null));
35
AIFunctionFactory
.Create(typeof(AIFunctionFactoryTest).GetMethod(nameof(InvalidArguments_Throw))!, (Func<AIFunctionArguments, object>)null!));
36
Assert.Throws<ArgumentException>("method", () =>
AIFunctionFactory
.Create(typeof(List<>).GetMethod("Add")!, new List<int>()));
44
func =
AIFunctionFactory
.Create((string a) => a + " " + a);
47
func =
AIFunctionFactory
.Create((string a, string b) => b + " " + a);
50
func =
AIFunctionFactory
.Create((int a, long b) => a + b);
57
AIFunction func =
AIFunctionFactory
.Create((string a = "test") => a + " " + a);
67
AIFunctionFactory
.Create((string theParam) => theParam + " " + theParam),
68
AIFunctionFactory
.Create((string? theParam) => theParam + " " + theParam),
69
AIFunctionFactory
.Create((int theParam) => theParam * 2),
70
AIFunctionFactory
.Create((int? theParam) => theParam * 2),
83
AIFunction func =
AIFunctionFactory
.Create((int x, int y, int z, int w, int u) => x + y + z + w + u);
112
AIFunction func =
AIFunctionFactory
.Create((JsonElement param) => param, serializerOptions: options);
132
AIFunction func =
AIFunctionFactory
.Create((JsonElement param) => param);
151
AIFunction func =
AIFunctionFactory
.Create((int value1 = 1, string value2 = "2", CancellationToken cancellationToken = default) =>
167
func =
AIFunctionFactory
.Create(Task<string> (string a) => Task.FromResult(a + " " + a));
171
func =
AIFunctionFactory
.Create(ValueTask<string> (string a, string b) => new ValueTask<string>(b + " " + a));
176
func =
AIFunctionFactory
.Create(async Task (int a, long b) => { result = a + b; await Task.Yield(); });
182
func =
AIFunctionFactory
.Create(async ValueTask (int a, long b) => { result = a + b; await Task.Yield(); });
187
func =
AIFunctionFactory
.Create((int count) => SimpleIAsyncEnumerable(count), serializerOptions: JsonContext.Default.Options);
200
func =
AIFunctionFactory
.Create(() => (IAsyncEnumerable<int>)new ThrowingAsyncEnumerable(), serializerOptions: JsonContext.Default.Options);
217
func =
AIFunctionFactory
.Create(dotnetFunc);
223
func =
AIFunctionFactory
.Create(dotnetFunc2);
229
func =
AIFunctionFactory
.Create(dotnetFunc3);
259
AIFunction func =
AIFunctionFactory
.Create(dotnetFunc, options);
284
AIFunction func =
AIFunctionFactory
.Create(
308
AIFunction func =
AIFunctionFactory
.Create(
328
AIFunction func =
AIFunctionFactory
.Create((
372
AIFunction func =
AIFunctionFactory
.Create((
404
AIFunction func =
AIFunctionFactory
.Create(
422
AIFunction func =
AIFunctionFactory
.Create(
433
AIFunction func =
AIFunctionFactory
.Create(
444
Assert.Throws<ArgumentException>("method", () =>
AIFunctionFactory
.Create(
452
AIFunction func =
AIFunctionFactory
.Create(
471
AIFunction func =
AIFunctionFactory
.Create(
490
AIFunction func =
AIFunctionFactory
.Create(
517
AIFunction f =
AIFunctionFactory
.Create(([FromKeyedServices("key")] MyService service, int myInteger) => service.Value + myInteger,
540
AIFunction f =
AIFunctionFactory
.Create(([FromKeyedServices(null!)] MyService service, int myInteger) => service.Value + myInteger,
563
AIFunction f =
AIFunctionFactory
.Create(([FromKeyedServices("key")] MyService? service = null, int myInteger = 0) =>
582
AIFunction f =
AIFunctionFactory
.Create(
634
AIFunction f =
AIFunctionFactory
.Create(
651
AIFunction f =
AIFunctionFactory
.Create(
667
AIFunction f =
AIFunctionFactory
.Create(
690
AIFunction f =
AIFunctionFactory
.Create(
713
AIFunction f =
AIFunctionFactory
.Create(
736
AIFunction f =
AIFunctionFactory
.Create(
759
AIFunction f =
AIFunctionFactory
.Create(
782
AIFunction f =
AIFunctionFactory
.Create(
805
AIFunction f =
AIFunctionFactory
.Create(
828
AIFunction f =
AIFunctionFactory
.Create(
852
AIFunction f =
AIFunctionFactory
.Create((Guid g = default, StructWithDefaultCtor s = default) => g.ToString() + "," + s.Value.ToString(), serializerOptions: JsonContext.Default.Options);
863
AIFunction f =
AIFunctionFactory
.Create(
896
AIFunction f =
AIFunctionFactory
.Create(
926
AIFunction f =
AIFunctionFactory
.Create(Add, serializerOptions: JsonContext.Default.Options);
939
AIFunctionDeclaration f =
AIFunctionFactory
.CreateDeclaration("something", "amazing", schema);
945
f =
AIFunctionFactory
.CreateDeclaration("other", null, default, schema);
951
Assert.Throws<ArgumentNullException>("name", () =>
AIFunctionFactory
.CreateDeclaration(null!, "description", default));