recherche
Maisondéveloppement back-endTutoriel PythonConstruire un chatbot IA génératif simple : un guide pratique

Building a Simple Generative AI Chatbot: A Practical Guide

Dans ce didacticiel, nous expliquerons la création d'un chatbot IA génératif à l'aide de Python et de l'API OpenAI. Nous créerons un chatbot capable d'engager des conversations naturelles tout en maintenant le contexte et en fournissant des réponses utiles.

Conditions préalables

  • Python 3.8
  • Compréhension de base de la programmation Python
  • Clé API OpenAI
  • Connaissance de base des API RESTful

Configuration de l'environnement

Tout d'abord, configurons notre environnement de développement. Créez un nouveau projet Python et installez les dépendances requises :

pip install openai python-dotenv streamlit

Structure du projet

Notre chatbot aura une structure propre et modulaire :

chatbot/
├── .env
├── app.py
├── chat_handler.py
└── requirements.txt

Mise en œuvre

Commençons par notre logique de chatbot de base dans chat_handler.py :

import openai
from typing import List, Dict
import os
from dotenv import load_dotenv

load_dotenv()

class ChatBot:
    def __init__(self):
        openai.api_key = os.getenv("OPENAI_API_KEY")
        self.conversation_history: List[Dict[str, str]] = []
        self.system_prompt = """You are a helpful AI assistant. Provide clear, 
        accurate, and engaging responses while maintaining a friendly tone."""

    def add_message(self, role: str, content: str):
        self.conversation_history.append({"role": role, "content": content})

    def get_response(self, user_input: str) -> str:
        # Add user input to conversation history
        self.add_message("user", user_input)

        # Prepare messages for API call
        messages = [{"role": "system", "content": self.system_prompt}] + \
                  self.conversation_history

        try:
            # Make API call to OpenAI
            response = openai.ChatCompletion.create(
                model="gpt-3.5-turbo",
                messages=messages,
                max_tokens=1000,
                temperature=0.7
            )

            # Extract and store assistant's response
            assistant_response = response.choices[0].message.content
            self.add_message("assistant", assistant_response)

            return assistant_response

        except Exception as e:
            return f"An error occurred: {str(e)}"

Maintenant, créons une interface Web simple en utilisant Streamlit dans app.py :

import streamlit as st
from chat_handler import ChatBot

def main():
    st.title("? AI Chatbot")

    # Initialize session state
    if "chatbot" not in st.session_state:
        st.session_state.chatbot = ChatBot()

    # Chat interface
    if "messages" not in st.session_state:
        st.session_state.messages = []

    # Display chat history
    for message in st.session_state.messages:
        with st.chat_message(message["role"]):
            st.write(message["content"])

    # Chat input
    if prompt := st.chat_input("What's on your mind?"):
        # Add user message to chat history
        st.session_state.messages.append({"role": "user", "content": prompt})
        with st.chat_message("user"):
            st.write(prompt)

        # Get bot response
        response = st.session_state.chatbot.get_response(prompt)

        # Add assistant response to chat history
        st.session_state.messages.append({"role": "assistant", "content": response})
        with st.chat_message("assistant"):
            st.write(response)

if __name__ == "__main__":
    main()

Principales fonctionnalités

  1. Mémoire de conversation : Le chatbot maintient le contexte en stockant l'historique des conversations.
  2. Invite système : Nous définissons le comportement et la personnalité du chatbot via une invite système.
  3. Gestion des erreurs : l'implémentation inclut la gestion des erreurs de base pour les appels d'API.
  4. Interface utilisateur : une interface Web claire et intuitive utilisant Streamlit.

Exécuter le chatbot

  1. Créez un fichier .env avec votre clé API OpenAI :
OPENAI_API_KEY=your_api_key_here
  1. Exécutez l'application :
streamlit run app.py

