当前位置:   article > 正文

mem0ai+ollama+qwen2搭建中文版运行环境_ollama+qwen2, 轻松搭建支持函数调用

ollama+qwen2, 轻松搭建支持函数调用

准备模型

  1. 支持function的qwen2模型

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

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

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

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

修改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'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
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}

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

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

mem0/memory/main.py

在这里插入图片描述

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

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

然后直接运行 main.py 函数就可以了
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号