当前位置: 首页 > wzjs >正文

济南营销网站建设西安谷歌推广

济南营销网站建设,西安谷歌推广,阳江市网站建设,郑州建设银行网站目录 简介环境准备基础配置核心组件说明1. 提示模板设计2. 上下文检索3. 响应生成4. 记忆存储 工作流程解析使用示例关键特性完整代码与效果 简介 Mem0 是一个强大的记忆系统,可以帮助 AI 应用存储和检索历史对话信息。本教程将介绍如何在 LangChain 应用中集成 Me…

目录

    • 简介
    • 环境准备
    • 基础配置
    • 核心组件说明
      • 1. 提示模板设计
      • 2. 上下文检索
      • 3. 响应生成
      • 4. 记忆存储
    • 工作流程解析
    • 使用示例
    • 关键特性
    • 完整代码与效果

简介

Mem0 是一个强大的记忆系统,可以帮助 AI 应用存储和检索历史对话信息。本教程将介绍如何在 LangChain 应用中集成 Mem0,实现一个具有记忆能力的旅行顾问 AI。

环境准备

首先需要安装必要的依赖:

pip install langchain openai mem0

基础配置

首先,我们需要设置基本的配置信息:

from openai import OpenAI
from mem0 import Memory
from mem0.configs.base import MemoryConfig
from mem0.embeddings.configs import EmbedderConfig
from mem0.llms.configs import LlmConfig# 集中管理配置
API_KEY = "your-api-key"
BASE_URL = "your-base-url"# 配置 Mem0
config = MemoryConfig(llm = LlmConfig(provider="openai",config={"model": "qwen-turbo","api_key": API_KEY,"openai_base_url": BASE_URL}),embedder = EmbedderConfig(provider="openai",config={"embedding_dims": 1536,"model": "text-embedding-v2","api_key": API_KEY,"openai_base_url": BASE_URL})
)mem0 = Memory(config=config)

核心组件说明

1. 提示模板设计

我们使用 LangChain 的 ChatPromptTemplate 来构建对话模板:

prompt = ChatPromptTemplate.from_messages([SystemMessage(content="""You are a helpful travel agent AI..."""),MessagesPlaceholder(variable_name="context"),HumanMessage(content="{input}")
])

2. 上下文检索

retrieve_context 函数负责从 Mem0 中检索相关记忆:

def retrieve_context(query: str, user_id: str) -> List[Dict]:memories = mem0.search(query, user_id=user_id)seralized_memories = ' '.join([mem["memory"] for mem in memories["results"]])return [{"role": "system", "content": f"Relevant information: {seralized_memories}"},{"role": "user","content": query}]

3. 响应生成

generate_response 函数使用 LangChain 的链式调用生成回复:

def generate_response(input: str, context: List[Dict]) -> str:chain = prompt | llmresponse = chain.invoke({"context": context,"input": input})return response.content

4. 记忆存储

save_interaction 函数将对话保存到 Mem0:

def save_interaction(user_id: str, user_input: str, assistant_response: str):interaction = [{"role": "user", "content": user_input},{"role": "assistant", "content": assistant_response}]mem0.add(interaction, user_id=user_id)

工作流程解析

  1. 记忆检索:当用户发送消息时,系统会使用 Mem0 的 search 方法检索相关的历史对话。

  2. 上下文整合:系统将检索到的记忆整合到提示模板中,确保 AI 能够理解历史上下文。

  3. 响应生成:使用 LangChain 的链式调用生成回复。

  4. 记忆存储:将新的对话内容存储到 Mem0 中,供future使用。

使用示例

if __name__ == "__main__":print("Welcome to your personal Travel Agent Planner!")user_id = "john"while True:user_input = input("You: ")if user_input.lower() in ['quit', 'exit', 'bye']:breakresponse = chat_turn(user_input, user_id)print("Travel Agent:", response)

关键特性

  1. 用户隔离:通过 user_id 实现多用户数据隔离
  2. 语义搜索:Mem0 使用向量嵌入进行语义相似度搜索
  3. 上下文感知:AI 能够理解并利用历史对话信息
  4. 灵活扩展:易于集成到现有的 LangChain 应用中

完整代码与效果

from openai import OpenAI
from mem0 import Memory
from mem0.configs.base import MemoryConfig
from mem0.embeddings.configs import EmbedderConfig
from mem0.llms.configs import LlmConfigfrom langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from typing import List, Dict
# 集中管理配置
API_KEY = "your api key"
BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"# OpenAI客户端配置
openai_client = OpenAI(api_key=API_KEY,base_url=BASE_URL,
)# LangChain LLM配置
llm = ChatOpenAI(temperature=0,openai_api_key=API_KEY,openai_api_base=BASE_URL,model="qwen-turbo"
)# Mem0配置
config = MemoryConfig(llm = LlmConfig(provider="openai",config={"model": "qwen-turbo","api_key": API_KEY,"openai_base_url": BASE_URL}),embedder = EmbedderConfig(provider="openai",config={"embedding_dims": 1536,"model": "text-embedding-v2","api_key": API_KEY,"openai_base_url": BASE_URL})
)mem0 = Memory(config=config)prompt = ChatPromptTemplate.from_messages([SystemMessage(content="""You are a helpful travel agent AI. Use the provided context to personalize your responses and remember user preferences and past interactions. Provide travel recommendations, itinerary suggestions, and answer questions about destinations. If you don't have specific information, you can make general suggestions based on common travel knowledge."""),MessagesPlaceholder(variable_name="context"),HumanMessage(content="{input}")
])def retrieve_context(query: str, user_id: str) -> List[Dict]:"""Retrieve relevant context from Mem0"""memories = mem0.search(query, user_id=user_id)seralized_memories = ' '.join([mem["memory"] for mem in memories["results"]])context = [{"role": "system", "content": f"Relevant information: {seralized_memories}"},{"role": "user","content": query}]return contextdef generate_response(input: str, context: List[Dict]) -> str:"""Generate a response using the language model"""chain = prompt | llmresponse = chain.invoke({"context": context,"input": input})return response.contentdef save_interaction(user_id: str, user_input: str, assistant_response: str):"""Save the interaction to Mem0"""interaction = [{"role": "user","content": user_input},{"role": "assistant","content": assistant_response}]mem0.add(interaction, user_id=user_id)def chat_turn(user_input: str, user_id: str) -> str:# Retrieve contextcontext = retrieve_context(user_input, user_id)# Generate responseresponse = generate_response(user_input, context)# Save interactionsave_interaction(user_id, user_input, response)return responseif __name__ == "__main__":print("Welcome to your personal Travel Agent Planner! How can I assist you with your travel plans today?")user_id = "john"while True:user_input = input("You: ")if user_input.lower() in ['quit', 'exit', 'bye']:print("Travel Agent: Thank you for using our travel planning service. Have a great trip!")breakresponse = chat_turn(user_input, user_id)print(f"Travel Agent: {response}")

在这里插入图片描述
参考链接:https://docs.mem0.ai/integrations/langchain


文章转载自:

http://tdt7DvOW.sjsks.cn
http://3xdTlUK5.sjsks.cn
http://eRXqOBTH.sjsks.cn
http://prXpjSGY.sjsks.cn
http://X9WWYAb2.sjsks.cn
http://VhVDkvSM.sjsks.cn
http://urMa0cxo.sjsks.cn
http://Sohe2hdm.sjsks.cn
http://QBf2YEM3.sjsks.cn
http://JnHo4koN.sjsks.cn
http://6J7sV7UN.sjsks.cn
http://r0PA34Iq.sjsks.cn
http://qiIaHu9M.sjsks.cn
http://hH9aIAVC.sjsks.cn
http://BYfLQme7.sjsks.cn
http://y0QNgLNq.sjsks.cn
http://AQOa6Ri4.sjsks.cn
http://aYOcPpZ0.sjsks.cn
http://J49bnZ9h.sjsks.cn
http://uQaAsbgU.sjsks.cn
http://er5YW3fA.sjsks.cn
http://bIa6NgKr.sjsks.cn
http://ojA3N8e1.sjsks.cn
http://IOpK6vv7.sjsks.cn
http://bPPg4Wyc.sjsks.cn
http://aqG5LF82.sjsks.cn
http://iCkCXsAw.sjsks.cn
http://xPRlI4WW.sjsks.cn
http://9oP2iXXs.sjsks.cn
http://BAMtg8Xn.sjsks.cn
http://www.dtcms.com/wzjs/647047.html

相关文章:

  • 网站设计规划范文手机参数对比的网站
  • 网站注册实名制怎么做忻州做网站公司
  • 公司网站申请书爱给网
  • 太原专门做网站物理网络设计
  • jsp网站开发四库全书公司门户网站模板
  • 网站方案建立网站后期需要干嘛
  • html5网站地址如何制作自己的网页链接
  • 迁移wordpress网站建设优化推广安徽
  • 海安网站优化胶州网站建设哪家好
  • 天长做网站的广州有做网站的公司吗
  • 外国 网站模板单页面组合网站
  • 网站建设实施进度与资源管理html个人网站怎么做
  • 网站建设的一般过程包括哪些网站建设基础及流程
  • 成都购物网站建设网站营销策略有哪些
  • 手机网站建设网网络推广公司盈利模式
  • 佛山网站专家网站建设费记入科目
  • 甘肃省建设厅查行网站菏泽做网站的公司
  • 自己做的网站怎么赚钱phpcms 图片网站
  • 做网站比较好备案网站忘记密码
  • 企业建站用什么系统佛山外贸网站建设
  • 四川高速公路建设开发集团有限公司网站wordpress能静态吗
  • 如何给网站做提升支付平台网站建设
  • 可以建网站的路由器最简单的企业网站
  • 网站开发面试问题以及回答电子商务网站建设题库
  • 如何让公司网站wordpress全站采集
  • 化学产品在哪个网站做推广最好石家庄网站排名软件
  • 免费创建个人商城网站南阳做网站公司
  • 成都哪家公司做网站好建设好一个网站需要
  • 怎样在赶集微网站做微招聘全国企业信息系统网官网
  • 朋友让你做网站如何拒绝莱芜都市网征婚