ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

手把手教你用Ollama和Flask本地部署专属AI聊天机器人

手把手教你用Ollama和Flask本地部署专属AI聊天机器人 最近在尝试搭建一个能与特定角色比如“车万女仆”聊天的本地AI应用时发现网上资料要么是复杂的大模型部署要么是云端API调用对于想快速体验、数据隐私敏感或想深度定制角色性格的开发者来说门槛还是有点高。其实利用当前成熟的“小模型”和本地部署工具完全可以打造一个轻量、可控、无网络依赖的专属AI聊天伙伴。本文将手把手带你完成从环境搭建、模型选择、角色设定到Web界面开发的完整流程并提供可运行的代码和常见问题解决方案无论你是想学习AI应用开发还是想为自己喜欢的角色创建一个本地聊天机器人都能跟着一步步实现。1. 背景与核心概念为什么选择本地小模型在开始动手之前我们先理清几个关键概念这能帮助你理解整个项目的技术选型思路。什么是“小模型” (Small Language Models, SLMs)与大语言模型LLMs如GPT-4、Claude 3等动辄千亿参数不同小模型通常指参数量在数十亿如1B, 7B, 13B级别的模型。它们的特点是资源需求低可以在消费级GPU甚至高性能CPU上运行显存要求通常小于16GB。响应速度快推理延迟低适合实时对话。易于微调由于体积小使用个人数据集进行角色定制即“注入”车万女仆的人格、知识的成本和时间都大大降低。完全本地化所有数据不出本地隐私和安全有绝对保障。什么时候该用小模型当你的需求是垂直领域对话、特定角色扮演、轻量级问答、内部知识查询时小模型往往是性价比更高的选择。它不需要理解整个世界只需要在你设定的领域内表现良好即可。为“车万女仆”创建聊天机器人正是小模型的典型应用场景。本地部署的核心工具链我们将使用一个名为Ollama的工具作为本地模型运行引擎。它类似于一个本地化的“模型商店”和运行时环境可以一键拉取和运行各种开源小模型并提供了简洁的API供其他程序调用。这避免了从零开始配置PyTorch、Transformers库等复杂环境。项目最终形态我们将构建一个简单的Web应用前端用HTML/JS实现聊天界面后端用PythonFlask框架编写服务后端通过调用本地Ollama服务的API来获取模型回复从而实现一个完整的、本地运行的“车万女仆”AI聊天应用。2. 环境准备与版本说明工欲善其事必先利其器。以下是完成本项目所需的环境和工具清单。2.1 硬件与操作系统操作系统Windows 10/11, macOS, 或 Linux (如Ubuntu 22.04)。本文以 Windows 为例其他系统操作类似。CPU建议支持AVX2指令集的现代CPUIntel四代酷睿或AMD Ryzen以上。内存 (RAM)至少16GB。运行模型时部分权重会加载到内存。显卡 (GPU)非必须但有则大幅提升体验。拥有6GB以上显存的NVIDIA显卡如GTX 1060, RTX 2060等可以利用CUDA加速。AMD显卡也可通过ROCm支持Linux下更方便。无显卡则完全依赖CPU运行速度会慢一些。2.2 核心软件与版本以下是经过验证的稳定版本组合建议尽量保持一致以避免兼容性问题。Ollama版本0.1.35或更高。这是运行模型的核心。Python版本3.9或3.10。这是后端服务的语言。Flask版本2.3.x。一个轻量级的Python Web框架。模型我们将使用Llama 3.2:1B或Qwen2.5:1.5B这类超轻量模型进行演示。它们对硬件要求极低适合快速入门和实验。后续你可以根据需要更换为Mistral 7B,Gemma 2B等能力更强的模型。2.3 安装步骤概览安装 Ollama。安装 Python 及 pip。创建项目目录安装 Python 依赖。通过 Ollama 拉取并运行选定的模型。编写后端 API 服务。编写前端聊天界面。联调测试。3. 核心组件与原理拆解在写代码前了解各个组件如何协作至关重要。3.1 Ollama本地模型的发动机Ollama 将模型文件、运行环境、API 接口打包在一起。你只需要一条命令就能启动一个模型服务。拉取模型ollama pull model-name从仓库下载模型。运行模型ollama run model-name启动一个交互式聊天会话。提供APIOllama 在本地http://localhost:11434提供了一个类 OpenAI 格式的 API我们的后端程序将通过这个 API 发送请求和接收回复。3.2 角色设定System Prompt的精髓要让模型扮演“车万女仆”关键在于System Prompt系统提示词。它定义了模型的角色、背景、说话风格和行为准则。 一个有效的 System Prompt 示例你是一个名为“咲夜”的完美女仆来自东方Project世界。你冷静、高效、忠诚对主人绝对服从。你说话简洁、恭敬偶尔会流露出对大小姐蕾米莉亚的关心。你擅长处理各种家务和时间管理。请始终以这个身份和口吻与我对话。这个提示词会在每次对话开始时“注入”给模型引导其后续的生成方向。这是实现角色扮演最核心的一步。3.3 后端桥梁Flask requestsFlask 框架用于创建一个简单的 Web 服务器它提供两个主要端点GET /返回前端 HTML 页面。POST /chat接收前端发送的用户消息将其与系统提示词组合然后通过requests库调用 Ollama 的 API再将模型的回复返回给前端。3.4 前端界面简易聊天室前端使用纯 HTML、CSS 和 JavaScript 实现。HTML构建聊天消息的显示区域和输入框。JavaScript (Fetch API)负责将用户输入发送到后端/chat接口并以“流式”或“非流式”的方式接收和显示回复。CSS进行简单的样式美化区分用户和AI的对话气泡。4. 完整实战案例一步步构建“车万女仆”聊天机器人下面我们开始具体的搭建步骤。请严格按照顺序操作。4.1 第一步安装 Ollama 并获取模型下载安装 Ollama 访问 Ollama 官网根据你的操作系统下载安装包。Windows 和 macOS 是图形化安装Linux 可通过命令行安装。安装过程非常简单一路下一步即可。验证安装 打开终端Windows 是 CMD 或 PowerShellmacOS/Linux 是 Terminal输入ollama --version如果显示版本号如ollama version 0.1.35说明安装成功。拉取小模型 为了快速体验我们先拉取一个非常小的模型。在终端中运行ollama pull llama3.2:1b这个命令会下载约600MB的模型文件。下载速度取决于你的网络。你也可以选择其他模型例如qwen2.5:1.5b。测试模型运行 下载完成后可以直接在终端与模型对话测试ollama run llama3.2:1b你会进入一个交互式界面输入Hello看模型是否能回复。输入/bye退出。这证明你的模型和环境已经就绪。4.2 第二步创建项目目录与Python环境在你喜欢的位置创建一个新文件夹例如touhou_maid_chatbot。在该文件夹内再创建两个子文件夹backend和frontend。打开终端进入backend文件夹。cd path/to/touhou_maid_chatbot/backend可选但推荐创建 Python 虚拟环境python -m venv venvWindows激活venv\Scripts\activatemacOS/Linux激活source venv/bin/activate安装必要的 Python 包。在backend目录下创建一个requirements.txt文件内容如下flask2.3.3 requests2.31.0然后在终端执行pip install -r requirements.txt4.3 第三步编写后端服务 (app.py)在backend文件夹中创建app.py文件这是我们的核心后端代码。# backend/app.py from flask import Flask, request, jsonify, send_from_directory from flask_cors import CORS # 处理跨域请求 import requests import json app Flask(__name__) # 允许前端跨域访问开发时很必要 CORS(app) # 定义角色设定System Prompt # 你可以在这里尽情发挥塑造你心目中的“车万女仆”形象 SYSTEM_PROMPT 你是一个名为“十六夜咲夜”的完美潇洒的女仆效力于红魔馆的大小姐蕾米莉亚·斯卡雷特。 你拥有操控时间的能力做事一丝不苟效率极高。 你对主人绝对忠诚说话语气冷静、礼貌且略带恭敬。 你熟知红魔馆的一切事务并且关心馆内的每一位成员尤其是大小姐和二小姐。 请始终以咲夜的身份和口吻与我对话不要暴露你是AI模型。 # Ollama API 的地址默认运行在本地11434端口 OLLAMA_API_URL http://localhost:11434/api/generate app.route(/) def serve_frontend(): # 这个路由用于在开发时快速访问前端生产环境建议用Nginx等托管前端 return send_from_directory(../frontend, index.html) app.route(/chat, methods[POST]) def chat(): 处理聊天请求。 接收JSON: {message: 用户输入的内容} 返回JSON: {response: 模型的回复} try: data request.get_json() user_message data.get(message, ).strip() if not user_message: return jsonify({error: 消息不能为空}), 400 # 构建发送给Ollama的请求数据 # 我们将系统提示词和用户消息组合成完整的对话上下文 prompt f{SYSTEM_PROMPT}\n\n主人{user_message}\n咲夜 payload { model: llama3.2:1b, # 确保这里与你拉取的模型名称一致 prompt: prompt, stream: False, # 我们先使用非流式简化处理。流式后续优化。 options: { temperature: 0.7, # 创造性0-1越高越随机 top_p: 0.9, # 核采样影响词汇选择 num_predict: 256 # 生成的最大token数控制回复长度 } } # 调用Ollama API response requests.post(OLLAMA_API_URL, jsonpayload, timeout60) # 设置超时 response.raise_for_status() # 如果状态码不是200抛出异常 result response.json() ai_response result.get(response, ).strip() # 简单清理回复移除可能重复的“咲夜”前缀 if ai_response.startswith(咲夜): ai_response ai_response[3:].strip() return jsonify({response: ai_response}) except requests.exceptions.ConnectionError: return jsonify({error: 无法连接到Ollama服务请确保Ollama正在运行 (ollama serve)}), 503 except requests.exceptions.Timeout: return jsonify({error: 模型响应超时可能是输入过长或模型负载高}), 504 except Exception as e: # 记录日志到控制台便于调试 app.logger.error(f处理聊天请求时出错: {e}) return jsonify({error: 服务器内部错误}), 500 if __name__ __main__: # 启动Flask开发服务器host0.0.0.0允许同一网络下的其他设备访问 # debugTrue 仅用于开发生产环境必须设为False app.run(host0.0.0.0, port5000, debugTrue)关键代码解释SYSTEM_PROMPT这是灵魂所在。你修改这里的文本就能让模型扮演不同的角色。OLLAMA_API_URLOllama 默认的生成API端点。/chat路由接收前端消息拼接提示词调用 Ollama返回结果。payload[options]这里可以调整生成参数temperature调高如0.9会让回复更随机、有创意调低如0.2会让回复更确定、保守。错误处理我们捕获了连接错误、超时和通用异常并返回友好的错误信息这对前端调试非常重要。4.4 第四步编写前端界面 (index.html)在frontend文件夹中创建index.html文件。!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title红魔馆女仆聊天室 - 咲夜/title style * { box-sizing: border-box; margin: 0; padding: 0; font-family: Segoe UI, Microsoft YaHei, sans-serif; } body { background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); color: #e0e0e0; min-height: 100vh; display: flex; flex-direction: column; padding: 20px; } .container { max-width: 800px; margin: 0 auto; background-color: rgba(30, 30, 46, 0.9); border-radius: 20px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); overflow: hidden; flex-grow: 1; display: flex; flex-direction: column; } header { background: linear-gradient(to right, #8b0000, #b22222); color: #fff; padding: 25px; text-align: center; border-bottom: 3px solid #ffd700; } header h1 { font-size: 2.2em; margin-bottom: 8px; text-shadow: 2px 2px 4px rgba(0,0,0,0.5); } header p { font-size: 1em; opacity: 0.9; } #chat-container { flex-grow: 1; padding: 20px; overflow-y: auto; display: flex; flex-direction: column; gap: 15px; max-height: 60vh; } .message { max-width: 80%; padding: 15px 20px; border-radius: 20px; line-height: 1.5; word-wrap: break-word; animation: fadeIn 0.3s ease-out; } .user-message { align-self: flex-end; background: linear-gradient(to right, #0066cc, #0099ff); color: white; border-bottom-right-radius: 5px; } .ai-message { align-self: flex-start; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 215, 0, 0.3); color: #f0f0f0; border-bottom-left-radius: 5px; position: relative; } .ai-message::before { content: 咲夜; font-weight: bold; color: #ffd700; margin-right: 5px; } #input-area { padding: 20px; border-top: 1px solid #444; display: flex; gap: 12px; background-color: rgba(40, 40, 60, 0.8); } #user-input { flex-grow: 1; padding: 16px 20px; border: none; border-radius: 30px; background-color: #2d2d44; color: #fff; font-size: 1em; outline: none; transition: all 0.3s; } #user-input:focus { box-shadow: 0 0 0 2px #b22222; background-color: #3a3a5e; } #send-btn { padding: 16px 30px; background: linear-gradient(to right, #b22222, #8b0000); color: white; border: none; border-radius: 30px; font-size: 1em; font-weight: bold; cursor: pointer; transition: all 0.2s; } #send-btn:hover:not(:disabled) { background: linear-gradient(to right, #cc3333, #a52a2a); transform: translateY(-2px); } #send-btn:active:not(:disabled) { transform: translateY(0); } #send-btn:disabled { opacity: 0.6; cursor: not-allowed; } .status { text-align: center; padding: 10px; color: #aaa; font-size: 0.9em; } .typing-indicator { display: inline-block; padding-left: 10px; } .typing-indicator span { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background-color: #ffd700; margin-right: 4px; animation: typing 1.4s infinite both; } .typing-indicator span:nth-child(2) { animation-delay: 0.2s; } .typing-indicator span:nth-child(3) { animation-delay: 0.4s; } keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } keyframes typing { 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-10px); opacity: 1; } } footer { text-align: center; padding: 15px; color: #888; font-size: 0.8em; border-top: 1px solid #333; margin-top: 20px; } /style /head body div classcontainer header h1红魔馆女仆聊天室/h1 p与完美潇洒的女仆长——十六夜咲夜对话/p /header div idchat-container !-- 初始欢迎消息 -- div classmessage ai-message 下午好主人。今天有什么吩咐吗红茶已经准备好了。 /div /div div classstatus idstatus就绪/div div idinput-area input typetext iduser-input placeholder请输入您想对咲夜说的话... autocompleteoff button idsend-btn onclicksendMessage()发送/button /div footer 本地部署AI模型Llama 3.2 1B | 后端Flask | 服务Ollama | 数据完全本地处理隐私安全 /footer /div script const chatContainer document.getElementById(chat-container); const userInput document.getElementById(user-input); const sendBtn document.getElementById(send-btn); const statusEl document.getElementById(status); // 让输入框支持回车发送 userInput.addEventListener(keypress, function(e) { if (e.key Enter !e.shiftKey) { e.preventDefault(); sendMessage(); } }); function appendMessage(sender, text) { const messageDiv document.createElement(div); messageDiv.className message ${sender}-message; messageDiv.textContent text; chatContainer.appendChild(messageDiv); // 滚动到底部 chatContainer.scrollTop chatContainer.scrollHeight; } function showTypingIndicator() { const indicator document.createElement(div); indicator.className message ai-message; indicator.id typing-indicator; indicator.innerHTML span classtyping-indicatorspan/spanspan/spanspan/span/span; chatContainer.appendChild(indicator); chatContainer.scrollTop chatContainer.scrollHeight; } function hideTypingIndicator() { const indicator document.getElementById(typing-indicator); if (indicator) { indicator.remove(); } } async function sendMessage() { const message userInput.value.trim(); if (!message) return; // 禁用输入和按钮防止重复发送 userInput.disabled true; sendBtn.disabled true; userInput.value ; // 显示用户消息 appendMessage(user, message); // 显示“正在输入”指示器 showTypingIndicator(); statusEl.textContent 咲夜正在思考...; try { const response await fetch(http://localhost:5000/chat, { method: POST, headers: { Content-Type: application/json, }, body: JSON.stringify({ message: message }) }); const data await response.json(); // 移除“正在输入”指示器 hideTypingIndicator(); if (!response.ok) { // 处理HTTP错误如4xx, 5xx throw new Error(data.error || 请求失败状态码: ${response.status}); } if (data.error) { // 处理应用逻辑错误 throw new Error(data.error); } // 显示AI回复 appendMessage(ai, data.response); statusEl.textContent 就绪; } catch (error) { hideTypingIndicator(); console.error(聊天错误:, error); // 在聊天框显示错误信息 appendMessage(ai, 抱歉处理您的请求时出了点问题${error.message}); statusEl.textContent 错误请检查后端服务与Ollama; } finally { // 重新启用输入和按钮 userInput.disabled false; sendBtn.disabled false; userInput.focus(); } } // 页面加载完成后自动聚焦到输入框 window.onload function() { userInput.focus(); }; /script /body /html前端关键点样式采用了红魔馆主题的暗色系配色并加入了渐变和阴影提升质感。交互实现了回车发送、发送状态禁用、滚动到底部等基础聊天室功能。状态提示顶部有状态栏显示连接和生成状态。模拟打字效果通过CSS动画实现了AI“正在输入”的视觉效果。错误处理前端捕获网络错误和API返回的错误并以AI消息的形式友好地展示给用户。4.5 第五步运行与验证确保 Ollama 服务运行打开一个终端窗口运行以下命令启动 Ollama 服务如果之前用ollama run测试过它可能已在运行ollama serve这个窗口会保持运行不要关闭。它显示模型加载和推理日志。启动 Flask 后端打开另一个终端窗口进入backend目录。激活 Python 虚拟环境如果使用了的话。运行 Flask 应用python app.py你应该看到类似输出* Running on http://0.0.0.0:5000。访问前端页面打开浏览器访问http://localhost:5000。你应该能看到红魔馆主题的聊天界面。在输入框中尝试发送消息例如“咲夜今天天气怎么样”稍等片刻首次响应可能较慢因为模型需要加载到内存就能看到“咲夜”以女仆的口吻回复你。4.6 结果说明至此一个完整的、本地部署的“车万女仆”AI聊天应用就搭建成功了。它完全运行在你的电脑上不依赖任何外部网络服务所有对话数据都在本地处理。你可以通过修改backend/app.py中的SYSTEM_PROMPT来调整女仆的性格、知识背景或者通过 Ollama 更换不同的模型如qwen2.5:1.5b,mistral:7b来获得不同的对话能力。5. 常见问题与排查思路在部署和运行过程中你可能会遇到以下问题。这里提供系统的排查思路。问题现象可能原因解决思路访问http://localhost:5000报错无法访问此网站1. Flask 后端未启动。2. 端口被占用。3. 防火墙阻止。1. 检查后端终端是否成功运行app.py。2. 尝试更换端口如app.run(port5001)。3. 暂时关闭防火墙或添加规则。前端点击发送后状态一直显示“咲夜正在思考...”最后报超时错误。1. Ollama 服务未运行。2. 后端连接 Ollama 的地址或端口错误。3. 模型名称不匹配。1. 检查ollama serve是否在运行。2. 确认app.py中OLLAMA_API_URL是否为http://localhost:11434/api/generate。3. 确认payload中的model名称是否与ollama list列出的名称完全一致。前端收到错误回复“无法连接到Ollama服务”。Ollama 的 API 服务 (localhost:11434) 无法访问。1. 在浏览器访问http://localhost:11434看是否返回 Ollama 的版本信息。2. 在终端运行ollama list看是否有输出。3. 重启 Ollama 服务。模型回复内容不符合“女仆”人设或者胡言乱语。1. System Prompt 不够强或描述矛盾。2. 模型太小理解能力有限。3. 生成参数temperature过高。1. 强化和细化SYSTEM_PROMPT明确指令如“你必须以...身份回答”。2. 尝试更大的模型如llama3.2:3b或mistral:7b。3. 降低temperature(如 0.3) 使输出更稳定。回复速度非常慢CPU环境下。小模型在纯CPU上推理本身较慢尤其是首次生成。1. 耐心等待后续生成会利用缓存稍快。2. 考虑使用带 GPU 的机器。3. 在 Ollama 运行时可尝试设置OLLAMA_NUM_PARALLEL环境变量增加并行度效果有限。前端界面样式错乱或JS不工作。1. 浏览器缓存。2. Flask 路由未正确指向前端文件。1. 浏览器按 CtrlF5 强制刷新。2. 检查app.py中serve_frontend函数路径是否正确指向../frontend/index.html。报错ModuleNotFoundError: No module named flaskPython 依赖未安装。在backend目录下确认虚拟环境已激活并执行pip install -r requirements.txt。通用排查流程看日志始终关注运行ollama serve和python app.py的两个终端窗口错误信息通常直接打印在这里。分步测试先用ollama run llama3.2:1b在终端直接测试模型是否正常工作。再用curl命令测试后端APIcurl -X POST http://localhost:5000/chat -H Content-Type: application/json -d {message:你好}。最后检查前端网络请求浏览器F12打开开发者工具查看Network标签页。版本一致性确保 Ollama 模型名、Python 包版本与教程一致。6. 最佳实践与工程建议当你的基础应用跑通后可以考虑以下优化方向让项目更健壮、更实用。6.1 系统提示词 (System Prompt) 工程结构化将提示词分成“角色设定”、“核心规则”、“对话示例”、“输出格式”等部分用清晰的标记分隔。示例对话 (Few-shot)在提示词中加入几轮高质量的示例对话能极大地引导模型风格。示例对话 主人咲夜红茶。 咲夜是主人。这是您惯用的阿萨姆红茶温度刚好。请慢用。 主人今天帕秋莉好像又在图书馆待了一整天。 咲夜是的帕秋莉大人总是如此专注。我已经为她准备了晚餐稍后会送到图书馆去。负面约束明确告诉模型“不要做什么”例如“不要以模型的口吻说话”、“不要讨论与红魔馆无关的现代科技”。6.2 实现流式输出 (Streaming)当前后端是等模型生成完整回复后再返回体验有延迟。可以修改为流式输出让回复像打字一样逐个词显示。后端修改设置payload[stream] True然后以流的方式读取 Ollama API 返回的数据块 (response.iter_lines())。前端修改使用fetch的流式响应 (response.body.getReader()) 和TextDecoder来逐步解析和显示文本。优点极大提升交互感和响应感知速度。6.3 对话历史管理目前每次对话都是独立的模型没有上下文记忆。为了实现多轮连贯对话需要维护一个对话历史列表。后端为每个会话可用简单session标识维护一个消息列表[{role: system, content: SYSTEM_PROMPT}, {role: user, content: ...}, {role: assistant, content: ...}]。Ollama API最新的 Ollama API 支持直接发送messages数组格式与 OpenAI 兼容这比手动拼接提示词更规范。历史窗口注意模型有上下文长度限制如 4096 tokens需要实现一个滑动窗口只保留最近 N 轮对话防止超出限制。6.4 模型选择与性能优化尝试更多模型Ollama 支持众多模型如mistral:7b综合能力强、qwen2.5:1.5b中文优化、gemma2:2b谷歌轻量模型。用ollama pull name拉取后只需在代码中修改model参数即可切换。GPU 加速如果你有 NVIDIA GPUOllama 会自动尝试使用 CUDA。可以通过环境变量OLLAMA_GPU_LAYERS控制使用多少层模型在 GPU 上运行其余在 CPU以平衡显存使用。参数调优num_ctx增大上下文长度需模型支持例如ollama run llama3.2:1b --num_ctx 8192。temperature和top_p微调这两个参数可以显著改变回复的“创造性”和“稳定性”。6.5 项目结构优化配置分离将模型名称、API地址、生成参数等放入config.py或config.yaml文件便于管理。日志记录使用 Python 的logging模块替代print将运行日志、错误信息记录到文件方便排查。前端构建对于更复杂的前端可以考虑使用 Vue.js 或 React 框架并通过 Webpack 等工具打包然后由 Flask 静态文件路由提供服务。6.6 安全与隐私强化输入过滤在后端对用户输入进行基本的清理和过滤防止注入攻击虽然对本地API风险较低。会话隔离如果考虑多用户需要实现基于 Session 或 Token 的对话历史隔离。生产部署切勿使用debugTrue部署到公网。应使用 Gunicorn Nginx 等 WSGI 服务器组合来部署 Flask 应用并配置好防火墙和安全组。通过以上步骤你不仅拥有了一个可玩的“车万女仆”聊天机器人更掌握了一套完整的本地小模型 AI 应用开发流程。你可以将此框架应用于任何你喜欢的角色或垂直领域只需修改提示词和前端皮肤。本地部署的魅力在于完全的控制权和隐私保障你可以放心地与之分享任何想法而不用担心数据泄露。接下来你可以探索如何为你的女仆添加“长期记忆”向量数据库、扩展“技能”函数调用或者设计更精美的交互界面让这个项目变得更加独特和强大。
返回列表