首頁 >後端開發 >Python教學 >建立簡單的生成式人工智慧聊天機器人:實用指南

建立簡單的生成式人工智慧聊天機器人:實用指南

Linda Hamilton
Linda Hamilton原創
2024-12-11 13:12:11223瀏覽

Building a Simple Generative AI Chatbot: A Practical Guide

在本教學中,我們將逐步使用 Python 和 OpenAI API 建立生成式 AI 聊天機器人。我們將建立一個聊天機器人,它可以進行自然對話,同時保持上下文並提供有用的回應。

先決條件

  • Python 3.8
  • Python 程式設計的基本了解
  • OpenAI API 金鑰
  • RESTful API 基礎

設定環境

首先,讓我們設定我們的開發環境。建立一個新的Python專案並安裝所需的依賴項:

pip install openai python-dotenv streamlit

專案結構

我們的聊天機器人將具有乾淨的模組化結構:

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

執行

讓我們從 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)}"

現在,讓我們在 app.py 中使用 Streamlit 建立一個簡單的 Web 介面:

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()

主要特點

  1. 對話記憶:聊天機器人透過儲存對話歷史記錄來維持上下文。
  2. 系統提示:我們透過系統提示定義聊天機器人的行為和個性。
  3. 錯誤處理:實作包含 API 呼叫的基本錯誤處理。
  4. 使用者介面:使用 Streamlit 的乾淨、直覺的 Web 介面。

運行聊天機器人

  1. 使用您的 OpenAI API 金鑰建立 .env 檔案:
OPENAI_API_KEY=your_api_key_here
  1. 運行應用程式:
streamlit run app.py

潛在的增強功能

  1. 對話持久化:新增資料庫整合來儲存聊天歷史記錄。
  2. 自訂個性:讓使用者選擇不同的聊天機器人個性。
  3. 輸入驗證:增加更強大的輸入驗證和清理。
  4. API 速率限制:實作速率限制來管理 API 使用。
  5. 回應流:新增串流回應以獲得更好的使用者體驗。

結論

此實作示範了一個基本但實用的生成式 AI 聊天機器人。模組化設計可以根據特定需求輕鬆擴展和自訂。雖然此範例使用 OpenAI 的 API,但相同的原理也可以應用於其他語言模型或 API。

請記住,部署聊天機器人時,您應該考慮:

  • API 成本與使用限制
  • 使用者資料隱私與安全
  • 反應延遲與最佳化
  • 輸入驗證與內容審核

資源

  • OpenAI API 文件
  • 精簡文件
  • Python 環境管理

以上是建立簡單的生成式人工智慧聊天機器人:實用指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn