Add langchain doc (#1963)
This commit is contained in:
@@ -1,36 +0,0 @@
|
|||||||
# This example shows how to use vector config to use QDRANT CLOUD
|
|
||||||
import os
|
|
||||||
|
|
||||||
from dotenv import load_dotenv
|
|
||||||
|
|
||||||
from mem0 import Memory
|
|
||||||
|
|
||||||
# Loading OpenAI API Key
|
|
||||||
load_dotenv()
|
|
||||||
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
|
|
||||||
USER_ID = "test"
|
|
||||||
quadrant_host = "xx.gcp.cloud.qdrant.io"
|
|
||||||
|
|
||||||
# creating the config attributes
|
|
||||||
collection_name = "memory" # this is the collection I created in QDRANT cloud
|
|
||||||
api_key = os.environ.get("QDRANT_API_KEY") # Getting the QDRANT api KEY
|
|
||||||
host = quadrant_host
|
|
||||||
port = 6333 # Default port for QDRANT cloud
|
|
||||||
|
|
||||||
# Creating the config dict
|
|
||||||
config = {
|
|
||||||
"vector_store": {
|
|
||||||
"provider": "qdrant",
|
|
||||||
"config": {"collection_name": collection_name, "host": host, "port": port, "path": None, "api_key": api_key},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# this is the change, create the memory class using from config
|
|
||||||
memory = Memory().from_config(config)
|
|
||||||
|
|
||||||
USER_DATA = """
|
|
||||||
I am a strong believer in memory architecture.
|
|
||||||
"""
|
|
||||||
|
|
||||||
response = memory.add(USER_DATA, user_id=USER_ID)
|
|
||||||
print(response)
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,296 +0,0 @@
|
|||||||
{
|
|
||||||
"cells": [
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"id": "fu3euPKZsbaC"
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"!pip install mem0ai"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"id": "U2VC_0FElQid"
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"import os\n",
|
|
||||||
"from openai import OpenAI\n",
|
|
||||||
"from mem0 import MemoryClient\n",
|
|
||||||
"from multion.client import MultiOn\n",
|
|
||||||
"\n",
|
|
||||||
"# Configuration\n",
|
|
||||||
"OPENAI_API_KEY = \"sk-xxx\" # Replace with your actual OpenAI API key\n",
|
|
||||||
"MULTION_API_KEY = \"xx\" # Replace with your actual MultiOn API key\n",
|
|
||||||
"MEM0_API_KEY = \"xx\" # Replace with your actual Mem0 API key\n",
|
|
||||||
"USER_ID = \"test_travel_agent\"\n",
|
|
||||||
"\n",
|
|
||||||
"# Set up OpenAI API key\n",
|
|
||||||
"os.environ[\"OPENAI_API_KEY\"] = OPENAI_API_KEY\n",
|
|
||||||
"\n",
|
|
||||||
"# Initialize Mem0 and MultiOn\n",
|
|
||||||
"memory = MemoryClient(api_key=MEM0_API_KEY)\n",
|
|
||||||
"multion = MultiOn(api_key=MULTION_API_KEY)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"id": "sq-OdPHKlQie",
|
|
||||||
"outputId": "1d605222-0bf5-4ac9-99b9-6059b502c20b"
|
|
||||||
},
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"{'message': 'Memory added successfully!'}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 2,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"# Add conversation to Mem0\n",
|
|
||||||
"conversation = [\n",
|
|
||||||
" {\"role\": \"user\", \"content\": \"What are the best travel destinations in the world?\"},\n",
|
|
||||||
" {\n",
|
|
||||||
" \"role\": \"assistant\",\n",
|
|
||||||
" \"content\": \"Could you please specify your interests or the type of travel information you are looking for? This will help me find the most relevant information for you.\",\n",
|
|
||||||
" },\n",
|
|
||||||
" {\"role\": \"user\", \"content\": \"Sure, I want to travel to San Francisco.\"},\n",
|
|
||||||
" {\n",
|
|
||||||
" \"role\": \"assistant\",\n",
|
|
||||||
" \"content\": \"\"\"\n",
|
|
||||||
" Based on the information gathered from TripAdvisor, here are some popular attractions, activities, and travel tips for San Francisco:\n",
|
|
||||||
"\n",
|
|
||||||
" 1. **Golden Gate Bridge**: A must-see iconic landmark.\n",
|
|
||||||
" 2. **Alcatraz Island**: Famous former prison offering tours.\n",
|
|
||||||
" 3. **Fisherman's Wharf**: Popular tourist area with shops, restaurants, and sea lions.\n",
|
|
||||||
" 4. **Chinatown**: The largest Chinatown outside of Asia.\n",
|
|
||||||
" 5. **Golden Gate Park**: Large urban park with gardens, museums, and recreational activities.\n",
|
|
||||||
" 6. **Cable Cars**: Historic streetcars offering a unique way to see the city.\n",
|
|
||||||
" 7. **Exploratorium**: Interactive science museum.\n",
|
|
||||||
" 8. **San Francisco Museum of Modern Art (SFMOMA)**: Modern and contemporary art museum.\n",
|
|
||||||
" 9. **Lombard Street**: Known for its steep, one-block section with eight hairpin turns.\n",
|
|
||||||
" 10. **Union Square**: Major shopping and cultural hub.\n",
|
|
||||||
"\n",
|
|
||||||
" Travel Tips:\n",
|
|
||||||
" - **Weather**: San Francisco has a mild climate, but it can be foggy and windy. Dress in layers.\n",
|
|
||||||
" - **Transportation**: Use public transportation like BART, Muni, and cable cars to get around.\n",
|
|
||||||
" - **Safety**: Be aware of your surroundings, especially in crowded tourist areas.\n",
|
|
||||||
" - **Dining**: Try local specialties like sourdough bread, seafood, and Mission-style burritos.\n",
|
|
||||||
" \"\"\",\n",
|
|
||||||
" },\n",
|
|
||||||
" {\"role\": \"user\", \"content\": \"Show me hotels around Golden Gate Bridge.\"},\n",
|
|
||||||
" {\n",
|
|
||||||
" \"role\": \"assistant\",\n",
|
|
||||||
" \"content\": \"\"\"\n",
|
|
||||||
" The search results for hotels around Golden Gate Bridge in San Francisco include:\n",
|
|
||||||
"\n",
|
|
||||||
" 1. Hilton Hotels In San Francisco - Hotel Near Fishermans Wharf (hilton.com)\n",
|
|
||||||
" 2. The 10 Closest Hotels to Golden Gate Bridge (tripadvisor.com)\n",
|
|
||||||
" 3. Hotels near Golden Gate Bridge (expedia.com)\n",
|
|
||||||
" 4. Hotels near Golden Gate Bridge (hotels.com)\n",
|
|
||||||
" 5. Holiday Inn Express & Suites San Francisco Fishermans Wharf, an IHG Hotel $146 (1.8K) 3-star hotel Golden Gate Bridge • 3.5 mi DEAL 19% less than usual\n",
|
|
||||||
" 6. Holiday Inn San Francisco-Golden Gateway, an IHG Hotel $151 (3.5K) 3-star hotel Golden Gate Bridge • 3.7 mi Casual hotel with dining, a bar & a pool\n",
|
|
||||||
" 7. Hotel Zephyr San Francisco $159 (3.8K) 4-star hotel Golden Gate Bridge • 3.7 mi Nautical-themed lodging with bay views\n",
|
|
||||||
" 8. Lodge at the Presidio\n",
|
|
||||||
" 9. The Inn Above Tide\n",
|
|
||||||
" 10. Cavallo Point\n",
|
|
||||||
" 11. Casa Madrona Hotel and Spa\n",
|
|
||||||
" 12. Cow Hollow Inn and Suites\n",
|
|
||||||
" 13. Samesun San Francisco\n",
|
|
||||||
" 14. Inn on Broadway\n",
|
|
||||||
" 15. Coventry Motor Inn\n",
|
|
||||||
" 16. HI San Francisco Fisherman's Wharf Hostel\n",
|
|
||||||
" 17. Loews Regency San Francisco Hotel\n",
|
|
||||||
" 18. Fairmont Heritage Place Ghirardelli Square\n",
|
|
||||||
" 19. Hotel Drisco Pacific Heights\n",
|
|
||||||
" 20. Travelodge by Wyndham Presidio San Francisco\n",
|
|
||||||
" \"\"\",\n",
|
|
||||||
" },\n",
|
|
||||||
"]\n",
|
|
||||||
"\n",
|
|
||||||
"memory.add(conversation, user_id=USER_ID)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"id": "hO8z9aNTlQif"
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"def get_travel_info(question, use_memory=True):\n",
|
|
||||||
" \"\"\"\n",
|
|
||||||
" Get travel information based on user's question and optionally their preferences from memory.\n",
|
|
||||||
"\n",
|
|
||||||
" \"\"\"\n",
|
|
||||||
" if use_memory:\n",
|
|
||||||
" previous_memories = memory.search(question, user_id=USER_ID)\n",
|
|
||||||
" relevant_memories_text = \"\"\n",
|
|
||||||
" if previous_memories:\n",
|
|
||||||
" print(\"Using previous memories to enhance the search...\")\n",
|
|
||||||
" relevant_memories_text = \"\\n\".join(mem[\"memory\"] for mem in previous_memories)\n",
|
|
||||||
"\n",
|
|
||||||
" command = \"Find travel information based on my interests:\"\n",
|
|
||||||
" prompt = f\"{command}\\n Question: {question} \\n My preferences: {relevant_memories_text}\"\n",
|
|
||||||
" else:\n",
|
|
||||||
" command = \"Find travel information based on my interests:\"\n",
|
|
||||||
" prompt = f\"{command}\\n Question: {question}\"\n",
|
|
||||||
"\n",
|
|
||||||
" print(\"Searching for travel information...\")\n",
|
|
||||||
" browse_result = multion.browse(cmd=prompt)\n",
|
|
||||||
" return browse_result.message"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"id": "Wp2xpzMrlQig"
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"## Example 1"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"id": "bPRPwqsplQig"
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"question = \"Show me flight details for it.\"\n",
|
|
||||||
"answer_without_memory = get_travel_info(question, use_memory=False)\n",
|
|
||||||
"answer_with_memory = get_travel_info(question, use_memory=True)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"id": "a76ifa2HlQig"
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"| Without Memory | With Memory |\n",
|
|
||||||
"|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
|
|
||||||
"| I have performed a Google search for \"flight details\" and reviewed the search results. Here are some relevant links and information: | Memorizing the following information: Flight details for San Francisco: |\n",
|
|
||||||
"| 1. **FlightStats Global Flight Tracker** - Track the real-time flight status of your flight. See if your flight has been delayed or cancelled and track the live status. <br> [Flight Tracker - FlightStats](https://www.flightstats.com/flight-tracker/search) | 1. Prices from $232. Depart Thursday, August 22. Return Thursday, August 29. <br> 2. Prices from $216. Depart Friday, August 23. Return Friday, August 30. <br> 3. Prices from $236. Depart Saturday, August 24. Return Saturday, August 31. <br> 4. Prices from $215. Depart Sunday, August 25. Return Sunday, September 1. |\n",
|
|
||||||
"| 2. **FlightAware - Flight Tracker** - Track live flights worldwide, see flight cancellations, and browse by airport. <br> [FlightAware - Flight Tracker](https://www.flightaware.com) | 5. Prices from $218. Depart Monday, August 26. Return Monday, September 2. <br> 6. Prices from $211. Depart Tuesday, August 27. Return Tuesday, September 3. <br> 7. Prices from $198. Depart Wednesday, August 28. Return Wednesday, September 4. <br> 8. Prices from $218. Depart Thursday, August 29. Return Thursday, September 5. |\n",
|
|
||||||
"| 3. **Google Flights** - Show flights based on your search. <br> [Google Flights](https://www.google.com/flights) | 9. Prices from $194. Depart Friday, August 30. Return Friday, September 6. <br> 10. Prices from $218. Depart Saturday, August 31. Return Saturday, September 7. <br> 11. Prices from $212. Depart Sunday, September 1. Return Sunday, September 8. <br> 12. Prices from $247. Depart Monday, September 2. Return Monday, September 9. |\n",
|
|
||||||
"| | 13. Prices from $212. Depart Tuesday, September 3. Return Tuesday, September 10. <br> 14. Prices from $203. Depart Wednesday, September 4. Return Wednesday, September 11. <br> 15. Prices from $242. Depart Thursday, September 5. Return Thursday, September 12. <br> 16. Prices from $191. Depart Friday, September 6. Return Friday, September 13. |\n",
|
|
||||||
"| | 17. Prices from $215. Depart Saturday, September 7. Return Saturday, September 14. <br> 18. Prices from $229. Depart Sunday, September 8. Return Sunday, September 15. <br> 19. Prices from $183. Depart Monday, September 9. Return Monday, September 16. <br> 65. Prices from $194. Depart Friday, October 25. Return Friday, November 1. |\n",
|
|
||||||
"| | 66. Prices from $205. Depart Saturday, October 26. Return Saturday, November 2. <br> 67. Prices from $241. Depart Sunday, October 27. Return Sunday, November 3. |\n"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"id": "0cXpiAwMlQig"
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"## Example 2"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"id": "LpprKfpslQih"
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"question = \"What places to visit there?\"\n",
|
|
||||||
"answer_without_memory = get_travel_info(question, use_memory=False)\n",
|
|
||||||
"answer_with_memory = get_travel_info(question, use_memory=True)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"id": "kpfjeY1_lQih"
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"| Without Memory | With Memory |\n",
|
|
||||||
"|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
|
|
||||||
"| Based on the information gathered, here are some top travel destinations to consider visiting: | Based on the information gathered, here are some top places to visit in San Francisco: |\n",
|
|
||||||
"| 1. **Paris**: Known for its iconic attractions like the Eiffel Tower and the Louvre, Paris offers quaint cafes, trendy shopping districts, and beautiful Haussmann architecture. It's a city where you can always discover something new with each visit. | 1. **Golden Gate Bridge** - An iconic symbol of San Francisco, perfect for walking, biking, or simply enjoying the view. <br> 2. **Alcatraz Island** - The historic former prison offers tours and insights into its storied past. <br> 3. **Fisherman's Wharf** - A bustling waterfront area known for its seafood, shopping, and attractions like Pier 39. <br> 4. **Golden Gate Park** - A large urban park with gardens, museums, and recreational activities. <br> 5. **Chinatown San Francisco** - One of the oldest and most famous Chinatowns in North America, offering unique shops and delicious food. <br> 6. **Coit Tower** - Offers panoramic views of the city and murals depicting San Francisco's history. <br> 7. **Lands End** - A beautiful coastal trail with stunning views of the Pacific Ocean and the Golden Gate Bridge. <br> 8. **Palace of Fine Arts** - A picturesque structure and park, perfect for a leisurely stroll or photo opportunities. <br> 9. **Crissy Field & The Presidio Tunnel Tops** - Great for outdoor activities and scenic views of the bay. |\n",
|
|
||||||
"| 2. **Bora Bora**: This small island in French Polynesia is famous for its stunning turquoise waters, luxurious overwater bungalows, and vibrant coral reefs. It's a popular destination for honeymooners and those seeking a tropical paradise. | |\n",
|
|
||||||
"| 3. **Glacier National Park**: Located in Montana, USA, this park is known for its breathtaking landscapes, including rugged mountains, pristine lakes, and diverse wildlife. It's a haven for outdoor enthusiasts and hikers. | |\n",
|
|
||||||
"| 4. **Rome**: The capital of Italy, Rome is rich in history and culture, featuring landmarks such as the Colosseum, the Vatican, and the Pantheon. It's a city where ancient history meets modern life. | |\n",
|
|
||||||
"| 5. **Swiss Alps**: Renowned for their stunning natural beauty, the Swiss Alps offer opportunities for skiing, hiking, and enjoying picturesque mountain villages. | |\n",
|
|
||||||
"| 6. **Maui**: One of Hawaii's most popular islands, Maui is known for its beautiful beaches, lush rainforests, and the scenic Hana Highway. It's a great destination for both relaxation and adventure. | |\n",
|
|
||||||
"| 7. **London, England**: A vibrant city with a mix of historical landmarks like the Tower of London and modern attractions such as the London Eye. London offers diverse cultural experiences, world-class museums, and a bustling nightlife. | |\n",
|
|
||||||
"| 8. **Maldives**: This tropical paradise in the Indian Ocean is famous for its crystal-clear waters, luxurious resorts, and abundant marine life. It's an ideal destination for snorkeling, diving, and relaxation. | |\n",
|
|
||||||
"| 9. **Turks & Caicos**: Known for its pristine beaches and turquoise waters, this Caribbean destination is perfect for water sports, beach lounging, and exploring coral reefs. | |\n",
|
|
||||||
"| 10. **Tokyo**: Japan's bustling capital offers a unique blend of traditional and modern attractions, from ancient temples to futuristic skyscrapers. Tokyo is also known for its vibrant food scene and shopping districts. | |\n"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"id": "XdpkcMrclQih"
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"## Example 3"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": null,
|
|
||||||
"metadata": {
|
|
||||||
"id": "Nntl2FxulQih"
|
|
||||||
},
|
|
||||||
"outputs": [],
|
|
||||||
"source": [
|
|
||||||
"question = \"What the weather there?\"\n",
|
|
||||||
"answer_without_memory = get_travel_info(question, use_memory=False)\n",
|
|
||||||
"answer_with_memory = get_travel_info(question, use_memory=True)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"id": "yt2pj1irlQih"
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"| Without Memory | With Memory |\n",
|
|
||||||
"|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n",
|
|
||||||
"| The current weather in Paris is light rain with a temperature of 67°F. The precipitation is at 50%, humidity is 95%, and the wind speed is 5 mph. | The current weather in San Francisco is as follows: <br> - **Temperature**: 59°F <br> - **Condition**: Clear with periodic clouds <br> - **Precipitation**: 3% <br> - **Humidity**: 87% <br> - **Wind**: 12 mph |\n"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"colab": {
|
|
||||||
"provenance": []
|
|
||||||
},
|
|
||||||
"kernelspec": {
|
|
||||||
"display_name": ".venv",
|
|
||||||
"language": "python",
|
|
||||||
"name": "python3"
|
|
||||||
},
|
|
||||||
"language_info": {
|
|
||||||
"codemirror_mode": {
|
|
||||||
"name": "ipython",
|
|
||||||
"version": 3
|
|
||||||
},
|
|
||||||
"file_extension": ".py",
|
|
||||||
"mimetype": "text/x-python",
|
|
||||||
"name": "python",
|
|
||||||
"nbconvert_exporter": "python",
|
|
||||||
"pygments_lexer": "ipython3",
|
|
||||||
"version": "3.12.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nbformat": 4,
|
|
||||||
"nbformat_minor": 0
|
|
||||||
}
|
|
||||||
157
docs/integrations/langchain.mdx
Normal file
157
docs/integrations/langchain.mdx
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
---
|
||||||
|
title: Langchain
|
||||||
|
---
|
||||||
|
|
||||||
|
Build a personalized Travel Agent AI using LangChain for conversation flow and Mem0 for memory retention. This integration enables context-aware and efficient travel planning experiences.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
In this guide, we'll create a Travel Agent AI that:
|
||||||
|
1. Uses LangChain to manage conversation flow
|
||||||
|
2. Leverages Mem0 to store and retrieve relevant information from past interactions
|
||||||
|
3. Provides personalized travel recommendations based on user history
|
||||||
|
|
||||||
|
## Setup and Configuration
|
||||||
|
|
||||||
|
Install necessary libraries:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install langchain langchain_openai mem0ai
|
||||||
|
```
|
||||||
|
|
||||||
|
Import required modules and set up configurations:
|
||||||
|
|
||||||
|
<Note>Remember to get the Mem0 API key from [Mem0 Platform](https://app.mem0.ai).</Note>
|
||||||
|
|
||||||
|
```python
|
||||||
|
import os
|
||||||
|
from typing import List, Dict
|
||||||
|
from langchain_openai import ChatOpenAI
|
||||||
|
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
|
||||||
|
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
|
||||||
|
from mem0 import MemoryClient
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
|
||||||
|
os.environ["MEM0_API_KEY"] = "your-mem0-api-key"
|
||||||
|
|
||||||
|
# Initialize LangChain and Mem0
|
||||||
|
llm = ChatOpenAI(model="gpt-4o-mini")
|
||||||
|
mem0 = MemoryClient(api_key=os.environ["MEM0_API_KEY"])
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create Prompt Template
|
||||||
|
|
||||||
|
Set up the conversation prompt template:
|
||||||
|
|
||||||
|
```python
|
||||||
|
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}")
|
||||||
|
])
|
||||||
|
```
|
||||||
|
|
||||||
|
## Define Helper Functions
|
||||||
|
|
||||||
|
Create functions to handle context retrieval, response generation, and addition to Mem0:
|
||||||
|
|
||||||
|
```python
|
||||||
|
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])
|
||||||
|
context = [
|
||||||
|
{
|
||||||
|
"role": "system",
|
||||||
|
"content": f"Relevant information: {seralized_memories}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": query
|
||||||
|
}
|
||||||
|
]
|
||||||
|
return context
|
||||||
|
|
||||||
|
def generate_response(input: str, context: List[Dict]) -> str:
|
||||||
|
"""Generate a response using the language model"""
|
||||||
|
chain = prompt | llm
|
||||||
|
response = chain.invoke({
|
||||||
|
"context": context,
|
||||||
|
"input": input
|
||||||
|
})
|
||||||
|
return response.content
|
||||||
|
|
||||||
|
def 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)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create Chat Turn Function
|
||||||
|
|
||||||
|
Implement the main function to manage a single turn of conversation:
|
||||||
|
|
||||||
|
```python
|
||||||
|
def chat_turn(user_input: str, user_id: str) -> str:
|
||||||
|
# Retrieve context
|
||||||
|
context = retrieve_context(user_input, user_id)
|
||||||
|
|
||||||
|
# Generate response
|
||||||
|
response = generate_response(user_input, context)
|
||||||
|
|
||||||
|
# Save interaction
|
||||||
|
save_interaction(user_id, user_input, response)
|
||||||
|
|
||||||
|
return response
|
||||||
|
```
|
||||||
|
|
||||||
|
## Main Interaction Loop
|
||||||
|
|
||||||
|
Set up the main program loop for user interaction:
|
||||||
|
|
||||||
|
```python
|
||||||
|
if __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!")
|
||||||
|
break
|
||||||
|
|
||||||
|
response = chat_turn(user_input, user_id)
|
||||||
|
print(f"Travel Agent: {response}")
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Features
|
||||||
|
|
||||||
|
1. **Memory Integration**: Uses Mem0 to store and retrieve relevant information from past interactions.
|
||||||
|
2. **Personalization**: Provides context-aware responses based on user history and preferences.
|
||||||
|
3. **Flexible Architecture**: LangChain structure allows for easy expansion of the conversation flow.
|
||||||
|
4. **Continuous Learning**: Each interaction is stored, improving future responses.
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
By integrating LangChain with Mem0, you can build a personalized Travel Agent AI that can maintain context across interactions and provide tailored travel recommendations and assistance.
|
||||||
|
|
||||||
|
## Help
|
||||||
|
|
||||||
|
- For more details on LangChain, visit the [LangChain documentation](https://python.langchain.com/).
|
||||||
|
- For Mem0 documentation, refer to the [Mem0 Platform](https://app.mem0.ai/).
|
||||||
|
- If you need further assistance, please feel free to reach out to us through the following methods:
|
||||||
|
|
||||||
|
<Snippet file="get-help.mdx" />
|
||||||
|
|
||||||
@@ -206,6 +206,7 @@
|
|||||||
"pages": [
|
"pages": [
|
||||||
"integrations/multion",
|
"integrations/multion",
|
||||||
"integrations/autogen",
|
"integrations/autogen",
|
||||||
|
"integrations/langchain",
|
||||||
"integrations/langgraph"
|
"integrations/langgraph"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user