diff --git a/ShoppingAssistantApi.Application/IServices/IOpenAiService.cs b/ShoppingAssistantApi.Application/IServices/IOpenAiService.cs new file mode 100644 index 0000000..df56a10 --- /dev/null +++ b/ShoppingAssistantApi.Application/IServices/IOpenAiService.cs @@ -0,0 +1,13 @@ +using ShoppingAssistantApi.Application.Models.OpenAi; + +namespace ShoppingAssistantApi.Application.IServices; + +public interface IOpenAiService +{ + Task GetChatCompletion(ChatCompletionRequest chat, CancellationToken cancellationToken); + + /// + /// Retrieves a stream of tokens (pieces of words) based on provided chat. + /// + IAsyncEnumerable GetChatCompletionStream(ChatCompletionRequest chat, CancellationToken cancellationToken); +} diff --git a/ShoppingAssistantApi.Application/Models/OpenAi/ChatCompletionRequest.cs b/ShoppingAssistantApi.Application/Models/OpenAi/ChatCompletionRequest.cs new file mode 100644 index 0000000..d2ad66b --- /dev/null +++ b/ShoppingAssistantApi.Application/Models/OpenAi/ChatCompletionRequest.cs @@ -0,0 +1,14 @@ +namespace ShoppingAssistantApi.Application.Models.OpenAi; + +public class ChatCompletionRequest +{ + public string Model { get; set; } = "gpt-3.5-turbo"; + + public List Messages { get; set; } + + public double Temperature { get; set; } = 0.7; + + public int MaxTokens { get; set; } = 256; + + public bool Stream { get; set; } = false; +} diff --git a/ShoppingAssistantApi.Application/Models/OpenAi/OpenAiMessage.cs b/ShoppingAssistantApi.Application/Models/OpenAi/OpenAiMessage.cs new file mode 100644 index 0000000..91bd757 --- /dev/null +++ b/ShoppingAssistantApi.Application/Models/OpenAi/OpenAiMessage.cs @@ -0,0 +1,10 @@ +using ShoppingAssistantApi.Domain.Enums; + +namespace ShoppingAssistantApi.Application.Models.OpenAi; + +public class OpenAiMessage +{ + public OpenAiRole Role { get; set; } + + public string Content { get; set; } +} diff --git a/ShoppingAssistantApi.Domain/Enums/OpenAiRole.cs b/ShoppingAssistantApi.Domain/Enums/OpenAiRole.cs new file mode 100644 index 0000000..54d2c0a --- /dev/null +++ b/ShoppingAssistantApi.Domain/Enums/OpenAiRole.cs @@ -0,0 +1,8 @@ +namespace ShoppingAssistantApi.Domain.Enums; + +public enum OpenAiRole +{ + System, + User, + Assistant +} diff --git a/ShoppingAssistantApi.Infrastructure/Services/OpenAiService.cs b/ShoppingAssistantApi.Infrastructure/Services/OpenAiService.cs index 097100e..9ed750a 100644 --- a/ShoppingAssistantApi.Infrastructure/Services/OpenAiService.cs +++ b/ShoppingAssistantApi.Infrastructure/Services/OpenAiService.cs @@ -1,11 +1,24 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; +using ShoppingAssistantApi.Application.IServices; +using ShoppingAssistantApi.Application.Models.OpenAi; namespace ShoppingAssistantApi.Infrastructure.Services; -public class OpenAiService +public class OpenAiService : IOpenAiService { - + private readonly HttpClient _httpClient; + + public OpenAiService(HttpClient client) + { + _httpClient = client; + } + + public Task GetChatCompletion(ChatCompletionRequest chat, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } + + public IAsyncEnumerable GetChatCompletionStream(ChatCompletionRequest chat, CancellationToken cancellationToken) + { + throw new NotImplementedException(); + } }