小白入手实现AI客服机器人demo

一、环境准备

1 安装python
2 安装vscode
3 安装相关python库
pip install flask flask_cors openai

4.在vscode里安装TONGYI Lingma(AI编程助手)

二、后端搭建

创建一个后端文件夹chatbot,再新建一个app.py的python文件

c 复制代码
from flask import Flask, request, jsonify
from flask_cors import CORS
from openai import OpenAI
import os

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())


client = OpenAI()


app = Flask(__name__)
CORS(app, resources={r"/*":{"origins": "*"}}) # 这会为所有端点添加跨源头部分

@app.route('/ask', methods=['POST'])

def ask():
    user_question = request.json['message']
    answer = get_answer_from_model(user_question)
    return jsonify({'answer': answer})


def get_answer_from_model(message):
    response = client.completions.create(
        model="gpt-3.5-turbo-instruct",
        prompt=message,
        max_tokens=512,
        # stream=False
        stream=True
    )

    print('response:',response)
    # answer = response.choices[0].text.strip()

    answer = ""
    for chunk in response:
        answer += chunk.choices[0].text

    return answer

if __name__ == '__main__':
    app.run(debug=True, port=5000)

三、前端搭建

1 创建前端文件夹chatbot-interface
2 创建三个前端的文件index.html styles.css srcript.js

index.html

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AI Chatbot</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="chat-container">
        <div class="chat-header">
            <h3>AI Chatbot</h3>
        </div>
        <div class="chat-box" id="chat-box">
            <!-- 聊天消息将在这里显示 -->
        </div>
        <div class="chat-input">
            <input type="text" id="user-input" placeholder="Type your message...">
            <button id="send-button" onclick="sendMessage()">Send</button>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>

styles.css

css 复制代码
body, html {
    margin: 0;
    padding: 0;
    font-family: Arial, sans-serif;
}

.chat-container {
    max-width: 1080px;
    margin: 30px auto;
    border: 1px solid #ccc;
    border-radius: 5px;
}

.chat-header {
    background-color: #f4f4f4;
    padding: 10px;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
}

.chat-box {
    height: 720px;
    overflow-y: scroll;
    padding: 15px;
    background-color: #fff;
}

.chat-input {
    padding: 10px;
    display: flex;
    justify-content: space-between;
}

.chat-input input {
    flex-grow: 1;
    padding: 5px;
    border: 1px solid #ccc;
    border-radius: 5px;
}

.chat-input button {
    padding: 5px 15px;
    background-color: #007bff;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
}

/* 简单的动画效果 */
.chat-box::-webkit-scrollbar {
    width: 6px;
}

.chat-box::-webkit-scrollbar-thumb {
    background-color: #ccc;
}

script.js

javascript 复制代码
var inputBox = document.getElementById('user-input');
var sendButton = document.getElementById('send-button');
inputBox.addEventListener('keydown', function(event) {
    if (event.keyCode === 13 || event.key === 'Enter') {
        event.preventDefault();
        sendMessage();
    }
});

function sendMessage() {
    //var userInput = document.getElementById('user-input').value;
    var userInput = inputBox.value;
    if (userInput.trim() === '') return;

    // 将用户输入添加到聊天框
    addToChatBox('baiyang', userInput);

    // 清空输入框
    document.getElementById('user-input').value = '';

    // 假设这里发送请求到服务器,并获取AI的回复
    fetch('http://127.0.0.1:5000/ask', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ message: userInput })
    })
    .then(response => {
        if (!response.ok){
            throw new Error('Network response was not ok');
        }
        return response.json()})
    .then(data => {
        // 将AI的回复添加到聊天框
        if (data && data.answer){
            console.log(data.answer);
            addToChatBox("douwan", data.answer);
        }
        else{
            console.error('Invalid response data:', data);
        }
        // addToChatBox('AI', data.reply);
    })
    .catch((error) => {
        console.error('Error:', error);
    });
}

function addToChatBox(sender, message) {
    var chatBox = document.getElementById('chat-box');
    var div = document.createElement('div');
    div.innerHTML = `<strong>${sender}:</strong> ${message}`;
    chatBox.appendChild(div);
    chatBox.scrollTop = chatBox.scrollHeight; // 自动滚动到底部
}

四、效果展示

1 首先运行app.py文件,在vscode中运行,如

2 浏览器打开index文件,在输入框中输入相关文件,发送可返回信息。

相关推荐
大象耶1 小时前
计算机视觉六大前沿创新方向
论文阅读·人工智能·深度学习·计算机网络·机器学习
TMT星球2 小时前
加速进化发布Booster K1,打造AI时代的苹果公司
人工智能
tangchen。2 小时前
YOLOv4 :兼顾速度与精度!
人工智能·计算机视觉·目标跟踪
郑清2 小时前
Spring AI Alibaba 10分钟快速入门
java·人工智能·后端·ai·1024程序员节·springaialibaba
学术头条2 小时前
用视觉压缩文本!清华、智谱推出Glyph框架:通过视觉-文本压缩扩展上下文窗口
人工智能·深度学习·计算机视觉
Mrliu__3 小时前
Opencv(一): 用Opencv了解图像
人工智能·opencv·计算机视觉
墨香幽梦客4 小时前
掌控制造脉络:电子元器件行业常用ERP系统概览与参考指南
大数据·人工智能
大模型知识营地4 小时前
详解 astream 方法与 stream_mode,构建高级人机交互 Agent
人工智能
知行力5 小时前
百度PaddleOCR-VL:基于0.9B超紧凑视觉语言模型,支持109种语言,性能超越GPT-4o等大模型
人工智能·百度·1024程序员节
deephub5 小时前
vLLM 性能优化实战:批处理、量化与缓存配置方案
人工智能·python·大语言模型·1024程序员节·vllm