支持长记忆的LLM应用:一个简单的例子

一、安装依赖:

pip install mem0ai

二、代码如下:

import os

from openai import OpenAI

from mem0 import Memory

Set the OpenAI API key

os.environ['OPENAI_API_KEY'] = 'sk-xxx'

class PersonalTravelAssistant:

def init(self):

self.client = OpenAI()

self.memory = Memory()

self.messages = [{"role": "system", "content": "You are a personal AI Assistant."}]

def ask_question(self, question, user_id):

Fetch previous related memories

previous_memories = self.search_memories(question, user_id=user_id)

prompt = question

if previous_memories:

prompt = f"User input: {question}\n Previous memories: {previous_memories}"

self.messages.append({"role": "user", "content": prompt})

Generate response using GPT-4o

response = self.client.chat.completions.create(

model="gpt-4o",

messages=self.messages

)

answer = response.choices[0].message.content

self.messages.append({"role": "assistant", "content": answer})

Store the question in memory

self.memory.add(question, user_id=user_id)

return answer

def get_memories(self, user_id):

memories = self.memory.get_all(user_id=user_id)

return [m['text'] for m in memories]

def search_memories(self, query, user_id):

memories = self.memory.search(query, user_id=user_id)

return [m['text'] for m in memories]

Usage example

user_id = "traveler_123"

ai_assistant = PersonalTravelAssistant()

def main():

while True:

question = input("Question: ")

if question.lower() in ['q', 'exit']:

print("Exiting...")

break

answer = ai_assistant.ask_question(question, user_id=user_id)

print(f"Answer: {answer}")

memories = ai_assistant.get_memories(user_id=user_id)

print("Memories:")

for memory in memories:

print(f"- {memory}")

print("-----")

if name == "main":

main()

运行结果如下:

复制代码
Question:  你好,夏天北京哪里比较好玩?
复制代码
Answer: 你好!北京夏天有很多好玩的地方,以下是一些推荐:

1. **颐和园**:这里有美丽的昆明湖和丰富的历史文化遗产,非常适合夏天游览。此外,你可以租一条小船在湖上泛舟,非常惬意。

2. **北海公园**:这是一座历史悠久的皇家园林,有美丽的白塔和湖景,可以荡舟和散步。

3. **什刹海**:包括前海、后海和西海,这里的酒吧街和胡同非常有特色。夏天晚上,这里会非常热闹,适合夜晚散步和品尝小吃。

4. **北京欢乐谷**:这是一家大型主题公园,拥有各种刺激的娱乐设施和精彩的表演,非常适合全家或朋友一起去玩。

5. **北京动物园和北京海洋馆**:如果你喜欢动物或海洋生物,这两个地方都是不错的选择。北京动物园是中国历史最悠久、饲养动物种类最多的动物园之一。

6. **长城(慕田峪、八达岭)**:虽然登长城比较费力,但夏天的长城非常壮观,绿树成荫,风景优美。

7. **国家大剧院**:喜欢艺术的朋友可以考虑去这里看看演出,夏天也有很多精彩的演出项目。

8. **798艺术区**:这里是现代艺术的聚集地,有很多画廊、咖啡馆和时尚的小店,是文艺青年的好去处。

9. **三里屯**:这里是北京最有活力的商业区之一,有很多时尚商店、餐厅和夜店。

这些地方都各有特色,希望能给你带来一个愉快的夏天体验!
Memories:
- Speaks Chinese.
-----
复制代码
Question:  我最爱去颐和园了,都去过好多次了。
复制代码
Answer: 那太好了!颐和园确实是一个美丽而且历史悠久的地方。

既然你已经去过颐和园很多次,也许你可以考虑一些别的地方来丰富你的夏日体验:

1. **清华大学和北京大学校园**:这两所著名学府不仅文化气息浓厚,而且校园环境也非常优美。夏天的时候,还可以看到满园的绿树和静谧的湖泊。

2. **大运河森林公园**:位于通州区,这里有大片的自然景观和丰富的动植物资源,非常适合夏天去野餐或散步。

3. **香山公园**:虽然更适合秋天的红叶观赏,但夏天的香山也十分凉爽,是一个爬山和呼吸新鲜空气的好地方。

4. **金海湖**:位于平谷区,这里风景非常秀丽,可以游泳、划船、钓鱼,适合家庭或朋友一起度假。

5. **居庸关长城**:除了八达岭和慕田峪,居庸关长城也是一个非常壮观的长城景点,且相对不那么拥挤。

6. **故宫和天坛**:作为北京的地标性景点,故宫和天坛不仅有着深厚的历史背景,建筑风景也是非常壮观。

7. **南锣鼓巷**:这里有很多历史悠久的胡同和四合院,还有各种特色小店和美食。

8. **圆明园**:虽然主要是遗址,但夏天的圆明园荷花盛开,非常美丽,值得一游。

