0.2.2 • Published 6 months ago

@athlera/core v0.2.2

Weekly downloads
-
License
MIT
Repository
-
Last release
6 months ago

@athlera/core

This is our base package, it contains the core functionality of the Athlera framework.

Installation

pnpm add @athlera/core

Tooling

This package contains methods for creating tools. A tool is a piece of code that can be run by the AI to perform a specific task. Tools can be used to perform a wide range of tasks, from simple calculations to complex machine learning models.

Create a new tool using createTool

To create your own tool, you can use the @athlera/core. This package provides helper functions and classes for defining tools.

tools/weather.ts

import { createTool } from '@athlera/core';

const getWeatherInformation = createTool({
    name: 'getWeatherInformation',
    description: 'Show the weather in a given city to the user',
    inputSchema: z.object({
        city: z.string(),
    }),
    execute: async ({ city }: { city: string }) => {
        return `The weather in ${city} is sunny`;
    },
});

export {
    getWeatherInformation
}

Create a new tool using Tool class

You can also create a tool using the Tool class directly.

tools/weather.ts

import { Tool } from '@athlera/core';

class GetLocation extends Tool {
    name = 'getLocation';
    description = 'Get the user location.';
    inputSchema = z.object({});
}

export {
    GetLocation
}

Scaffold a new tool with CLI

To create a new tool with CLI, you can use the @athlera/cli package. This package provides helper functions and classes for defining tools and CLI commands.

pnpx athlera create:tool --name="getWeatherInformation"

This will add a new tool to your project, in the tools directory. You can choose where to place the tool by providing a destination.

pnpx athlera create:tool --name="getWeatherInformation" --destination="src/tools"

Use tool in your code. Example for AI SDK (Vercel)

import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { getWeatherInformation, GetLocation } from '~/tools/weather'
import { createAssistantRuntime } from '@athlera-ai/ai-sdk'

export async function POST(request: Request) {
    const { 
        messages, 
        assistant 
    } = await request.json();

    const runtime = createAssistantRuntime(assistant, {
        tools: [
            getWeatherInformation, 
            new GetLocation
        ],
        messages
    });

    return runtime.stream();
    //return runtime.generate();
}