π’ Announcing our research paper: Mem0 achieves 26% higher accuracy than OpenAI Memory, 91% lower latency, and 90% token savings! Read the paper to learn how we're revolutionizing AI agent memory.
Integrate Mem0βs memory capabilities with OpenAIβs Inbuilt Tools to create AI agents with persistent memory.
Store user preferences, past interactions, or any relevant information:
asyncfunctionaddUserPreferences(){const mem0Client =newMemoryClient(mem0Config);const userPreferences ="I Love BMW, Audi and Porsche. I Hate Mercedes. I love Red cars and Maroon cars. I have a budget of 120K to 150K USD. I like Audi the most.";await mem0Client.add([{role:"user",content: userPreferences,}], mem0Config);}awaitaddUserPreferences();
Define structured response schemas to get consistent output formats:
// Define the schema for a car recommendationconstCarSchema= z.object({car_name: z.string(),car_price: z.string(),car_url: z.string(),car_image: z.string(),car_description: z.string(),});// Schema for a list of car recommendationsconstCars= z.object({cars: z.array(CarSchema),});// Create a function tool based on the schemaconst carRecommendationTool =zodResponsesFunction({name:"carRecommendations",parameters:Cars});// Use the tool in your OpenAI requestconst response =await openAIClient.responses.create({model:"gpt-4o",tools:[{type:"web_search_preview"}, carRecommendationTool],input:`${getMemoryString(relevantMemories)}\n${userInput}`,});
importMemoryClientfrom"mem0ai";import{OpenAI}from"openai";import{ zodResponsesFunction }from"openai/helpers/zod";import{ z }from"zod";importdotenvfrom'dotenv';dotenv.config();const mem0Config ={apiKey: process.env.MEM0_API_KEY,user_id:"sample-user",};asyncfunctionrun(){// Responses without memoriesconsole.log("\n\nRESPONSES WITHOUT MEMORIES\n\n");awaitmain();// Adding sample memoriesawaitaddSampleMemories();// Responses with memoriesconsole.log("\n\nRESPONSES WITH MEMORIES\n\n");awaitmain(true);}// OpenAI Response SchemaconstCarSchema= z.object({car_name: z.string(),car_price: z.string(),car_url: z.string(),car_image: z.string(),car_description: z.string(),});constCars= z.object({cars: z.array(CarSchema),});asyncfunctionmain(memory =false){const openAIClient =newOpenAI();const mem0Client =newMemoryClient(mem0Config);const input ="Suggest me some cars that I can buy today.";const tool =zodResponsesFunction({name:"carRecommendations",parameters:Cars});// Store the user input as a memoryawait mem0Client.add([{role:"user",content: input,}], mem0Config);// Search for relevant memorieslet relevantMemories =[]if(memory){ relevantMemories =await mem0Client.search(input, mem0Config);}const response =await openAIClient.responses.create({model:"gpt-4o",tools:[{type:"web_search_preview"}, tool],input:`${getMemoryString(relevantMemories)}\n${input}`,});console.log(response.output);}asyncfunctionaddSampleMemories(){const mem0Client =newMemoryClient(mem0Config);const myInterests ="I Love BMW, Audi and Porsche. I Hate Mercedes. I love Red cars and Maroon cars. I have a budget of 120K to 150K USD. I like Audi the most.";await mem0Client.add([{role:"user",content: myInterests,}], mem0Config);}constgetMemoryString=(memories)=>{constMEMORY_STRING_PREFIX="These are the memories I have stored. Give more weightage to the question by users and try to answer that first. You have to modify your answer based on the memories I have provided. If the memories are irrelevant you can ignore them. Also don't reply to this section of the prompt, or the memories, they are only for your reference. The MEMORIES of the USER are: \n\n";const memoryString = memories.map((mem)=>`${mem.memory}`).join("\n")??"";return memoryString.length>0?`${MEMORY_STRING_PREFIX}${memoryString}`:"";};run().catch(console.error);
{"cars":[{"car_name":"Toyota Camry","car_price":"$25,000","car_url":"https://www.toyota.com/camry/","car_image":"https://link-to-toyota-camry-image.com","car_description":"Reliable mid-size sedan with great fuel efficiency."},{"car_name":"Honda Accord","car_price":"$26,000","car_url":"https://www.honda.com/accord/","car_image":"https://link-to-honda-accord-image.com","car_description":"Comfortable and spacious with advanced safety features."},{"car_name":"Ford Mustang","car_price":"$28,000","car_url":"https://www.ford.com/mustang/","car_image":"https://link-to-ford-mustang-image.com","car_description":"Iconic sports car with powerful engine options."},{"car_name":"Tesla Model 3","car_price":"$38,000","car_url":"https://www.tesla.com/model3","car_image":"https://link-to-tesla-model3-image.com","car_description":"Electric vehicle with advanced technology and long range."},{"car_name":"Chevrolet Equinox","car_price":"$24,000","car_url":"https://www.chevrolet.com/equinox/","car_image":"https://link-to-chevron-equinox-image.com","car_description":"Compact SUV with a spacious interior and user-friendly technology."}]}