Some checks failed
CI Pipeline / Code Quality & Typecheck (push) Waiting to run
CI Pipeline / Test Suite (macos-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (ubuntu-latest) (push) Blocked by required conditions
CI Pipeline / Test Suite (windows-latest) (push) Blocked by required conditions
CI Pipeline / Build Validation (admin) (push) Blocked by required conditions
CI Pipeline / Build Validation (desktop) (push) Blocked by required conditions
Deploy Landing Page / deploy (push) Blocked by required conditions
Deploy Landing Page / build (push) Waiting to run
Release & Packaging Pipeline / Build & Publish Admin Docker Image (push) Failing after 8s
Release & Code Signing CA Pipeline / build-and-sign-windows (push) Failing after 1m51s
Build macOS / Build & Package (macOS) (push) Failing after 4s
Build macOS / Build & Package (macOS)-1 (push) Failing after 5s
Release & Code Signing CA Pipeline / build-and-sign-macos (push) Failing after 3s
Release & Packaging Pipeline / Package macOS Desktop App (push) Failing after 4s
Release & Packaging Pipeline / Package Windows Desktop App (push) Failing after 2m28s
Release & Packaging Pipeline / Publish Official GitHub Release (push) Has been skipped
49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System;
|
|
using System.Security.Claims;
|
|
using System.Threading.Tasks;
|
|
using D3ROVoice.Api.Dtos;
|
|
using D3ROVoice.Api.Services;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace D3ROVoice.Api.Controllers;
|
|
|
|
[Authorize]
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
public class LlmController : ControllerBase
|
|
{
|
|
private readonly ILlmProxyService _llmService;
|
|
|
|
public LlmController(ILlmProxyService llmService)
|
|
{
|
|
_llmService = llmService;
|
|
}
|
|
|
|
[HttpPost("generate")]
|
|
public async Task<IActionResult> Generate([FromBody] LlmGenerateRequest request)
|
|
{
|
|
var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
var userEmail = User.FindFirstValue(ClaimTypes.Email) ?? "unknown@user";
|
|
int userId = int.TryParse(userIdStr, out var id) ? id : 0;
|
|
|
|
if (string.IsNullOrWhiteSpace(request.Prompt))
|
|
{
|
|
return BadRequest(new { message = "Prompt는 필수 항목입니다." });
|
|
}
|
|
|
|
var result = await _llmService.GenerateAsync(userId, userEmail, request);
|
|
return Ok(result);
|
|
}
|
|
|
|
[HttpPost("chat")]
|
|
public async Task<IActionResult> Chat([FromBody] LlmChatRequest request)
|
|
{
|
|
var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
|
var userEmail = User.FindFirstValue(ClaimTypes.Email) ?? "unknown@user";
|
|
int userId = int.TryParse(userIdStr, out var id) ? id : 0;
|
|
|
|
var result = await _llmService.ChatAsync(userId, userEmail, request);
|
|
return Ok(result);
|
|
}
|
|
}
|