mirror of
https://github.com/cpacker/MemGPT.git
synced 2025-06-03 04:30:22 +00:00
docs: add TS example in core (#824)
This commit is contained in:
parent
5fcca8a010
commit
1bc102e754
138
examples/docs/node/example.ts
Normal file
138
examples/docs/node/example.ts
Normal file
@ -0,0 +1,138 @@
|
||||
import { LettaClient } from '@letta-ai/letta-client';
|
||||
import {
|
||||
AssistantMessage,
|
||||
ReasoningMessage,
|
||||
ToolCallMessage,
|
||||
ToolReturnMessage,
|
||||
} from '@letta-ai/letta-client/api/types';
|
||||
|
||||
// Start letta server and run `npm run example`
|
||||
const client = new LettaClient({
|
||||
baseUrl: 'http://localhost:8283',
|
||||
});
|
||||
|
||||
const agent = await client.agents.create({
|
||||
memoryBlocks: [
|
||||
{
|
||||
value: 'name: Caren',
|
||||
label: 'human',
|
||||
},
|
||||
],
|
||||
model: 'openai/gpt-4o-mini',
|
||||
embedding: 'openai/text-embedding-ada-002',
|
||||
});
|
||||
|
||||
console.log('Created agent with name', agent.name);
|
||||
|
||||
let messageText = "What's my name?";
|
||||
let response = await client.agents.messages.create(agent.id, {
|
||||
messages: [
|
||||
{
|
||||
role: 'user',
|
||||
content: messageText,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
console.log(`Sent message to agent ${agent.name}: ${messageText}`);
|
||||
console.log(
|
||||
'Agent thoughts:',
|
||||
(response.messages[0] as ReasoningMessage).reasoning,
|
||||
);
|
||||
console.log(
|
||||
'Agent response:',
|
||||
(response.messages[1] as AssistantMessage).content,
|
||||
);
|
||||
|
||||
const custom_tool_source_code = `
|
||||
def secret_message():
|
||||
"""Return a secret message."""
|
||||
return "Hello world!"
|
||||
`.trim();
|
||||
|
||||
const tool = await client.tools.upsert({
|
||||
sourceCode: custom_tool_source_code,
|
||||
});
|
||||
|
||||
await client.agents.tools.attach(agent.id, tool.id!);
|
||||
|
||||
console.log(
|
||||
`Created tool with name ${tool.name} and attached to agent ${agent.name}`,
|
||||
);
|
||||
|
||||
messageText = 'Run secret message tool and tell me what it returns';
|
||||
response = await client.agents.messages.create(agent.id, {
|
||||
messages: [
|
||||
{
|
||||
role: 'user',
|
||||
content: messageText,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
console.log('Sent message to agent:', messageText);
|
||||
console.log(
|
||||
'Agent thoughts',
|
||||
(response.messages[0] as ReasoningMessage).reasoning,
|
||||
);
|
||||
console.log(
|
||||
'Tool call information',
|
||||
(response.messages[1] as ToolCallMessage).toolCall,
|
||||
);
|
||||
console.log(
|
||||
'Tool response information',
|
||||
(response.messages[2] as ToolReturnMessage).status,
|
||||
);
|
||||
console.log(
|
||||
'Agent thoughts',
|
||||
(response.messages[3] as ReasoningMessage).reasoning,
|
||||
);
|
||||
console.log(
|
||||
'Agent response:',
|
||||
(response.messages[4] as AssistantMessage).content,
|
||||
);
|
||||
|
||||
let agentCopy = await client.agents.create({
|
||||
model: 'openai/gpt-4o-mini',
|
||||
embedding: 'openai/text-embedding-ada-002',
|
||||
});
|
||||
let block = await client.agents.coreMemory.retrieveBlock(agent.id, 'human');
|
||||
agentCopy = await client.agents.coreMemory.attachBlock(agentCopy.id, block.id!);
|
||||
|
||||
console.log('Created agent copy with shared memory named', agentCopy.name);
|
||||
|
||||
messageText =
|
||||
"My name isn't Caren, it's Sarah. Please update your core memory with core_memory_replace";
|
||||
console.log(`Sent message to agent ${agentCopy.name}: ${messageText}`);
|
||||
|
||||
response = await client.agents.messages.create(agentCopy.id, {
|
||||
messages: [
|
||||
{
|
||||
role: 'user',
|
||||
content: messageText,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
block = await client.agents.coreMemory.retrieveBlock(agentCopy.id, 'human');
|
||||
console.log(`New core memory for agent ${agentCopy.name}: ${block.value}`);
|
||||
|
||||
messageText = "What's my name?";
|
||||
response = await client.agents.messages.create(agentCopy.id, {
|
||||
messages: [
|
||||
{
|
||||
role: 'user',
|
||||
content: messageText,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
console.log(`Sent message to agent ${agentCopy.name}: ${messageText}`);
|
||||
console.log(
|
||||
'Agent thoughts:',
|
||||
(response.messages[0] as ReasoningMessage).reasoning,
|
||||
);
|
||||
console.log(
|
||||
'Agent response:',
|
||||
(response.messages[1] as AssistantMessage).content,
|
||||
);
|
1314
examples/docs/node/package-lock.json
generated
Normal file
1314
examples/docs/node/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
18
examples/docs/node/package.json
Normal file
18
examples/docs/node/package.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "@letta-ai/core",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"example": "node --no-warnings --import 'data:text/javascript,import { register } from \"node:module\"; import { pathToFileURL } from \"node:url\"; register(\"ts-node/esm\", pathToFileURL(\"./\"));' example.ts",
|
||||
"build": "tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@letta-ai/letta-client": "^0.1.17"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.12.0",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.7.3"
|
||||
}
|
||||
}
|
18
examples/docs/node/tsconfig.json
Normal file
18
examples/docs/node/tsconfig.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es2017",
|
||||
"module": "esnext",
|
||||
"lib": ["es2017", "dom"],
|
||||
"declaration": true,
|
||||
"strict": true,
|
||||
"moduleResolution": "node",
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"outDir": "./dist",
|
||||
"rootDir": ".",
|
||||
"resolveJsonModule": true
|
||||
},
|
||||
"include": ["*.ts"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
}
|
Loading…
Reference in New Issue
Block a user