Améliorations potentielles

  1. Persistance des conversations : ajoutez l'intégration d'une base de données pour stocker les historiques de discussion.
  2. Personnalités personnalisées : permet aux utilisateurs de sélectionner différentes personnalités de chatbot.
  3. Validation des entrées : ajoutez une validation et une désinfection des entrées plus robustes.
  4. Limitation du débit API : implémentez une limitation du débit pour gérer l'utilisation de l'API.
  5. Response Streaming : ajoutez des réponses en streaming pour une meilleure expérience utilisateur.

Conclusion

Cette implémentation démontre un chatbot IA génératif basique mais fonctionnel. La conception modulaire facilite l'extension et la personnalisation en fonction des besoins spécifiques. Bien que cet exemple utilise l'API d'OpenAI, les mêmes principes peuvent être appliqués avec d'autres modèles de langage ou API.

N'oubliez pas que lors du déploiement d'un chatbot, vous devez considérer :

  • Coûts de l'API et limites d'utilisation
  • Confidentialité et sécurité des données utilisateur
  • Latence de réponse et optimisation
  • Validation des entrées et modération du contenu

Ressources

  • Documentation de l'API OpenAI
  • Documentation diffusée
  • Gestion de l'environnement Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Python: compilateur ou interprète?Python: compilateur ou interprète?May 13, 2025 am 12:10 AM

Python est une langue interprétée, mais elle comprend également le processus de compilation. 1) Le code Python est d'abord compilé en bytecode. 2) ByteCode est interprété et exécuté par Python Virtual Machine. 3) Ce mécanisme hybride rend Python à la fois flexible et efficace, mais pas aussi rapide qu'une langue entièrement compilée.

Python pour Loop vs While Loop: Quand utiliser lequel?Python pour Loop vs While Loop: Quand utiliser lequel?May 13, 2025 am 12:07 AM

Usaforloopwheniterating aepasquenceorfor pourpascific inumberoftimes; useawhileloopwencontinTutuntutilaconditioniseMet.ForloopsareIdealForkNown séquences, tandis que celle-ci, ce qui est en train de réaliser des étages.

Python Loops: les erreurs les plus courantesPython Loops: les erreurs les plus courantesMay 13, 2025 am 12:07 AM

PythonloopscanleadtoerrorlikeInfiniteLoops, modificationlistDuringiteration, off-by-by-oneerrors, zéro-indexingisss et intestloopinefficisecy.toavoid this: 1) use'i

Pour la boucle et bien que la boucle en python: quels sont les avantages de chacun?Pour la boucle et bien que la boucle en python: quels sont les avantages de chacun?May 13, 2025 am 12:01 AM

ForloopsAreAdvantageSousForkNowiterations et séquences, offrant laimplicité et la réadaptation;

Python: une plongée profonde dans la compilation et l'interprétationPython: une plongée profonde dans la compilation et l'interprétationMay 12, 2025 am 12:14 AM

Pythonusahybridmodelofcompilation et interprétation: 1) thepythoninterpreterCompileSourCodeIntOplatform-indépendantBytecode.2) thepythonvirtualmachine (pvm) there examenesthisbytecode, équilibrage de l'usage de la performance.

Python est-il une langue interprétée ou compilée, et pourquoi est-ce important?Python est-il une langue interprétée ou compilée, et pourquoi est-ce important?May 12, 2025 am 12:09 AM

Pythonisbothinterpretedand compiled.1) il est composédToByteCodeForportabilityAcrosplatforms.2) theytecodeisthenter interprété, permettant à OrdayNamictypingAndRapidDevelopment, bien que MaybeSlowerSlowerSwower, aisance.

Pour Loop vs While Loop in Python: les principales différences expliquéesPour Loop vs While Loop in Python: les principales différences expliquéesMay 12, 2025 am 12:08 AM

Forloopsareideal quand vous savez que l'immatriculation des adressages a une avance, tandis que ce qui est de savoir si

Pour et bien que les boucles: un guide pratiquePour et bien que les boucles: un guide pratiqueMay 12, 2025 am 12:07 AM

Forloopsaseesesed whenthenUmberoFitations dissownininadvance, tandis que celle-ci a été utilisé sur les éléments de la dispense

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP