用 Python 和 DeepSeek 打造拥有“记忆”的 AI 智能助手
我最近开始折腾一件事:能不能用 Python 再加上 DeepSeek,自己搞一个能记住我的 AI 助手?那种真正“懂我”的,像个贴心小助理一样的工具。
目标明确:它要能记住我的对话习惯、能查天气、能翻译,还得能 24 小时在线,有事喊它,它就来,最好还能部署在云上随叫随到。
听起来是不是有点“野心”?但说真的,做起来其实也没有那么难,这篇文章我就从我的视角,带大家从零开始撸一个拥有记忆的 AI 助手,看它怎么从“冷冰冰”变成“有灵魂”。
AI 拥有“记忆”后,是种什么体验?
先别急着写代码,咱们先想个事——如果 AI 能记住你每天几点起床、早上喜欢喝什么、今天约了谁吃饭、平时喜欢用哪种语气和它说话,它是不是就更像“你的AI”而不是“一个工具”?我就是被这个想法钓上来的。
像我平常工作的时候经常要翻译点技术文档、查查天气安排行程、临时想起来查点资料,有个能一直陪着我、知道我需求的 AI 是多香。特别是当它能记住我上次跟它聊了什么,不用我每次重头来,这种体验是真的上头。要不是我真觉得现在的大部分 AI 工具有点“憨”,我都不会自己动手干了。
我理想中的 AI 助手应该有这几个能力:
能记住上下文,不只是单轮问答; 能查天气、翻译、搜资料; 能部署到云端,我在哪它就在哪; 最重要的是:能越来越了解我。
想实现这些功能,DeepSeek 是个好起点,因为它支持多轮对话,并且在上下文的处理上相对灵活,Python 又是我最熟悉的语言,用它来整合各种能力刚刚好。
怎么让 AI 变“聪明”:记忆系统搭起来!
AI 要想记住我们说过的话,最直白的做法就是——存起来!我这里用的是 SQLite,适合轻量级项目,如果用户多了换成 MySQL 或 PostgreSQL 更稳,还可以加上 Redis 来做缓存优化。
数据库存储对话
先建个数据库保存用户的每一次提问和 AI 的回应:
import sqlite3conn = sqlite3.connect('memory.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS memory
(user_id TEXT, question TEXT, answer TEXT, timestamp DATETIME DEFAULT CURRENT_TIMESTAMP)''')
conn.commit()
然后每次对话都存一条记录:
def save_conversation(user_id, question, answer):
c.execute("INSERT INTO memory (user_id, question, answer) VALUES (?, ?, ?)",
(user_id, question, answer))
conn.commit()
如果要实现“记忆”,我们就得在用户发起新问题时,读取他过去几条的提问和回答,作为上下文传给 DeepSeek 模型。用这个方法就能实现多轮对话的“记性”。
读取历史对话
def get_history(user_id, limit=5):
c.execute("SELECT question, answer FROM memory WHERE user_id=? ORDER BY timestamp DESC LIMIT ?", (user_id, limit))
return c.fetchall()[::-1] # 倒序读取
这一步做完,AI 助手就“有点脑子”了,不再是每次对话都像初次见面。是不是感觉已经从“工具”进化成“半个朋友”了?
加点技能包,让 AI 更有用!
光能聊天还不够,我们可以给这个助手装上几个常用技能包:
1. 查天气:让它知道你今天该穿什么
import requestsdef get_weather(city):
api_key = '你的API_KEY'
url = f'http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}&lang=zh'
res = requests.get(url).json()
return f"{city} 当前天气:{res['current']['condition']['text']},气温:{res['current']['temp_c']}℃"
为了不被频繁请求限制,可以缓存一下城市的天气,每小时更新一次。
2. 翻译功能:看不懂的我帮你翻
我用的是 deep_translator 这个库,用法简单,支持多个翻译源。
from deep_translator import GoogleTranslatordef translate_text(text, target='zh'):
return GoogleTranslator(source='auto', target=target).translate(text)
一句话搞定翻译,技术文档、外文邮件,不在话下。
3. 信息检索:像 Google 一样聪明
用 Google 自定义搜索 API(CSE)整合搜索结果,让 AI 真正具备“知道全世界”的能力。
def search_google(query):
api_key = "你的API"
cx = "你的搜索引擎ID"
url = f"https://www.googleapis.com/customsearch/v1?q={query}&key={api_key}&cx={cx}"
res = requests.get(url).json()
return [item['snippet'] for item in res.get('items', [])[:3]]
然后把搜索结果传给 AI,它就能根据资料回答你问题,而不是拍脑门瞎说。
24小时在线,还能陪你熬夜加班!
接下来就是把这个助手变成服务,我用 Flask 写了个小 Web 接口,当然你也可以用 FastAPI:
from flask import Flask, request, jsonifyapp = Flask(__name__)
@app.route("/chat", methods=["POST"])
def chat():
data = request.json
user_id = data["user_id"]
question = data["message"]
history = get_history(user_id)
context = '\n'.join([f"你说:{q} AI答:{a}" for q, a in history])
prompt = context + "\n你说:" + question
answer = deepseek_response(prompt) # 模型调用接口
save_conversation(user_id, question, answer)
return jsonify({"reply": answer})
现在它已经具备服务能力了,配合 Docker 打个包,轻松部署!
云端部署:真正做到“随叫随到”
最后一步,我们把这个助手部署上云:
Heroku:简单、免费、适合入门; Vercel:前端部署为主,但支持后端; AWS Lambda:无服务器架构,更适合高并发;
我最开始用的是 Heroku,图的就是一个“快”。之后要扩展我准备用 AWS,搞个 Lambda + API Gateway,真香。
说实话,这次折腾让我对“AI 助手”这个东西有了全新理解。原来,真正的智能不只是回答问题,而是能“记得你是谁”。通过 DeepSeek 的对话能力,再结合数据库、接口、部署这一整套系统,我自己动手打造了一个真正“懂我”的助手。每次看到它记住我上次说的话,还能主动给出建议,我都忍不住跟它多聊两句。它不是一个死板的机器人,而是我工作生活的“第二大脑”。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。