支持长记忆的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: 
相关推荐
封步宇AIGC15 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
何曾参静谧15 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices19 分钟前
C++如何调用Python脚本
开发语言·c++·python
我狠狠地刷刷刷刷刷32 分钟前
中文分词模拟器
开发语言·python·算法
Jam-Young1 小时前
Python的装饰器
开发语言·python
Mr.咕咕1 小时前
Django 搭建数据管理web——商品管理
前端·python·django
AnFany1 小时前
LeetCode【0028】找出字符串中第一个匹配项的下标
python·算法·leetcode·字符串·kmp·字符串匹配
爪哇学长2 小时前
Java API类与接口:日期类型与集合的使用
java·开发语言·python
封步宇AIGC2 小时前
量化交易系统开发-实时行情自动化交易-3.4.1.6.A股宏观经济数据
人工智能·python·机器学习·数据挖掘