Skip to main content

.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 NuGet

Installation

Install the SDK using the .NET CLI:

terminal
dotnet add package Betalgo.OpenAI

Or using Package Manager Console:

Package Manager Console
Install-Package Betalgo.OpenAI

Configuration

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);
    }
}
Was this page helpful?