ai-fun est une bibliothèque de fonctions expérimentale basée sur LLM. Il vous permet de définir le but de la fonction, les paramètres et le schéma de sortie et génère et exécute le code pour vous en arrière-plan. Pensez Cursor/GitHub Copilot mais comme une bibliothèque enfichable.
npm i ai-fun
Exemple complet :
example.ts
import { z } from 'zod'
import AIFunctionBuilder from 'ai-fun'
import NodeExec from 'ai-fun/src/backends/node'
import { anthropic } from '@ai-sdk/anthropic'
// Provide a LLM model
const llm = anthropic . chat ( 'claude-3-5-sonnet-20240620' )
// Create a new AI Function Builder using Node/exec backend
const backend = new NodeExec ( )
const ai = new AIFunctionBuilder ( llm , backend )
// Define the input parameters and output parameters of the function
const parameters = z . object ( { a : z . number ( ) , b : z . number ( ) } )
const output = z . number ( )
// Generate the function
const f = await ai . function ( 'add values provided' , parameters , output )
// Call the function and log the result
const result = await f ( { a : 1 , b : 2 } )
console . log ( result )
Sortir:
> bun example.ts
3
Plus d'exemples trouvés sous Exemples/
Lisez ce commentaire Reddit avant de continuer :
La mise en cache des fonctions est activée par défaut pour des mesures de réduction des coûts. Par défaut, les fonctions sont stockées dans un fichier nommé .ai-fun.json
.
Options que vous pouvez fournir à AIFunctionBuilder
:
{
debug ?: boolean
esModules?: boolean
cache?: boolean
cacheFile?: string
}
Vous pouvez créer vos propres backends en implémentant la classe AIFunctionBackend
:
export abstract class AIFunctionBackend {
abstract init ( codeContent : CodeContent ) : Promise < void >
abstract exec ( params : any ) : Promise < any >
}
Voir src/backends/node par exemple.
Exécute les fonctions générées par l'IA à l'aide de la fonction node:vm
exec.
Possibilités :
{
debug ?: boolean
packageFile?: string
installPackages?: boolean
}
En tant que projet open source, nous apprécions les contributions de la communauté. Si vous rencontrez des bugs ou souhaitez ajouter des améliorations, n'hésitez pas à ouvrir un problème ou une pull request.