OpenAI.Functions
0.6.0
dotnet add package OpenAI.Functions --version 0.6.0
NuGet\Install-Package OpenAI.Functions -Version 0.6.0
<PackageReference Include="OpenAI.Functions" Version="0.6.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add OpenAI.Functions --version 0.6.0
#r "nuget: OpenAI.Functions, 0.6.0"
// Install OpenAI.Functions as a Cake Addin #addin nuget:?package=OpenAI.Functions&version=0.6.0 // Install OpenAI.Functions as a Cake Tool #tool nuget:?package=OpenAI.Functions&version=0.6.0
OpenAI.Functions
C# Source Generator which allows you to define functions natively through a C# interface,
and also provides extensions that make it easier to call this interface later.
In addition to easy function implementation and readability,
it generates argument helper Args classes, extension methods to easily pass a function description,
and extension methods to simply call a function via json and return json.
Currently only System.Text.Json is supported.
NOTE: When installing via NuGet just replace
<IncludeAssets>runtime
with<IncludeAssets>compile
for it to work properly.
Usage
public enum Unit
{
Celsius,
Fahrenheit,
}
public class Weather
{
public string Location { get; set; } = string.Empty;
public double Temperature { get; set; }
public Unit Unit { get; set; }
public string Description { get; set; } = string.Empty;
}
[OpenAiFunctions]
public interface IWeatherFunctions
{
[Description("Get the current weather in a given location")]
public Task<Weather> GetCurrentWeatherAsync(
[Description("The city and state, e.g. San Francisco, CA")] string location,
Unit unit = Unit.Celsius,
CancellationToken cancellationToken = default);
}
public class WeatherService : IWeatherFunctions
{
public Task<Weather> GetCurrentWeatherAsync(string location, Unit unit = Unit.Celsius, CancellationToken cancellationToken = default)
{
return Task.FromResult(new Weather
{
Location = location,
Temperature = 22.0,
Unit = unit,
Description = "Sunny",
});
}
}
// Integration on the example of OpenAI-DotNet:
var api = new OpenAIClient(new OpenAIAuthentication(apiKey));
var service = new WeatherService();
var getCurrentWeather = service.GetCurrentWeatherAsParametersJsonNode();
var functions = new List<Function>
{
new (getCurrentWeather.Name, getCurrentWeather.Description, getCurrentWeather.Node)
};
var chatRequest = new ChatRequest(messages, functions: functions, functionCall: "auto", model: "gpt-3.5-turbo-0613");
// ...
var json = service.CallGetCurrentWeather(result.FirstChoice.Message.Function.Arguments.ToString());
Support
Priority place for bugs: https://github.com/tryAGI/OpenAI.Functions/issues
Priority place for ideas and general questions: https://github.com/OpenAI.Functions/LangChain/discussions
Discord: https://discord.gg/Ca2xhfBf3v
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net451 is compatible. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
⭐ Last 10 features:
Updated.
Added complex case.
Added async methods support.
To interface.
Initial commit.
🐞 Last 10 fixes:
Updated README.
Fixed.