Google_GenerativeAI 1.0.2
dotnet add package Google_GenerativeAI --version 1.0.2
NuGet\Install-Package Google_GenerativeAI -Version 1.0.2
<PackageReference Include="Google_GenerativeAI" Version="1.0.2" />
paket add Google_GenerativeAI --version 1.0.2
#r "nuget: Google_GenerativeAI, 1.0.2"
// Install Google_GenerativeAI as a Cake Addin #addin nuget:?package=Google_GenerativeAI&version=1.0.2 // Install Google_GenerativeAI as a Cake Tool #tool nuget:?package=Google_GenerativeAI&version=1.0.2
Google GenerativeAI (Gemini)
Unofficial C# SDK based on Google GenerativeAI (Gemini Pro) REST APIs.
This package includes 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 Args classes, extension methods to easily pass a functions to API,
and extension methods to simply call a function via json and return json.
Currently only System.Text.Json is supported.
Usage
Quick Start
Obtain an API key to use with the Google AI SDKs.
Install Google_GenerativeAI Nuget Package
Install-Package Google_GenerativeAI
or
dotnet add package Google_GenerativeAI
Write some codes:
var apiKey = 'Your API Key';
var model = new GenerativeModel(apiKey);
//or var model = new GeminiProModel(apiKey)
var res = await model.GenerateContentAsync("How are you doing?");
Chat Mode
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var model = new GenerativeModel(apiKey);
//or var model = new GeminiProModel(apiKey)
var chat = model.StartChat(new StartChatParams());
var result = await chat.SendMessageAsync("Write a poem");
Console.WriteLine("Initial Poem\r\n");
Console.WriteLine(result);
var result2 = await chat.SendMessageAsync("Make it longer");
Console.WriteLine("Long Poem\r\n");
Console.WriteLine(result2);
Vision
var imageBytes = await File.ReadAllBytesAsync("image.png");
string prompt = "What is in the image?";
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var visionModel = new GeminiProVision(apiKey);
var result = await visionModel.GenerateContentAsync(prompt,new FileObject(imageBytes,"image.png"));
Console.WriteLine(result.Text());
or
var imageBytes = await File.ReadAllBytesAsync("image.png");
var imagePart = new Part()
{
InlineData = new GenerativeContentBlob()
{
MimeType = "image/png",
Data = Convert.ToBase64String(imageBytes)
}
};
var textPart = new Part()
{
Text = "What is in the image?"
};
var parts = new[] { textPart, imagePart };
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var visionModel = new GeminiProVision(apiKey);
var result = await visionModel.GenerateContentAsync(parts);
Console.WriteLine(result.Text());
Function Calling
using GenerativeAI;
public enum Unit
{
Celsius,
Fahrenheit,
Imperial
}
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;
}
[GenerativeAIFunctions]
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",
});
}
}
WeatherService service = new WeatherService();
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var model = new GenerativeModel(apiKey);
// Add Global Functions
model.AddGlobalFunctions(service.AsGoogleFunctions(), service.AsGoogleCalls())
var result = await model.GenerateContentAsync("How is the weather in San Francisco today?");
Console.WriteLine(result);
Streaming
streaming doesn't support Function calling
Streaming with Generative Model
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var model = new GenerativeModel(apiKey);
//or var model = new GeminiProModel(apiKey);
var action = new Action<string>(s =>
{
Console.Write(s);
});
await model.StreamContentAsync("How are you doing?",action);
Streaming With GeminiProVision
var imageBytes = await File.ReadAllBytesAsync("image.png");
string prompt = "What is in the image?";
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var visionModel = new GeminiProVision(apiKey);
var chat = visionModel.StartChat(new StartChatParams());
Action<string> handler = (a) =>
{
Console.WriteLine(a);
};
var result = await chat.StreamContentVisionAsync(prompt, new FileObject(imageBytes, "image.png"), handler);
Streaming with ChatSession
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var model = new GenerativeModel(apiKey);
var handler = new Action<string>((a) =>
{
Console.Write(a);
});
var chat = model.StartChat(new StartChatParams());
await chat.StreamContentAsync("Write a poem", handler);
ModelInfoService
This service can be used to get all the Google Generative AI Models.
Get List of Available Models
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var service = new ModelInfoService(apiKey);
var models = await service.GetModelsAsync();
Get Model info with Model Id
var apiKey = Environment.GetEnvironmentVariable("Gemini_API_Key", EnvironmentVariableTarget.User);
var service = new ModelInfoService(apiKey);
var modelInfo = await service.GetModelInfoAsync("gemini-pro");
Credits
Thanks to HavenDV for OpenAI SDK
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. 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 | net461 was computed. net462 is compatible. 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. |
-
.NETFramework 4.6.2
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Net.Http (>= 4.3.4)
- System.Text.Json (>= 8.0.3)
-
.NETStandard 2.0
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Net.Http (>= 4.3.4)
- System.Text.Json (>= 8.0.3)
-
net6.0
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Net.Http (>= 4.3.4)
- System.Text.Json (>= 8.0.3)
-
net7.0
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Net.Http (>= 4.3.4)
- System.Text.Json (>= 8.0.3)
-
net8.0
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Net.Http (>= 4.3.4)
- System.Text.Json (>= 8.0.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Google_GenerativeAI:
Package | Downloads |
---|---|
LangChain.Providers.Google
Google Gemini Chat model provider. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.2 | 8,672 | 7/14/2024 |
1.0.1 | 30,266 | 6/6/2024 |
1.0.0 | 1,165 | 5/22/2024 |
0.1.20 | 1,076 | 4/29/2024 |
0.1.19 | 9,307 | 4/4/2024 |
0.1.18 | 272 | 4/3/2024 |
0.1.17 | 102 | 4/3/2024 |
0.1.16 | 104 | 4/3/2024 |
0.1.15 | 512 | 2/25/2024 |
0.1.14 | 2,279 | 2/24/2024 |
0.1.13 | 107 | 2/24/2024 |
0.1.12 | 8,272 | 12/19/2023 |
0.1.11 | 126 | 12/19/2023 |
0.1.10 | 106 | 12/19/2023 |
0.1.9 | 153 | 12/18/2023 |
0.1.7 | 98 | 12/18/2023 |
0.1.6 | 118 | 12/18/2023 |
0.1.5 | 125 | 12/18/2023 |
0.1.4 | 120 | 12/18/2023 |
0.1.3 | 119 | 12/18/2023 |
0.1.2 | 117 | 12/18/2023 |
0.1.1 | 147 | 12/18/2023 |
0.1.0 | 141 | 12/17/2023 |