Examples
Agent with a Tool
1 import { Agent, createJoyTokenProvider, defineTool, maxToolCalls, stepCountIs } from "@joytoken/agent-sdk-ts"; 2 3 const lookupOrder = defineTool({ 4 name: "lookup_order", 5 description: "Look up an order by id.", 6 parameters: { 7 type: "object", 8 properties: { 9 id: { type: "string" }, 10 }, 11 required: ["id"], 12 }, 13 execute: async ({ id }) => { 14 return { id, status: "paid" }; 15 }, 16 }); 17 18 const agent = new Agent({ 19 model: createJoyTokenProvider(), 20 modelName: "auto", 21 system: "Use tools when needed. Keep the final answer short.", 22 tools: [lookupOrder], 23 stopWhen: [stepCountIs(6), maxToolCalls(3)], 24 }); 25 26 const result = await agent.run("Check order A100 and summarize the status."); 27 console.log(result.finalText);
Continue a Thread
1 const savedMessages = await loadMessages(threadId); 2 3 const result = await agent.run({ 4 messages: savedMessages, 5 input: "Continue from the last answer.", 6 }); 7 8 await saveMessages(threadId, result.messages);
Limit Cost and Steps
1 import { maxCost, maxToolCalls, stepCountIs } from "@joytoken/agent-sdk-ts"; 2 3 const agent = new Agent({ 4 model: createJoyTokenProvider(), 5 modelName: "auto", 6 stopWhen: [ 7 stepCountIs(8), 8 maxToolCalls(5), 9 maxCost(1), 10 ], 11 });
Override Provider Config
1 const agent = new Agent({ 2 model: createJoyTokenProvider({ 3 apiKey: process.env.JOY_TOKEN_API_KEY, 4 apiBaseUrl: process.env.JOY_TOKEN_API_BASE_URL, 5 openAIBaseUrl: process.env.JOY_TOKEN_OPENAI_BASE_URL, 6 defaultModel: "auto", 7 timeoutMs: 60_000, 8 }), 9 });
Run the Example Project
$ cd joytoken-sdks $ pnpm install $ $ export JOY_TOKEN_API_KEY="jt_xxx" $ export JOY_TOKEN_MODEL="auto" $ $ pnpm --filter joy-token-example live