Examples

Agent with a Tool

1import { Agent, createJoyTokenProvider, defineTool, maxToolCalls, stepCountIs } from "@joytoken/agent-sdk-ts";
2
3const 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
18const 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
26const result = await agent.run("Check order A100 and summarize the status.");
27console.log(result.finalText);

Continue a Thread

1const savedMessages = await loadMessages(threadId);
2
3const result = await agent.run({
4 messages: savedMessages,
5 input: "Continue from the last answer.",
6});
7
8await saveMessages(threadId, result.messages);

Limit Cost and Steps

1import { maxCost, maxToolCalls, stepCountIs } from "@joytoken/agent-sdk-ts";
2
3const 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

1const 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