/
Laxerem
/
BaskBot
Обзор
Документация
Войти
/
Laxerem
/
BaskBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
BaskBot.Infrastructure/Clients/OpenRouterClient.cs
47 строк
2 KB
Laxerem
LLM generating for messages
03 янв 2026, 16:57
03 янв 2026, 16:57
af553cc
Код
Авторство
О чём код?
using System.Net.Http.Json; using System.Text; using System.Text.Json; using BaskBot.Infrastructure.Clients.Contracts; using BaskBot.Infrastructure.Clients.Options; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace BaskBot.Infrastructure.Clients; public class OpenRouterClient { private readonly string _modelName; private readonly HttpClient _httpClient; private readonly ILogger<OpenRouterClient> _logger; public OpenRouterClient(IOptions<OpenRouterClientOptions> options, HttpClient httpClient, ILogger<OpenRouterClient> logger) { _modelName = options.Value.ModelName; _httpClient = httpClient; _logger = logger; } public async Task<string> GenerateModelResponse(string userPrompt, string systemPrompt = "", CancellationToken cancellationToken = default) { try { var request = new OpenRouterRequest( model: _modelName, messages: [ new OpenRouterRequestMessage(MessageRole.System, systemPrompt), new OpenRouterRequestMessage(MessageRole.User, userPrompt) ] ); _logger.LogInformation("Sending request to OpenRouter..."); var response = await _httpClient.PostAsJsonAsync("https://openrouter.ai/api/v1/chat/completions", request, cancellationToken); var responseContent = await response.Content.ReadAsStringAsync(); _logger.LogInformation($"Received response from OpenRouter: {responseContent}"); var result = JsonSerializer.Deserialize<OpenRouterResponse>(responseContent); var content = result.Choices.First().Message.Content; return content; } catch (Exception ex) when (ex is not InvalidOperationException) { _logger.LogError(ex, "Failed to generate model response"); throw; } } }