An open API service indexing awesome lists of open source software.

https://github.com/shchoholiev/shopping-assistant-api

.NET Back-end API with OpenAI integration for a Shopping Assistant that utilizes Natural Language Processing (NLP) technology to interpret user queries for products and gifts. Users interact through a chat-style interface to communicate their shopping requirements.
https://github.com/shchoholiev/shopping-assistant-api

backend dotnet generative-ai openai prompt-engineering server-sent-events

Last synced: 2 months ago
JSON representation

.NET Back-end API with OpenAI integration for a Shopping Assistant that utilizes Natural Language Processing (NLP) technology to interpret user queries for products and gifts. Users interact through a chat-style interface to communicate their shopping requirements.

Awesome Lists containing this project

README

          

# shopping-assistant-api
.NET Back-end API with OpenAI integration for a Shopping Assistant that utilizes Natural Language Processing (NLP) technology to interpret user queries for products and gifts. Users interact through a chat-style interface to communicate their shopping requirements.

## Table of Contents
- [Features](#features)
- [Stack](#stack)
- [Installation](#installation)
- [Prerequisites](#prerequisites)
- [Setup Instructions](#setup-instructions)
- [Configuration](#configuration)

## Features
- Chat-style interface that processes natural language queries for product and gift recommendations.
- Integration with OpenAI API to generate intelligent product search responses.
- Server-Sent Events (SSE) streaming product search results to clients in real-time.
- Personal wishlist management with CRUD operations.
- Role and user management with authorization and JWT-based authentication.
- GraphQL API implemented with HotChocolate for flexible queries and mutations.
- Pagination support for roles, users, wishlists, messages, and products.

## Stack
- Language: C# (.NET 7)
- Frameworks & Libraries:
- ASP.NET Core Web API
- HotChocolate GraphQL
- MongoDB with official C# driver
- Authentication & Security:
- JWT Bearer Authentication
- Password hashing with PBKDF2 (Rfc2898DeriveBytes)
- Cloud & DevOps:
- Azure App Configuration
- GitHub Actions for CI/CD workflows
- External APIs:
- OpenAI API for natural language processing and chat completions
- Tools & Extensions:
- Swagger / OpenAPI for API documentation
- Server-Sent Events for realtime streaming responses
- Visual Studio Code DevContainer for development environment

## Installation

### Prerequisites
- [.NET 7 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/7.0)
- [MongoDB](https://www.mongodb.com/try/download/community) instance (local or hosted)
- An OpenAI API key to access the OpenAI services

### Setup Instructions

1. Clone the repository:
```bash
git clone https://github.com/Shchoholiev/shopping-assistant-api.git
cd shopping-assistant-api
```

2. Navigate to the API project and restore dependencies:
```bash
dotnet restore ShoppingAssistantApi.Api/ShoppingAssistantApi.Api.csproj
```

3. Build the solution:
```bash
dotnet build ShoppingAssistantApi.sln
```

4. Configure the environment variables (see Configuration section).

5. Run the API locally:
```bash
cd ShoppingAssistantApi.Api
dotnet run
```

6. The API will start and Swagger UI will be available (usually at `https://localhost:7268/swagger`).

7. Use GraphQL Playground or REST clients to interact with the API.

## Configuration

The application uses configuration files and environment variables to configure key settings. Important configuration values are:

- **MongoDB connection:**
- Set your MongoDB connection string (default database name is `ShoppingAssistant`) in `appsettings.json` or environment variable:
```json
"ConnectionStrings": {
"MongoDatabaseName": "ShoppingAssistant"
}
```
- The connection string URL is typically configured externally.

- **JWT Authentication:**
Configure JWT validation parameters in your configuration with keys like:
```json
"JsonWebTokenKeys": {
"ValidateIssuer": true,
"ValidateAudience": true,
"ValidateLifetime": true,
"ValidateIssuerSigningKey": true,
"ValidIssuer": "",
"ValidAudience": "",
"IssuerSigningKey": ""
}
```

- **OpenAI API:**
API endpoint and API key settings:
```json
"OpenAi": {
"ApiUrl": "https://api.openai.com/v1/chat/completions",
"ApiKey": ""
}
```
Set the API key securely via environment variables or Azure App Configuration.