forked from microsoft/semantic-kernel
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathKernelFunctionExtensions.cs
29 lines (25 loc) · 1.11 KB
/
KernelFunctionExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Copyright (c) Microsoft. All rights reserved.
using System;
using Azure.AI.Projects;
namespace Microsoft.SemanticKernel.Agents.AzureAI;
/// <summary>
/// Extensions for <see cref="KernelFunction"/> to support Azure AI specific operations.
/// </summary>
public static class KernelFunctionExtensions
{
/// <summary>
/// Convert <see cref="KernelFunction"/> to an OpenAI tool model.
/// </summary>
/// <param name="function">The source function</param>
/// <param name="pluginName">The plugin name</param>
/// <returns>An OpenAI tool definition</returns>
public static FunctionToolDefinition ToToolDefinition(this KernelFunction function, string pluginName)
{
if (function.Metadata.Parameters.Count > 0)
{
BinaryData parameterData = function.Metadata.CreateParameterSpec();
return new FunctionToolDefinition(FunctionName.ToFullyQualifiedName(function.Name, pluginName), function.Description, parameterData);
}
return new FunctionToolDefinition(FunctionName.ToFullyQualifiedName(function.Name, pluginName), function.Description);
}
}