希望这些建议能够为你提供一些新的思路,让你的北京夏天更加丰富多彩!如果你对某个地方有特别的兴趣,我们还可以进一步讨论。
Memories:
- Speaks Chinese.
- Loves visiting the Summer Palace (颐和园).
- Has visited the Summer Palace many times.
-----
复制代码
Question:  长城是北京的伟大建筑,去年又去过一次。
复制代码
Answer: 太棒了!长城确实是北京乃至中国的一大奇观,每次去都有不同的感受。如果你对北京比较熟悉且已经去过一些主要景点,那不妨尝试一些稍微小众但同样充满魅力的地方:

1. **故宫博物院**:虽然你可能已经去过,但故宫的每次展览和角落都有不同的故事可以发现。

2. **北京798艺术区**:现代艺术爱好者不可错过的地方,充满创造力的画廊、工作室和咖啡厅。

3. **国家博物馆**:如果你对历史和文化感兴趣,这里有丰富的展览,涵盖中国历史上各个重要时期。

4. **北京植物园**:绿意盎然的自然景观,喜欢植物和花卉的话,这里绝对是夏季避暑的好去处。

5. **古北水镇**:位于北京市密云区,是一个以古建筑和水乡风景而闻名的旅游胜地,可以体验到仿古的环境中度假。

6. **潭拓寺**:也是一个避暑的好地方,这里的古树参天,有“北方小庐山”之称,空气清新且历史悠久。

7. **琉璃厂文化街**:适合文艺爱好者,这里有很多古色古香的书店、古玩店和茶馆。

8. **Morning Qing**: 北京的农夫市集,可以了解到更多的有机产品及环保理念,也充满了浓浓的人情味。

9. **通州大运河森林公园**:如前所述,这里有广阔的自然景观,非常适合散步、骑行和家庭出游。

10. **圆明园遗址公园**:你可能去过颐和园,但圆明园遗址公园也有特别的历史价值,尤其是夏天的荷花池,美不胜收。

这些地方都有他们独特的魅力,可以让你在熟悉的北京中发现更多新的惊喜。希望你下次在北京的游览更加丰富和愉快!
Memories:
- Speaks Chinese.
- Visited the Great Wall in Beijing last year.
- Considers the Great Wall a magnificent structure.
- Loves visiting the Summer Palace (颐和园).
- Has visited the Summer Palace many times.
-----
复制代码
Question:  古北水镇也去过的。
复制代码
Answer: 看来你对北京有相当深入的了解并已经探索了许多著名的景点。为了带来一些新鲜感,你可以考虑以下一些比较小众但同样有趣的地方:

1. **后海酒吧街和烟袋斜街**:位于什刹海附近,是休闲和夜生活的好地方,可以感受到不同于白天的北京韵味。

2. **北京胡同游**:例如南锣鼓巷(虽然有些游客,但仍充满魅力)、东四胡同、和大栅栏。这些地方可以通过步行或骑自行车游览,体验老北京的生活氛围。

3. **中国电影博物馆**:如果你对电影感兴趣,这里展示了中国电影的历史和各种有趣的展览。

4. **中央电视塔**:可以登上观景台,从高处俯瞰整个北京,非常适合拍照和欣赏城市全景。

5. **北京地坛公园**:夏天绿树成荫,空气清新,这里还经常举办各种文化活动和市集。

6. **古观象台**:这是世界上最古老的天文台之一,提供丰富的天文历史知识。

7. **大运河文化带**:深入了解大运河的历史和文化,同时还可以欣赏沿途的美丽风光。

8. **妙应寺白塔**:这是元代的重要遗存,也是北京地区保存最完好的砖、石、木构建筑之一。

9. **中国铁道博物馆**:如果你对火车或工业历史感兴趣,这里展示了中国铁路事业的发展历程。

10. **北京香山公园**:虽然你可能更偏爱夏天,但这里无论哪个季节都有独特的风景,尤其是自然风光和徒步体验。

希望这些地方能为你带来一些新的发现和乐趣。如果你还有其他特别感兴趣的主题或类型,也可以告诉我,我会根据你的兴趣做进一步推荐!
Memories:
- Speaks Chinese.
- Visited 古北水镇 (Gubei Water Town).
- Visited the Great Wall in Beijing last year.
- Considers the Great Wall a magnificent structure.
- Has visited the Summer Palace (颐和园) many times.
-----
复制代码
Question: 
相关推荐
waterHBO20 分钟前
python 爬虫 selenium 笔记
爬虫·python·selenium
编程零零七1 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
AIAdvocate3 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼3 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
FreakStudio5 小时前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
redcocal6 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘
artificiali7 小时前
Anaconda配置pytorch的基本操作
人工智能·pytorch·python
RaidenQ7 小时前
2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
图像处理·python·算法·课程设计
花生了什么树~.7 小时前
python基础知识(六)--字典遍历、公共运算符、公共方法、函数、变量分类、参数分类、拆包、引用
开发语言·python
Trouvaille ~8 小时前
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
图像处理·python·机器学习·numpy·信号处理·时间序列分析·科学计算