Mem0 프로바이더
Mem0 프로바이더
Mem0 프로바이더 는 Mem0이 AI SDK와 연동하기 위해 개발한 라이브러리예요. 이 라이브러리는 지속적인 메모리(persistent memory) 기능을 도입해 애플리케이션에 향상된 AI 상호작용 능력을 더해줘요.
참고: 🎉 반가운 소식! Mem0 AI SDK가 이제 도구 호출(Tools Call)을 지원해요.
출처: 문서
본문
설정 (Setup)
Mem0 프로바이더는 @mem0/vercel-ai-provider 모듈에서 사용할 수 있어요. 다음과 같이 설치할 수 있어요:
프로바이더 인스턴스 (Provider Instance)
먼저 Mem0 대시보드에서 Mem0 API 키를 받으세요.
그다음 애플리케이션에서 Mem0 Client를 초기화해요:
import { createMem0 } from '@mem0/vercel-ai-provider';
const mem0 = createMem0({
provider: 'openai',
mem0ApiKey: ***
apiKey: 'provi...ey',
config: {
// 여기서 LLM 프로바이더를 설정해요
},
// 선택: Mem0 글로벌 설정
mem0Config: {
user_id: 'mem0-user-id',
enable_graph: true,
},
});
참고:
openai프로바이더가 기본값으로 설정돼 있어요. 보안을 위해MEM0_API_KEY와OPENAI_API_KEY를 환경 변수로 사용하는 것이 좋아요.참고:
mem0Config는 선택 사항이에요. Mem0 Client의 글로벌 설정(예:user_id,agent_id,app_id,run_id,org_id,project_id등)을 지정할 때 사용해요.
- 컨텍스트를 향상시키기 위해 메모리 추가:
import { LanguageModelV4Prompt } from '@ai-sdk/provider';
import { addMemories } from '@mem0/vercel-ai-provider';
const messages: LanguageModelV4Prompt = [
{ role: 'user', content: [{ type: 'text', text: 'I love red cars.' }] },
];
await addMemories(messages, { user_id: 'borat' });
기능 (Features)
메모리 추가 및 검색 (Adding and Retrieving Memories)
retrieveMemories(): 프롬프트에 대한 메모리 컨텍스트를 검색해요.getMemories(): 프로필에서 메모리를 배열 형식으로 가져와요.addMemories(): 사용자 메모리를 추가해 컨텍스트 인식 응답을 향상시켜요.
await addMemories(messages, {
user_id: 'borat',
mem0ApiKey: ***
});
await retrieveMemories(prompt, {
user_id: 'borat',
mem0ApiKey: ***
});
await getMemories(prompt, {
user_id: 'borat',
mem0ApiKey: ***
});
참고:
addMemories,retrieveMemories,getMemories같은 독립 기능을 사용할 때는MEM0_API_KEY를 환경 변수로 설정하거나 함수 호출에 직접 전달해야 해요.참고:
getMemories는 객체 배열 형태의 원시 메모리를 반환하는 반면,retrieveMemories는 검색된 메모리를 주입한 시스템 프롬프트와 함께 문자열 형식의 응답을 반환해요.
메모리 컨텍스트로 텍스트 생성 (Generate Text with Memory Context)
OpenAI, Anthropic, Cohere, Groq의 언어 모델을 사용해 generateText 함수로 텍스트를 생성할 수 있어요:
import { generateText } from 'ai';
import { createMem0 } from '@mem0/vercel-ai-provider';
const mem0 = createMem0();
const { text } = await generateText({
model: mem0('gpt-4.1', { user_id: 'borat' }),
prompt: 'Suggest me a good car to buy!',
});
메모리를 활용한 구조화 메시지 형식 (Structured Message Format with Memory)
import { generateText } from 'ai';
import { createMem0 } from '@mem0/vercel-ai-provider';
const mem0 = createMem0();
const { text } = await generateText({
model: mem0('gpt-4.1', { user_id: 'borat' }),
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'Suggest me a good car to buy.' },
{ type: 'text', text: 'Why is it better than the other cars for me?' },
],
},
],
});
메모리 컨텍스트로 응답 스트리밍 (Streaming Responses with Memory Context)
import { streamText } from 'ai';
import { createMem0 } from '@mem0/vercel-ai-provider';
const mem0 = createMem0();
const { textStream } = streamText({
model: mem0('gpt-4.1', {
user_id: 'borat',
}),
prompt:
'Suggest me a good car to buy! Why is it better than the other cars for me? Give options for every price range.',
});
for await (const textPart of textStream) {
process.stdout.write(textPart);
}
도구 호출로 응답 생성 (Generate Responses with Tools Call)
import { generateText } from 'ai';
import { createMem0 } from '@mem0/vercel-ai-provider';
import { z } from 'zod';
const mem0 = createMem0({
provider: 'anthropic',
apiKey: 'anthr...ey',
mem0Config: {
// 글로벌 사용자 ID
user_id: 'borat',
},
});
const prompt = 'What the temperature in the city that I live in?';
const result = await generateText({
model: mem0('claude-3-5-sonnet-20240620'),
tools: {
weather: tool({
description: 'Get the weather in a location',
inputSchema: z.object({
location: z.string().describe('The location to get the weather for'),
}),
execute: async ({ location }) => ({
location,
temperature: 72 + Math.floor(Math.random() * 21) - 10,
}),
}),
},
prompt: prompt,
});
console.log(result);
메모리에서 소스 가져오기 (Get sources from memory)
const { text, sources } = await generateText({
model: mem0('gpt-4.1'),
prompt: 'Suggest me a good car to buy!',
});
console.log(sources);
이와 같은 기능은 streamText 함수에서도 사용할 수 있어요.
지원 LLM 프로바이더 (Supported LLM Providers)
Mem0 프로바이더는 다음 LLM 프로바이더를 지원해요:
| 프로바이더 | 설정 값 |
|---|---|
| OpenAI | openai |
| Anthropic | anthropic |
google |
|
| Groq | groq |
| Cohere | cohere |
모범 사례 (Best Practices)
- 사용자 식별 (User Identification): 일관된 메모리 검색을 위해 고유한
user_id를 사용해요. - 메모리 정리 (Memory Cleanup): 사용하지 않는 메모리 데이터를 주기적으로 정리해요.
참고:
agent_id,app_id,run_id도 지원해요. 문서를 참고하세요.
도움말 (Help)
- Vercel AI SDK에 대한 자세한 내용은 Vercel AI SDK 문서를 참고하세요.
- Mem0에 대한 자세한 내용은 Mem0 플랫폼을 참고하세요.
- 추가 지원이 필요하면 다음 방법으로 문의해 주세요.