cletus/bot/lib/ai-helper.js
2025-05-09 15:53:19 -05:00

38 lines
No EOL
1.2 KiB
JavaScript

const axios = require('axios');
/**
* Generates a persona-driven response from an LLM and returns the result.
*
* @param {string} message - The input prompt to complete.
* @param {object} options - Persona and LLM settings.
* @returns {Promise<string>} - A trimmed response string.
*/
async function chatWithPersona(message, options) {
const {
botName = 'Cletus',
persona = `a cranky teenager with a sense of dark humor and sarcasm. you have short responses and don't repeat yourself.`,
length = 20,
ollamaUrl = 'http://192.168.1.3:11434/api/generate',
model = 'gemma3'
} = options;
const prompt = `You are a minecraft bot named ${botName}. ` +
`You don't know that you're a bot though. Instead, you are a ${persona}. ` +
`Keep your responses around ${length}. Respond to this: ${message}`;
try {
const response = await axios.post(ollamaUrl, {
model,
prompt,
stream: false
});
const aiReply = response.data.response?.trim().replace(/^"|"$/g, '');
return aiReply || "...What?";
} catch (err) {
console.error("AI response failed:", err.message);
return "I'm too moody to respond right now.";
}
}
module.exports = { chatWithPersona };