How can I help you?
DeepSeek AI Integration with ASP.NET Core Smart Paste Button
14 May 202611 minutes to read
The Syncfusion ASP.NET Core SmartPaste Button control enables AI-powered, context-aware content pasting into forms, typically using OpenAI or Azure OpenAI. This guide explains how to integrate the DeepSeek AI service with the Smart Paste Button using the IChatInferenceService interface, enabling custom AI-driven responses in a ASP.NET Core App.
Setting Up DeepSeek
-
Obtain a DeepSeek API Key
Create an account at DeepSeek Platform, sign in, and navigate to API Keys to generate an API key. -
Review Model Specifications
Refer to DeepSeek Models Documentation for details on available models (e.g.,deepseek-chat).
Create a DeepSeek AI Service
Create a service class to manage interactions with the DeepSeek API, including authentication and response processing for the Smart Paste Button.
- Create a
Servicesfolder in your project. - Add a new file named
DeepSeekAIService.csin theServicesfolder. - Implement the service as shown below, storing the API key securely in a configuration file or environment variable (e.g.,
appsettings.json).
using System.Net;
using System.Text;
using System.Text.Json;
using Microsoft.Extensions.AI;
public class DeepSeekAIService
{
private readonly string _apiKey;
private readonly string _modelName = "deepseek-chat"; // Example model
private readonly string _endpoint = "https://api.deepseek.com/chat/completions";
private static readonly HttpClient HttpClient = new(new SocketsHttpHandler
{
PooledConnectionLifetime = TimeSpan.FromMinutes(30),
EnableMultipleHttp2Connections = true
})
{
DefaultRequestVersion = HttpVersion.Version20 // Fallback to HTTP/2 for compatibility
};
private static readonly JsonSerializerOptions JsonOptions = new()
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
public DeepSeekAIService(IConfiguration configuration)
{
_apiKey = configuration["DeepSeek:ApiKey"] ?? throw new ArgumentNullException("DeepSeek API key is missing.");
if (!HttpClient.DefaultRequestHeaders.Contains("Authorization"))
{
HttpClient.DefaultRequestHeaders.Clear();
HttpClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {_apiKey}");
}
}
public async Task<string> CompleteAsync(IList<ChatMessage> chatMessages)
{
var requestBody = new DeepSeekChatRequest
{
Model = _modelName,
Temperature = 0.7f, // Controls response randomness (0.0 to 1.0)
Messages = chatMessages.Select(m => new DeepSeekMessage
{
Role = m.Role == ChatRole.User ? "user" : "system", // Align with DeepSeek API roles
Content = m.Text
}).ToList()
};
var content = new StringContent(JsonSerializer.Serialize(requestBody, JsonOptions), Encoding.UTF8, "application/json");
try
{
var response = await HttpClient.PostAsync(_endpoint, content);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
var responseObject = JsonSerializer.Deserialize<DeepSeekChatResponse>(responseString, JsonOptions);
return responseObject?.Choices?.FirstOrDefault()?.Message?.Content ?? "No response from DeepSeek.";
}
catch (Exception ex) when (ex is HttpRequestException || ex is JsonException)
{
throw new InvalidOperationException("Failed to communicate with DeepSeek API.", ex);
}
}
}NOTE
Store the DeepSeek API key in
appsettings.json(e.g.,{ "DeepSeek": { "ApiKey": "your-api-key" } }) or as an environment variable to ensure security.
Define Request and Response Models
Define C# classes to match the DeepSeek API’s JSON request and response format.
- Create a new file named
DeepSeekModels.csin theServicesfolder. - Add the following model classes:
public class DeepSeekMessage
{
public string Role { get; set; }
public string Content { get; set; }
}
public class DeepSeekChatRequest
{
public string Model { get; set; }
public float Temperature { get; set; }
public List<DeepSeekMessage> Messages { get; set; }
}
public class DeepSeekChatResponse
{
public List<DeepSeekChoice> Choices { get; set; }
}
public class DeepSeekChoice
{
public DeepSeekMessage Message { get; set; }
}Create a Custom AI Service
Implement the IChatInferenceService interface to connect the Smart Paste Button to the DeepSeek service, acting as a bridge for AI-generated responses.
- Create a new file named
DeepSeekInferenceService.csin theServicesfolder. - Add the following implementation:
using Syncfusion.EJ2.AI;
using System.Threading.Tasks;
public class DeepSeekInferenceService : IChatInferenceService
{
private readonly DeepSeekAIService _deepSeekService;
public DeepSeekInferenceService(DeepSeekAIService deepSeekService)
{
_deepSeekService = deepSeekService;
}
public async Task<string> GenerateResponseAsync(ChatParameters options)
{
return await _deepSeekService.CompleteAsync(options.Messages);
}
}Configure the Blazor App
Register the DeepSeek service and IChatInferenceService implementation in the dependency injection container.
Update the ~/Program.cs file as follows:
using Syncfusion.EJ2;
using Syncfusion.EJ2.AI;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddSyncfusionSmartComponents();
builder.Services.AddSingleton<DeepSeekAIService>();
builder.Services.AddSingleton<IChatInferenceService, DeepSeekInferenceService>();
var app = builder.Build();
// ...Add the Smart Paste Button
Add the Smart Paste Button to a form in the ~/Pages/Index.cshtml file to test the DeepSeek AI integration.
<h1>Contact Form</h1>
<form action="/submit" method="post">
<div class="mb-2">
<label for="name" class="form-label">Full Name</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="mb-2">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="mb-2">
<label for="phone" class="form-label">Phone Number</label>
<input type="tel" class="form-control" id="phone" name="phone">
</div>
<div class="mb-2">
<label for="message" class="form-label">Message</label>
<textarea class="form-control" id="message" name="message" rows="4"></textarea>
</div>
<div class="mb-2 form-check">
<input type="checkbox" class="form-check-input" id="newsletter" name="newsletter" checked>
<label class="form-check-label" for="newsletter">Subscribe to newsletter</label>
</div>
<div class="mb-2">
<label class="form-label">Preferred Contact Method</label>
<div class="form-check">
<input type="radio" class="form-check-input" id="email-contact" name="contact" value="email">
<label class="form-check-label" for="email-contact">Email</label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" id="phone-contact" name="contact" value="phone">
<label class="form-check-label" for="phone-contact">Phone</label>
</div>
</div>
<div class="mb-2">
<label for="country" class="form-label">Country</label>
<select class="form-select" id="country" name="country">
<option value="">Select Country</option>
<option value="United States">United States</option>
<option value="Canada">Canada</option>
<option value="United Kingdom">United Kingdom</option>
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-secondary">Reset</button>
<ejs-smartpaste id="smartPasteBtn" content="Smart Paste" cssClass="e-primary" iconCss="e-icons e-paste"></ejs-smartpaste>
</form>
<br />
<div>
I am John Doe from the United States. My email is [email protected], and my phone number is 555-123-4567. I’d like to inquire about your services and have a detailed discussion regarding your product offerings. Please contact me via email. I’m happy to subscribe to your newsletter for updates. Thank you!
</div>Press Ctrl+F5 (Windows) or ⌘+F5 (macOS) to run the app. Then, the Syncfusion® ASP.NET Core
Smart Paste Button control will be rendered in the default web browser.

Troubleshooting
If the DeepSeek AI integration does not work, try the following:
-
No Suggestions Displayed: Verify that the DeepSeek API key and model name are correct in the configuration. Check the
DeepSeekAIServiceimplementation for errors. -
HTTP Request Failures: Ensure a stable internet connection and that the DeepSeek API endpoint (
https://api.deepseek.com/v1/chat/completions) is accessible. Test with HTTP/2 if compatibility issues arise. -
Service Registration Errors: Confirm that
DeepSeekAIServiceandDeepSeekInferenceServiceare registered in Program.cs.