.NET SDK
Use the Betalgo.OpenAI SDK with GonkaGate. Works with .NET 6+, .NET Core, and .NET Framework.
Community SDK
We recommend using Betalgo.OpenAI, the most popular .NET client for OpenAI-compatible APIs.
Betalgo.OpenAI on NuGetInstallation
Install the SDK using the .NET CLI:
terminal
dotnet add package Betalgo.OpenAIOr using Package Manager Console:
Package Manager Console
Install-Package Betalgo.OpenAIConfiguration
Configure the client to use GonkaGate's API endpoint:
Configuration.cs
using OpenAI;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;
var openAiService = new OpenAIService(new OpenAiOptions
{
ApiKey = "gp-your-api-key",
BaseDomain = "https://api.gonkagate.com/"
});Basic Usage
Make your first chat completion request:
BasicUsage.cs
using OpenAI;
using OpenAI.Managers;
using OpenAI.ObjectModels;
using OpenAI.ObjectModels.RequestModels;
var openAiService = new OpenAIService(new OpenAiOptions
{
ApiKey = "gp-your-api-key",
BaseDomain = "https://api.gonkagate.com/"
});
var completionResult = await openAiService.ChatCompletion.CreateCompletion(
new ChatCompletionCreateRequest
{
Messages = new List<ChatMessage>
{
ChatMessage.FromSystem("You are a helpful assistant."),
ChatMessage.FromUser("Hello, how are you?")
},
Model = "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8",
Temperature = 0.7f,
MaxTokens = 1000
});
if (completionResult.Successful)
{
Console.WriteLine(completionResult.Choices.First().Message.Content);
}
else
{
Console.WriteLine($"Error: {completionResult.Error?.Message}");
}Streaming
Stream responses for real-time output using IAsyncEnumerable:
Streaming.cs
using OpenAI;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;
var openAiService = new OpenAIService(new OpenAiOptions
{
ApiKey = "gp-your-api-key",
BaseDomain = "https://api.gonkagate.com/"
});
var completionResult = openAiService.ChatCompletion.CreateCompletionAsStream(
new ChatCompletionCreateRequest
{
Messages = new List<ChatMessage>
{
ChatMessage.FromUser("Write a poem about AI")
},
Model = "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8"
});
await foreach (var completion in completionResult)
{
if (completion.Successful)
{
Console.Write(completion.Choices.First().Message.Content);
}
else
{
Console.WriteLine($"Error: {completion.Error?.Message}");
}
}
Console.WriteLine("\nStream finished");Error Handling
Handle common API errors gracefully:
ErrorHandling.cs
using OpenAI;
using OpenAI.Managers;
using OpenAI.ObjectModels.RequestModels;
var openAiService = new OpenAIService(new OpenAiOptions
{
ApiKey = "gp-your-api-key",
BaseDomain = "https://api.gonkagate.com/"
});
try
{
var completionResult = await openAiService.ChatCompletion.CreateCompletion(
new ChatCompletionCreateRequest
{
Messages = new List<ChatMessage>
{
ChatMessage.FromUser("Hello!")
},
Model = "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8"
});
if (completionResult.Successful)
{
Console.WriteLine(completionResult.Choices.First().Message.Content);
}
else
{
// Handle API errors
var error = completionResult.Error;
Console.WriteLine($"Error Code: {error?.Code}");
Console.WriteLine($"Error Message: {error?.Message}");
if (error?.Code == "insufficient_balance")
{
Console.WriteLine("Please add funds to your account.");
}
}
}
catch (HttpRequestException ex)
{
Console.WriteLine($"Network error: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"Unexpected error: {ex.Message}");
}Dependency Injection
Register the OpenAI service for ASP.NET Core applications:
Program.cs
// Program.cs or Startup.cs
using OpenAI.Extensions;
var builder = WebApplication.CreateBuilder(args);
// Add OpenAI service with GonkaGate configuration
builder.Services.AddOpenAIService(settings =>
{
settings.ApiKey = builder.Configuration["GonkaGate:ApiKey"]!;
settings.BaseDomain = "https://api.gonkagate.com/";
});
var app = builder.Build();Then inject the service into your controllers:
ChatController.cs
// ChatController.cs
using Microsoft.AspNetCore.Mvc;
using OpenAI.Interfaces;
using OpenAI.ObjectModels.RequestModels;
[ApiController]
[Route("api/[controller]")]
public class ChatController : ControllerBase
{
private readonly IOpenAIService _openAiService;
public ChatController(IOpenAIService openAiService)
{
_openAiService = openAiService;
}
[HttpPost]
public async Task<IActionResult> Chat([FromBody] ChatRequest request)
{
var result = await _openAiService.ChatCompletion.CreateCompletion(
new ChatCompletionCreateRequest
{
Messages = new List<ChatMessage>
{
ChatMessage.FromUser(request.Message)
},
Model = "Qwen/Qwen3-235B-A22B-Instruct-2507-FP8"
});
if (result.Successful)
{
return Ok(new { content = result.Choices.First().Message.Content });
}
return BadRequest(result.Error?.Message);
}
}