社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python+DeepSeek,开发一个带记忆的AI助手

Obsidian教程 • 10 月前 • 177 次点击  

我有时候真的很佩服那些能记住我喜好的人,比如楼下咖啡店的老板娘,我刚一进门她就开始冲我最爱那款少糖美式,连我换口味都会被她识破:“今天不来点拿铁试试?”——这种服务叫个性化,体验感直接拉满。

而我之前试着做的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 找我领取。

以上,就是今天的分享了,看完文章记得右下角点赞,也欢迎在评论区写下你的留言

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/180405