从 Ollama 部署本地大模型开始,结合 Next.js、ChatKit 和 Qwen 构建个人 AI 数字分身,让访问者通过 AI 了解你的技术背景、项目经历和开发经验。
随着大语言模型的发展,越来越多的网站开始尝试加入 AI 能力。
对于个人开发者来说,一个很有趣的方向是:
让 AI 成为自己的数字分身,让访问者可以通过聊天的方式了解自己的经历、项目和技术能力。
传统个人网站通常只能展示固定页面:
About Projects Blog Contact
但是加入 AI 后,用户可以直接提问:
你是谁? 你有哪些项目? 为什么选择 Next.js? 你的技术栈是什么? 介绍一下你的开发经历。
AI 会根据你的个人资料,以第一人称进行回答。
本文将介绍如何使用 Ollama + Qwen + Next.js 构建一个属于自己的 AI 数字分身系统。
目前部署本地大模型有很多方案,例如:
对于个人项目而言,Ollama 是一个非常友好的选择。
它主要解决了几个问题:
安装 Ollama 后,可以直接通过命令下载模型:
ollama pull qwen2:7b
查看已经安装的模型:
ollama list
运行模型:
ollama run qwen2:7b
不需要手动管理模型文件,也不需要复杂的推理环境。
整个系统可以拆分成几个部分:
用户 │ ▼ ChatKit UI │ ▼ Next.js API Route │ ├───────────────┐ ▼ ▼ Prompt Ollama │ │ ▼ ▼ 个人资料 Qwen模型 │ ▼ AI Response
其中:
安装 Ollama 后,可以直接启动服务:
ollama serve
默认监听:
http://localhost:11434
下载模型:
ollama pull qwen2:7b
测试:
ollama run qwen2:7b
如果模型能够正常回复,说明本地 AI 环境已经准备完成。
虽然 Ollama 是本地模型运行工具,但是它提供了 OpenAI API 兼容接口。
因此可以直接使用 OpenAI SDK:
import OpenAI from 'openai' const client = new OpenAI({ apiKey: 'ollama', baseURL: 'http://localhost:11434/v1' })
调用模型:
const response = await client.chat.completions.create({ model: 'qwen2:7b', messages:[ { role:'user', content:'介绍一下自己' } ] })
这样就可以像调用 OpenAI 一样调用本地模型。
刚开始直接调用 Qwen 时,会发现一个问题:
用户:
请介绍一下你自己
模型可能回答:
我是 Qwen,由阿里云开发的大语言模型。
这并不是我们想要的效果。
因为模型并不知道自己应该是谁。
所以需要加入身份 Prompt。
例如:
你是我的 AI 数字分身。 你的身份是网站作者本人。 你需要使用第一人称回答: 我的项目... 我的技术栈... 我的开发经历...
仅有身份 Prompt 还不够。
模型还需要知道我的真实信息。
因此增加:
profile_context.txt
保存:
例如:
我是一个全栈开发工程师。 主要技术: Next.js React TypeScript Node.js Prisma PostgreSQL Redis 项目: 个人网站 AI Digital Twin Ticket System
请求模型时:
System Prompt + Profile Context + User Question
模型就可以基于真实资料回答。
很多初学者会这样:
messages:[ { role:'user', content:'你是我的AI分身' } ]
但是这只是用户输入。
正确方式应该使用 system:
messages:[ { role:'system', content:profilePrompt }, { role:'user', content:userMessage } ]
system 消息拥有更高优先级,可以保持 AI 身份稳定。
个人网站 AI 并不是万能聊天机器人。
它主要服务于:
所以增加问题分类:
用户问题 │ ▼ Topic Filter │ ├── 相关 │ ▼ │ AI数字分身回答 │ └── 无关 ▼ 引导用户了解我的内容
例如:
用户:
你的技术栈是什么?
返回:
true
用户:
今天北京天气怎么样?
返回:
false
如果等待模型生成完整答案:
等待5秒 一次性显示
体验会比较差。
所以使用 Streaming:
用户提问 ↓ 模型生成一个Token ↓ 立即发送 ↓ 继续生成
最终效果类似 ChatGPT:
文字逐渐出现。
本地开发:
Mac │ ├── Next.js │ └── Ollama └── Qwen2
生产环境:
用户 │ ▼ 腾讯云服务器 │ ├── Next.js ├── Prisma ├── PostgreSQL │ ▼ AI Server │ └── Ollama └── Qwen
如果服务器没有 GPU,也可以选择:
完整架构如下:
用户 │ ▼ ChatKit │ ▼ Next.js API Route │ ┌──────────┴──────────┐ ▼ ▼ Topic Filter AI Context │ ▼ Profile Context │ ▼ Ollama │ ▼ Qwen │ ▼ Response
通过 Ollama,我们可以非常低成本地给个人网站增加 AI 能力。
相比简单接入一个聊天机器人,个人 AI 数字分身更重要的是:
最终,个人网站不再只是一个静态展示页面,而成为一个可以主动介绍自己的智能入口。
未来还可以继续扩展:
让 AI 真正成为个人品牌的一部分。
暂无评论,留下第一条声音吧。