ai-fun — это экспериментальная библиотека функций на базе LLM. Он позволяет вам определить назначение функции, параметры и схему вывода, а также генерирует и выполняет код для вас в фоновом режиме. Думайте о Cursor/GitHub Copilot, но как о подключаемой библиотеке.
npm i ai-fun
Полный пример:
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 )
Выход:
> bun example.ts
3
Больше примеров можно найти в разделе «Примеры/».
Прежде чем продолжить, прочитайте этот комментарий Reddit:
Кэширование функций включено по умолчанию в целях экономии средств. По умолчанию функции хранятся в файле с именем .ai-fun.json
.
Опции, которые вы можете предоставить AIFunctionBuilder
:
{
debug ?: boolean
esModules?: boolean
cache?: boolean
cacheFile?: string
}
Вы можете создавать свои собственные бэкэнды, реализуя класс AIFunctionBackend
:
export abstract class AIFunctionBackend {
abstract init ( codeContent : CodeContent ) : Promise < void >
abstract exec ( params : any ) : Promise < any >
}
См., например, src/backends/node.
Выполняет функции, сгенерированные ИИ, с помощью функции node:vm
exec.
Параметры:
{
debug ?: boolean
packageFile?: string
installPackages?: boolean
}
Поскольку мы являемся проектом с открытым исходным кодом, мы приветствуем вклад сообщества. Если у вас возникли какие-либо ошибки или вы хотите добавить некоторые улучшения, пожалуйста, не стесняйтесь открыть проблему или запросить извлечение.