.NET SDK
Используйте Betalgo.OpenAI SDK с GonkaGate. Работает с .NET 6+, .NET Core и .NET Framework.
Сообщество SDK
Мы рекомендуем использовать Betalgo.OpenAI — самый популярный .NET-клиент для OpenAI-совместимых API.
Betalgo.OpenAI on NuGetУстановка
Установите SDK с помощью .NET CLI:
terminal
dotnet add package Betalgo.OpenAIИли через Package Manager Console:
Package Manager Console
Install-Package Betalgo.OpenAIНастройка
Настройте клиент для использования API GonkaGate:
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/"
});Базовое использование
Выполните первый запрос к чату:
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}");
}Потоковая передача
Потоковые ответы с использованием 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");Обработка ошибок
Корректно обрабатывайте типичные ошибки API:
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
Регистрация сервиса OpenAI для ASP.NET Core приложений:
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();Затем внедрите сервис в контроллеры:
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);
}
}