如何实现一个与AI角色聊天

发表于:2024-12-19 23:50:38

本文将通过代码分析和详细讲解,帮助你实现一个与AI角色进行实时互动的网页,类似于本文中提到的聊天系统。

最近写了一个Ai福瑞聊天,现在把方法分享出来

1. HTML 结构

HTML 是整个网页的基础。代码包含以下主要部分:

  • 头部信息:如字符编码、标题、图标和样式表链接。
  • 主体结构:页面主要分为三部分:
    • 主聊天界面
    • 角色介绍
    • 提示内容

代码结构

<!DOCTYPE html>
<html lang="zh-CN" data-theme="dark">
<head>
    <meta charset="UTF-8">
    <title>订阅 - 萬事屋日記</title>
    <!-- 样式和脚本文件 -->
    <link rel="stylesheet" href="路径/to/样式.css">
    <script src="路径/to/脚本.js"></script>
</head>
<body>
    <!-- 标题和头部 -->
    <?php include 'includes/title.php'; ?>
    <?php include 'includes/header.php'; ?>

    <!-- 主内容部分 -->
    <div class="content">
        <div class="ui grid">
            <div class="twelve wide column">
                <div class="ui segment chat-container main-chat">
                    <!-- 主聊天区域 -->
                    <h2 class="ui header">与角色聊天</h2>
                    <div id="main-chat-messages" class="chat-messages"></div>
                    <div class="input-area">
                        <textarea id="main-user-input" placeholder="输入内容..." rows="1"></textarea>
                        <button onclick="sendMainMessage()" class="ui button">
                            <i class="fas fa-paper-plane"></i>
                        </button>
                    </div>
                </div>
            </div>
            <div class="four wide column">
                <div class="ui segment">
                    <h3 class="ui header">关于角色</h3>
                    <p>个性描述、背景等信息。</p>
                </div>
                <div class="ui segment">
                    <h3 class="ui header">提示</h3>
                    <p>提供用户如何使用聊天功能的说明。</p>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

2. JavaScript 功能实现

JavaScript 用于处理交互,包括:

  • 动态显示消息
  • 与后端通信
  • 提供 AI 角色的响应

以下是关键功能解析:

2.1 初始化聊天角色:这个是一个核心代码

const systemPrompt = `
    你是一只可爱的小狼,性格活泼开朗。请用温柔可爱的语气回应用户。
`;
  • systemPrompt 定义了角色的性格和说话方式,发送给 AI 后,AI 会基于此设置回复内容。

2.2 发送消息的实现

async function sendMainMessage() {
    const userInput = document.getElementById('main-user-input');
    const message = userInput.value.trim();
    if (!message) return;

    // 显示用户消息
    addMessage(message, 'user', 'main-chat-messages');
    userInput.value = '';

    // 发送请求
    const response = await fetch(API_URL, {
        method: 'POST',
        headers: { 'Authorization': `Bearer ${API_KEY}` },
        body: JSON.stringify({ messages: [{ role: "system", content: systemPrompt }, { role: "user", content: message }] })
    });

    // 显示 AI 回复
    const aiResponse = await response.json();
    addMessage(aiResponse.choices[0].message.content, 'ai', 'main-chat-messages');
}
  • 发送消息时,将用户输入和系统提示组合成对话历史,发送到指定的 API。

2.3 消息显示效果

function addMessage(message, sender, containerId) {
    const container = document.getElementById(containerId);
    const messageDiv = document.createElement('div');
    messageDiv.className = `${sender}-message`;
    messageDiv.textContent = message;
    container.appendChild(messageDiv);
}
  • 用户和 AI 的消息分别用不同的样式显示。

3. 样式设计

样式部分负责布局和美化聊天界面。以下是关键 CSS 示例:

body {
    font-family: Arial, sans-serif;
    background-color: #333;
    color: #fff;
}

.chat-container {
    border: 1px solid #444;
    border-radius: 10px;
    padding: 20px;
    background-color: #444;
}

.user-message {
    text-align: right;
    background-color: #007bff;
    color: #fff;
    margin: 10px 0;
    padding: 10px;
    border-radius: 10px;
}

.ai-message {
    text-align: left;
    background-color: #f1f1f1;
    color: #000;
    margin: 10px 0;
    padding: 10px;
    border-radius: 10px;
}

4. 高级功能

  • 动态代码块显示:通过高亮插件(如 Highlight.js),支持代码块的动态加载与复制。
  • 主题切换:使用 localStorage 保存用户选择的主题(暗黑模式或浅色模式)

5. 运行效果

完成代码后,将文件放置在支持 PHP 的服务器环境,访问页面即可体验与 AI 角色的互动。适配移动设备,确保聊天界面响应式良好。

通过以上步骤,你可以轻松实现一个与 AI 角色互动的聊天网页。根据需要修改角色的设定和功能,打造属于你自己的独特体验!

发表评论

已输入 0/180 个字

最新评论


暂无评论,快来抢沙发吧!