Oussama SAIDI

0 %
Oussama SAIDI
Consultant .Net
Sharepoint Office 365

  • Résidence:
    France
  • Ville:
    Lille
Arabe
Français
Anglais
.Net
Html/Css/Js
Web Api
Base de données
  • C#,.Net Core, .Net MVC
  • Rest Api
  • Docker
  • GIT,TFS

Créer un Chatbot avec DeepSeek et .NET 9 : Tutoriel Complet

avril 6, 2025

Ce tutoriel vous guidera pas à pas pour construire un chatbot utilisant l’API de DeepSeek avec .NET 9. Nous allons créer une application web de chatbot avec ASP.NET Core.

Prérequis

  • SDK .NET 9
  • Visual Studio 2022 (ou VS Code)
  • Clé API DeepSeek (inscrivez-vous sur le site de DeepSeek)
  • Connaissances de base en C# et ASP.NET Core

Étape 1 : Créer une nouvelle application Web ASP.NET Core

dotnet new webapp -n DeepSeekChatBot -f net9.0
cd DeepSeekChatBot

Étape 2 : Ajouter les packages nécessaires

dotnet add package Microsoft.AspNetCore.Components.WebAssembly.Server
dotnet add package System.Net.Http.Json
dotnet add package Newtonsoft.Json

Étape 3 : Créer les modèles pour l’API DeepSeek

Créez un dossier Models et ajoutez ces classes :

//Models/ChatMessage.cs
// Models/ChatRequest.cs

Étape 4 : Créer un service pour l’API DeepSeek

Créez un dossier Services et ajoutez :

//Services/DeepSeekService.cs

Étape 5 : Configurer le service dans Program.cs

builder.Services.AddHttpClient<DeepSeekService>();
builder.Services.AddScoped<DeepSeekService>();

// Ajoutez votre clé API dans appsettings.json
// {
//   "DeepSeek": {
//     "ApiKey": "votre-clé-api-ici"
//   }
// }

Étape 6 : Créer une Page de Chat

Créez une nouvelle Razor Page dans le dossier Pages nommée Chat.cshtml et Chat.cshtml.cs :

//Pages/Chat.cshtml.cs
@page
@model ChatModel

<div class="container mt-5">
    <div class="row">
        <div class="col-md-8 offset-md-2">
            <div class="card">
                <div class="card-header bg-primary text-white">
                    <h3>ChatBot DeepSeek</h3>
                </div>
                <div class="card-body chat-container" style="height: 400px; overflow-y: auto;">
                    @foreach (var message in Model.Messages)
                    {
                        <div class="@(message.Role == "user" ? "text-end" : "text-start") mb-3">
                            <div class="@(message.Role == "user" ? "bg-primary text-white" : "bg-light") p-3 rounded">
                                <strong>@(message.Role == "user" ? "Vous" : "IA"):</strong>
                                <p class="mb-0">@message.Content</p>
                            </div>
                        </div>
                    }
                </div>
                <div class="card-footer">
                    <form method="post">
                        <div class="input-group">
                            <input type="text" class="form-control" asp-for="UserMessage" placeholder="Tapez votre message...">
                            <button type="submit" class="btn btn-primary">Envoyer</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

@section Scripts {
    <script>
        // Défilement automatique vers le bas du chat
        document.addEventListener("DOMContentLoaded", function() {
            var chatContainer = document.querySelector('.chat-container');
            chatContainer.scrollTop = chatContainer.scrollHeight;
        });
    </script>
}

Étape 7 : Ajouter la Navigation vers la Page de Chat

Ajoutez dans Pages/Shared/_Layout.cshtml dans la barre de navigation :

<li class="nav-item">
    <a class="nav-link text-dark" asp-page="/Chat">Chat avec l'IA</a>
</li>

Étape 8 : Lancer l’Application

dotnet run

Visitez https://localhost:5001/Chat dans votre navigateur pour interagir avec le chatbot.

Fonctionnalités Avancées (Optionnelles)

1. Réponses en Streaming

Modifiez le DeepSeekService pour gérer le streaming :

2. Ajouter SignalR pour des Mises à Jour en Temps Réel

Ajoutez le package SignalR :

dotnet add package Microsoft.AspNetCore.SignalR.Client

Créez un Hub :

// Hubs/ChatHub.cs
using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

Enregistrez dans Program.cs :

builder.Services.AddSignalR();

app.MapHub<ChatHub>("/chatHub");

3. Ajouter une Mémoire/Historique de Chat

Créez un service pour gérer l’historique des conversations :

// Services/ChatHistoryService.cs
public class ChatHistoryService
{
    private readonly List<ChatMessage> _conversationHistory = new();
    
    public void AddMessage(ChatMessage message)
    {
        _conversationHistory.Add(message);
    }
    
    public List<ChatMessage> GetConversationHistory()
    {
        return _conversationHistory;
    }
    
    public void ClearHistory()
    {
        _conversationHistory.Clear();
    }
}

Enregistrez dans Program.cs :

builder.Services.AddSingleton<ChatHistoryService>();

Déploiement

Pour déployer votre chatbot :

  1. Publiez l’application :
dotnet publish -c Release -o ./publish
  1. Déployez sur votre hébergeur préféré (Azure, AWS, etc.)

Considérations de Sécurité

  1. Ne jamais exposer votre clé API dans le code client
  2. Pensez à ajouter une limitation de débit
  3. Implémentez une gestion d’erreurs appropriée
  4. Ajoutez une authentification utilisateur si nécessaire

Conclusion

Vous avez maintenant créé un chatbot entièrement fonctionnel utilisant l’API de DeepSeek avec .NET 9. Cette implémentation comprend :

  • Des fonctionnalités de chat de base
  • Une intégration API appropriée
  • Un historique de conversation
  • Une interface utilisateur simple

Vous pouvez l’étendre en ajoutant :

  • Une authentification utilisateur
  • Une persistance des conversations
  • Des fonctionnalités d’interface plus avancées
  • Une intégration avec d’autres services

Vous avez des questions ou des suggestions ? Laissez un commentaire ci-dessous ! 🚀


Code complet disponible sur GitHub

Publié dans Uncategorized
© 2024 Tous les droits sont réservés.
oussamasaidi.com