Xây dựng chatbot AI với Python: từ rule-based đến LLM

Các loại chatbot

  • Rule-based: Phản hồi theo luật cố định
  • ML-based: Học từ dữ liệu hội thoại
  • LLM-powered: Sử dụng mô hình ngôn ngữ lớn (GPT, Gemini)

Chatbot đơn giản với intent matching

import re

intents = {
    r"(xin chào|hello|hi)": "Xin chào! Tôi là chatbot Python Vietnam 🐍",
    r"(python là gì)": "Python là ngôn ngữ lập trình đa năng, dễ học và phổ biến nhất thế giới!",
    r"(học python)": "Bạn có thể bắt đầu tại pythonvietnam.com — hoàn toàn miễn phí!",
    r"(cảm ơn|thanks)": "Không có gì! Chúc bạn học tốt! 🎉",
}

def chatbot_response(message):
    message = message.lower()
    for pattern, response in intents.items():
        if re.search(pattern, message):
            return response
    return "Xin lỗi, tôi chưa hiểu câu hỏi. Bạn hỏi lại được không?"

# Chat loop
while True:
    user_input = input("Bạn: ")
    if user_input.lower() in ["quit", "exit"]:
        break
    print(f"Bot: {chatbot_response(user_input)}")

Tích hợp OpenAI GPT

from openai import OpenAI

client = OpenAI(api_key="your-api-key")

def ask_gpt(question, context="Bạn là trợ lý AI chuyên về Python"):
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[
            {"role": "system", "content": context},
            {"role": "user", "content": question}
        ],
        temperature=0.7,
        max_tokens=500
    )
    return response.choices[0].message.content

answer = ask_gpt("Decorator trong Python là gì?")
print(answer)

RAG Chatbot với LangChain

from langchain.chains import RetrievalQA
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings, ChatOpenAI

# Load documents → embeddings → vector store
vectorstore = FAISS.load_local("docs_index", OpenAIEmbeddings())

qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o-mini"),
    retriever=vectorstore.as_retriever(search_kwargs={"k": 3})
)

answer = qa_chain.invoke("Cách dùng decorator trong Python?")
print(answer["result"])

LangChain + LLM cho phép xây dựng chatbot thông minh có thể trả lời dựa trên tài liệu riêng của bạn.

Chia sẻ bài viết: