我有时候真的很佩服那些能记住我喜好的人,比如楼下咖啡店的老板娘,我刚一进门她就开始冲我最爱那款少糖美式,连我换口味都会被她识破:“今天不来点拿铁试试?”——这种服务叫个性化,体验感直接拉满。
而我之前试着做的AI助手,聊天是能聊,但你让它记点东西?对不起,聊完就忘,哪怕是刚刚你才告诉它你叫啥。对话体验像极了初中时的渣男,承诺都好听,就是不走心。
于是我就开始思考,这AI助手是不是也得“通人性”点?不能光能说,还得能记,记得住咱说过啥、聊过啥、爱好是什么,甚至我每天几点钟来找它唠嗑都应该知道吧?于是,我就动手整了这个项目——一个带记忆功能的AI助手,主力框架Python,结合了DeepSeek,再加上点技能包,最后还能部署上线,24小时待命不掉线,简直比我对象还稳定。
AI没记忆,和白开水有啥区别?
说真的,很多人玩AI,觉得它回答得再聪明,只要不能记住上一次对话的内容,就感觉差了点什么。就好像你每天和它打招呼:“我喜欢喝咖啡,不加糖。”第二天再来,它又是一脸懵逼:“请问您喜欢喝什么?”——我真的气笑了,仿佛在和一个失忆症患者交流。
所以啊,我觉得,记忆这玩意儿对AI来说,不是锦上添花,而是刚需。
一个好的助手,必须要有记性,才能做到个性化服务:
- 比如你说你是程序员,它下次直接给你推送GitHub热榜。
- 或者你说你在北京,那它查天气的时候别老问你在哪,直接就默认北京。
- 甚至你每天晚上都来问它一个哲学问题,它也能记住你是夜猫子类型,说不定哪天来一句:“今晚不来点海德格尔?”
而要实现这一点,说白了就是得有个“记事本”——我们用数据库搞定。
AI的记忆,其实就是建个数据库
我在搞这个AI助手的时候,最先搭的就是它的“记忆系统”。这个“记忆”其实就是拿数据库来保存用户的历史对话,让AI可以带着上下文思考问题。
我是用SQLite起步的,简单轻便,还不需要安装额外的东西,非常适合本地调试。一开始先建个表,记录每一次用户说了啥,AI又是怎么回复的:
import sqlite3
conn = sqlite3.connect('memory.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS chat_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user TEXT,
message TEXT,
response TEXT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
)
''')
conn.commit()
conn.close()
然后每次对话的时候,就把内容塞进这张表里,下次用户再来找,咱先查一下他之前说了啥,生成的时候再带上点历史信息,这AI就“看起来”更像个活人了。
要是你的用户多起来了,SQLite可能就不够用了,这时候可以考虑换成PostgreSQL,再加点缓存系统,比如Redis,把最近的对话记录先暂存在内存,访问起来速度更快,还能减轻数据库压力。
给AI装上“技能包”,它才真像个助手
光会聊天还不够啊,聊天不就是图一乐,但你真想让这个AI帮你做点事,它得有技能。就像那个会开瓶盖、背九九乘法表的初代万能男友一样——能干才是硬道理。
我给我的AI装了几个小技能,都是实用型选手:
1. 天气查询功能
最常用的当然是查天气,我直接用的是常见天气API。为了防止用户每次都要输入城市,我给它加了默认城市的设定,并且做了缓存,减少API调用:
import requests
def get_weather(city="北京"):
api_key = "你的API密钥"
url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}&lang=zh"
response = requests.get(url)
return response.json()['current']['condition']['text']
2. 翻译功能:用 deep_translator
翻译我用的是 deep_translator,支持多个平台,我最喜欢它的懒人模式:
from deep_translator import GoogleTranslator
def translate(text, target='en'):
return GoogleTranslator(source='auto', target=target).translate(text)
3. Google 搜索
有时候用户想问点复杂问题,我让AI直接用Google自定义搜索API查一波,提取网页的摘要再回复给用户,效果贼棒,比瞎编强多了。
永久在线的AI怎么搞?
做完上面这些功能之后,我想着:不能每次还得开终端启动吧?那不太行,咱得让这个AI 7x24在线等着我,随叫随到。
我用的是 Flask 搭了个 API 接口,用户通过网页或微信小程序发消息,它就能响应。
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/chat', methods=['POST'])
def chat():
user_msg = request.json.get("message")
# 查历史记录、生成回复逻辑省略
return jsonify({"response": "这里是AI的回答"})
if __name__ == '__main__':
app.run()
部署我用的是 Docker,把整个服务打包一键部署,然后扔上 Heroku 测试,最后放到 Vercel 上跑——免费的额度对个人项目绰绰有余,而且速度也挺快的。
整个项目做下来,我最大的感触就是:AI工具如果不带点“记忆”和“技能”,那它就是个会讲笑话的玩具罢了。
我现在这个助手,每次和我对话,不仅知道我上次说了什么,还能查天气、翻译、上网搜资料,完全就是我桌面上的“数码男友”,哪怕我凌晨两点上线问它:“人生的意义是什么?”它都能给我端出一整盘康德+鸡汤+知乎回答混合体。
当然啦,还有不少可以继续优化的地方,比如:
但哪怕到现在这个程度,它已经能给我省下很多日常琐碎操作了。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
-END-
ok,今天先说到这,老规矩,给大家分享一份不错的deepseek、副业资料,感兴趣的同学可以链接我,微信:hls404 找我领取。以上,就是今天的分享了,看完文章记得右下角点赞,也欢迎在评论区写下你的留言