Building a Simple Generative AI Chatbot: A Practical Guide
In this tutorial, we'll walk through creating a generative AI chatbot using Python and the OpenAI API. We'll build a chatbot that can engage in natural conversations while maintaining context and providing helpful responses.
Prerequisites
- Python 3.8
- Basic understanding of Python programming
- OpenAI API key
- Basic knowledge of RESTful APIs
Setting Up the Environment
First, let's set up our development environment. Create a new Python project and install the required dependencies:
pip install openai python-dotenv streamlit
Project Structure
Our chatbot will have a clean, modular structure:
chatbot/ ├── .env ├── app.py ├── chat_handler.py └── requirements.txt
Implementation
Let's start with our core chatbot logic in 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)}"
Now, let's create a simple web interface using Streamlit in 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()
Key Features
- Conversation Memory: The chatbot maintains context by storing the conversation history.
- System Prompt: We define the chatbot's behavior and personality through a system prompt.
- Error Handling: The implementation includes basic error handling for API calls.
- User Interface: A clean, intuitive web interface using Streamlit.
Running the Chatbot
- Create a .env file with your OpenAI API key:
OPENAI_API_KEY=your_api_key_here
- Run the application:
streamlit run app.py
Potential Enhancements
- Conversation Persistence: Add database integration to store chat histories.
- Custom Personalities: Allow users to select different chatbot personalities.
- Input Validation: Add more robust input validation and sanitization.
- API Rate Limiting: Implement rate limiting to manage API usage.
- Response Streaming: Add streaming responses for better user experience.
Conclusion
This implementation demonstrates a basic but functional generative AI chatbot. The modular design makes it easy to extend and customize based on specific needs. While this example uses OpenAI's API, the same principles can be applied with other language models or APIs.
Remember that when deploying a chatbot, you should consider:
- API costs and usage limits
- User data privacy and security
- Response latency and optimization
- Input validation and content moderation
Resources
- OpenAI API Documentation
- Streamlit Documentation
- Python Environment Management
The above is the detailed content of Building a Simple Generative AI Chatbot: A Practical Guide. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How does Uvicorn continuously listen for HTTP requests? Uvicorn is a lightweight web server based on ASGI. One of its core functions is to listen for HTTP requests and proceed...

Fastapi ...

Using python in Linux terminal...

Understanding the anti-crawling strategy of Investing.com Many people often try to crawl news data from Investing.com (https://cn.investing.com/news/latest-news)...
