Hey!, estoy de vuelta y no, no es solo high pero antes que nada hagamos pausa
Veras todo el valor que tiene este Copy-paste POST si estas enterado del modelo Llama3 y todo el auge de MetaAI
T O T A L M E N T E G R A T I S!
Ojo que lo de total quisas exagere pero para nosotros los mortales casi que ni veremos un centavo de nuestro bolsillo por ello.
Doble pause!, antes te dejaré las referencias de las 3 alternativas para usar Llama 3 (Existen diversas maneras, a mi opinión te traigo las 3 más faciles de usar o Ready-to-use).
La primera y mi favorita dado su facilidad de integración es Langchain; Langchain es un marco de trabajo basado totalmente en AI y bueno ya te digo qué son muchas las ideas locas que pueden salir del framework.
En segundo lugar y no menos importante Cloudflare worker AI; Cloudflare provee un modelo de despliege llamado workers los cuales se encuentran en lugares muy cercanos a tu región y estan adaptados para trabajar de diferente manera entre ellas serverless, es una locura no solo la facilidad de montarte un Llm totalmente gratis y ademas de baja Latencia, bueno que no te digo más, ni en tu maquina corre asi de bueno :)
Por último y orquestador de la comunidad, Ollama, de Ollama te puedo decir que es el Docker de los Llm’s, solo descargas el script y lo demas es ollama run
Me gustaría dar a basto todos los ejemplos posibles tristemente hoy no sera el caso.
Si hasta acá, ya te emociona empezar, preparate puede que necesites una cosilla más
Dado que usaremos Cloudflare y me gusta Cloudflare te invito a crear tu cuenta en caso no la tengas, Vamos es sencillo:
Cuando tengas tu cuenta cloudflare con tu dominio alojado, ubica tu Zone ID y Account ID. LA NECESITAREMOS :)
MANOS AL CÓDIGO!!
# Crea tu proyecto builderbot
pnpm create builderbot@1.1.0
Deberias ver algo asi 👇🏽
Instala cada una de las librerias que te dejo abajo 👇🏽👇🏽
pnpm install @langchain/cloudflare dotenv
Setea en tu fichero ./src/app.ts
import { CloudflareWorkersAI } from "@langchain/cloudflare";
// Necesitas setear tus enviroments CLOUDFLARE_ACCOUNT_ID y CLOUDFLARE_API_TOKEN
const model = new CloudflareWorkersAI({
model: "@cf/meta/llama-3-8b-instruct",
cloudflareAccountId: process.env.CLOUDFLARE_ACCOUNT_ID,
cloudflareApiToken: process.env.CLOUDFLARE_API_TOKEN,
});
Crea tu flow inicial o WELCOME
// Este modelo tiene la particularidad de responder en string :)
// No olvides usar invoke para llamar su función
// La primera llamada suele tardar
const welcomeFlow = addKeyword<Provider, Database>(EVENTS.WELCOME)
.addAction(async (ctx, { flowDynamic }) => {
const answerAI = await model.invoke(ctx.body)
await flowDynamic(answerAI)
})
Tu código debería verse así recuerda esta en ./src/app.ts
corre con npx tsx
src/app.tsTypeScriptCopiar
.
import "dotenv/config"
import { createBot, createProvider, createFlow, addKeyword, EVENTS } from '@builderbot/bot'
import { MemoryDB as Database } from '@builderbot/bot'
import { BaileysProvider as Provider } from '@builderbot/provider-baileys'
import { CloudflareWorkersAI } from "@langchain/cloudflare";
const model = new CloudflareWorkersAI({
model: "@cf/meta/llama-3-8b-instruct",
cloudflareAccountId: process.env.CLOUDFLARE_ACCOUNT_ID,
cloudflareApiToken: process.env.CLOUDFLARE_API_TOKEN,
});
const welcomeFlow = addKeyword<Provider, Database>(EVENTS.WELCOME)
.addAction(async (ctx, { flowDynamic }) => {
const answerAI = await model.invoke(ctx.body)
await flowDynamic(answerAI)
})
const main = async () => {
const adapterFlow = createFlow([welcomeFlow])
const adapterProvider = createProvider(Provider)
const adapterDB = new Database()
const { handleCtx, httpServer } = await createBot({
flow: adapterFlow,
provider: adapterProvider,
database: adapterDB,
})
httpServer(+3000)
}
main()
Happy Codding <3