How a 20-Year-Old Student Could Beat Apple Siri

What's the battery percentage? The current battery is at 73%. ... Okay, it's not quite Siri yet, but it's a start, isn't it? Creating AI Agents: Easier Than I Thought I wanted to create an agent like Siri that could understand speech and perform functions accordingly. I thought Siri's functionality was vast and would require a huge structure and many developers to implement. Then, I started using Agentica, the framework built by our team, and realized I could create Tool Calling-based AI agents much more easily than expected. What Makes Agentica Different? Agentica is a library born to make Tool Calling truly simple. It was created with the philosophy: "Just create the functions, and I'll handle the rest." Traditionally, we did this: // 1. Create a function function getBatteryLevel() { ... } // 2. Define parameters const schema = z.object({...}); // 3. Create the tool const tool = createTool({ name, description, parameters: schema, execute: getBatteryLevel }); How do we do it with Agentica? The parameter definition part disappears! Instead, it uses the TypeScript compiler to automatically generate the schema! // 1. Create a function function getBatteryLevel() { ... } // 2. Just pass in the function and you're done! const tool = { application: typia.llm.application() } Additionally, if you add JSDoc comments to describe your function, those will automatically be used as the function description! My "Siri" Challenge Siri handles various tasks on your device, from setting up calendar events to setting alarms and many other device functions. Do we need to create all these functions from scratch? No! We already use many libraries when developing. By simply passing these library functions to Agentica, we can easily attach Agentic AI! In my case, I used the expo-battery library to allow AI to read battery information. The resulting code was surprisingly simple! I just wrote some basic code using expo-battery, and witnessed the amazing result where the functions, descriptions, and parameter information built into expo-battery were automatically converted into tools the AI could use! import {Agentica, IAgenticaController} from '@agentica/core'; import * as Battery from 'expo-battery'; import OpenAI from 'openai'; import typia from 'typia'; const agentica = new Agentica({ model: 'chatgpt', vendor: { api: new OpenAI({ apiKey: 'user-api-key', }), model: 'gpt-4o', }, controllers: [ // Battery Controller { protocol: 'class', name: 'battery', execute: Battery, application: typia.llm.application(), }, ], }); await agentica.conversate('What is the battery level?').then(console.log); // result: The battery level is 50% Conclusion: Escape Tool Calling Hell! Agentica isn't a fancy framework. Instead, it has a very clear purpose: "Make tool calling registration as simple and natural as possible." If you're tired of implementing Tool Calling for each individual function, Agentica can be a surprisingly powerful tool. GitHub repository: https://github.com/wrtnlabs/agentica.template.react-native React Native + Agentica tutorial: https://wrtnlabs.io/agentica/tutorial/react-native/sms/

Apr 18, 2025 - 10:33
 0
How a 20-Year-Old Student Could Beat Apple Siri

What's the battery percentage?
The current battery is at 73%.
... Okay, it's not quite Siri yet, but it's a start, isn't it?

Creating AI Agents: Easier Than I Thought

I wanted to create an agent like Siri that could understand speech and perform functions accordingly.

I thought Siri's functionality was vast and would require a huge structure and many developers to implement.

Then, I started using Agentica, the framework built by our team, and realized I could create Tool Calling-based AI agents much more easily than expected.

What Makes Agentica Different?

Agentica is a library born to make Tool Calling truly simple.

It was created with the philosophy: "Just create the functions, and I'll handle the rest."

Traditionally, we did this:

// 1. Create a function
function getBatteryLevel() { ... }

// 2. Define parameters
const schema = z.object({...});

// 3. Create the tool
const tool = createTool({ name, description, parameters: schema, execute: getBatteryLevel });

How do we do it with Agentica?

The parameter definition part disappears! Instead, it uses the TypeScript compiler to automatically generate the schema!

// 1. Create a function
function getBatteryLevel() { ... }

// 2. Just pass in the function and you're done!
const tool = { application: typia.llm.application<{ getBatteryLevel: typeof getBatteryLevel }>() }

Additionally, if you add JSDoc comments to describe your function, those will automatically be used as the function description!

My "Siri" Challenge

Siri handles various tasks on your device, from setting up calendar events to setting alarms and many other device functions.

Do we need to create all these functions from scratch?

No! We already use many libraries when developing. By simply passing these library functions to Agentica, we can easily attach Agentic AI!

In my case, I used the expo-battery library to allow AI to read battery information.

The resulting code was surprisingly simple! I just wrote some basic code using expo-battery, and witnessed the amazing result where the functions, descriptions, and parameter information built into expo-battery were automatically converted into tools the AI could use!

import {Agentica, IAgenticaController} from '@agentica/core';
import * as Battery from 'expo-battery';
import OpenAI from 'openai';
import typia from 'typia';


const agentica = new Agentica({
  model: 'chatgpt',
  vendor: {
    api: new OpenAI({
      apiKey: 'user-api-key',
    }),
    model: 'gpt-4o',
  },
  controllers: [
    // Battery Controller
    {
      protocol: 'class',
      name: 'battery',
      execute: Battery,
      application: typia.llm.application<typeof Battery, 'chatgpt'>(),
    },
  ],
});

await agentica.conversate('What is the battery level?').then(console.log);
// result: The battery level is 50%

Conclusion: Escape Tool Calling Hell!

Agentica isn't a fancy framework. Instead, it has a very clear purpose:

"Make tool calling registration as simple and natural as possible."

If you're tired of implementing Tool Calling for each individual function, Agentica can be a surprisingly powerful tool.

GitHub repository: https://github.com/wrtnlabs/agentica.template.react-native

React Native + Agentica tutorial: https://wrtnlabs.io/agentica/tutorial/react-native/sms/