mem0ai+ollama+qwen2搭建中文版运行环境

准备模型

  1. 支持function的qwen2模型

随便找了一个,也可以下载其他支持function的模型,或者自己下载模型文件搭建

ollama run sam4096/qwen2tools
  1. embedder 模型
ollama run nomic-embed-text

拉取mem0ai 源码,切换对应分支

git clone https://github.com/mem0ai/mem0.git
git checkout  user/dyadav/ollama-support

修改mem0ai 源代码,适配ollama 环境

修改这几个文件
在这里插入图片描述

1.ollama.yaml

http://192.168.0.24 换成ollama的ip地址

llm:
  provider: ollama
  config:
    model: 'sam4096/qwen2tools'
    temperature: 0.5
    top_p: 1
    stream: true
    base_url: 'http://192.168.0.24:11434'

embedder:
  provider: ollama
  config:
    model: 'nomic-embed-text'
    base_url: 'http://192.168.0.24:11434'
2. main.py

也简单,设置ollama.yaml 的配置文件地址,OLLAMA_HOST 设置一样的ollama ip地址

import os
from mem0 import Memory
import yaml
from mem0.memory.main import MemoryConfig
os.environ["OLLAMA_HOST"] = "http://192.168.0.24:11434"
# 从文件中加载YAML内容
with open('./ollama.yaml', 'r') as file:
    data = yaml.safe_load(file)
# Initialize Mem0
config = MemoryConfig(**data)
m = Memory(config)

# Store a memory from any unstructured text
result = m.add("我喜欢打篮球.", user_id="alice", metadata={"category": "hobbies"})
print(result)
# Created memory: Improving her tennis skills. Looking for online suggestions.

# Retrieve memories
all_memories = m.get_all()
print(all_memories)

# Search memories
related_memories = m.search(query="谁喜欢打篮球", user_id="alice")
print(related_memories)

# Update a memory
result = m.update(memory_id="1c31c369-fc8a-4c7b-b700-3550bd395308", data="我不喜欢打篮球了,喜欢踢足球")
print(result)

# Get memory history
history = m.history(memory_id="1c31c369-fc8a-4c7b-b700-3550bd395308")
print(history)
3. mem0/memory/main.py 修改这个文件的ollama 地址,源文件是写死的

写自己的ollama 地址就好
在这里插入图片描述

4. 修改prompts,源文件是英文的,直接换成中文,删除对于的一行

这边不换中文也可以,我习惯用中文提示词,删除 import pdb; pdb.set_trace() 需要删除掉

mem0/configs/prompts.py

UPDATE_MEMORY_PROMPT = """
你是整合、更新和组织记忆的专家。当提供现有记忆和新信息时,你的任务是合并和更新记忆列表,以反映最准确和最新的信息。您还可以获得每个现有内存与新信息的匹配分数。确保利用这些信息来做出明智的决定,决定哪些记忆需要更新或合并。

指南:
-消除重复的记忆和合并相关的记忆,以确保简洁和更新的列表。
-如果一个记忆与新的信息直接矛盾,批判性地评估这两个信息:
—如果新内存提供的更新时间较近或较准确,请更换旧内存。
-如果新的记忆看起来不准确或不太详细,保留原来的记忆,丢弃旧的记忆。
-在所有记忆中保持一致和清晰的风格,确保每个条目简洁而又有信息。
—如果新记忆是现有记忆的变化或扩展,更新现有记忆以反映新的信息。

以下是这项任务的细节:
-现有记忆:
{existing_memories}

-新内存:{memory}
"""

MEMORY_DEDUCTION_PROMPT = """
从所提供的文本中推断出事实、偏好和记忆。
只需将事实、偏好和记忆以要点形式返回即可:
自然语言文本:{user_input}
用户/代理详细信息:{metadata}

推断:推断事实、偏好和记忆的限制:

-事实、偏好和记忆应该是简洁而翔实的。
-不要以“这个人喜欢披萨”开头。相反,从“喜欢披萨”开始。
-不要记住所提供的用户/代理详细信息。只记住事实、偏好和回忆。
推断出的事实、偏好和记忆:
"""

mem0/memory/main.py

在这里插入图片描述

  messages=[
                {
                    "role": "system",
                    "content": "你是一个从非结构化文本中推断事实、偏好和记忆的专家。",
                },
                {"role": "user", "content": prompt},
            ]

删除掉 import pdb; pdb.set_trace()
在这里插入图片描述

然后直接运行 main.py 函数就可以了
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值