Pull and Switch Model Revised (#142)

* Update: pull-model only runnable by admins now

* Update: switch-model cannot pull models anymore

* Update: less technical responses

* Update: version increment
This commit is contained in:
Kevin Dang
2024-12-04 21:29:01 -08:00
committed by GitHub
parent 1c8449d578
commit d570a50d46
12 changed files with 52 additions and 62 deletions

View File

@@ -6,7 +6,7 @@ import { UserCommand } from "../utils/index.js";
export const PullModel: SlashCommand = {
name: 'pull-model',
description: 'pulls a model from the ollama model library',
description: 'pulls a model from the ollama model library. Administrator Only',
// set available user options to pass to the command
options: [
@@ -28,18 +28,31 @@ export const PullModel: SlashCommand = {
const channel = await client.channels.fetch(interaction.channelId)
if (!channel || !UserCommand.includes(channel.type)) return
// Admin Command
if (!interaction.memberPermissions?.has('Administrator')) {
interaction.reply({
content: `${interaction.commandName} is an admin command.\n\nPlease contact a server admin to pull the model you want.`,
ephemeral: true
})
return
}
// check if model was already pulled
const modelExists: boolean = await ollama.list()
.then(response => response.models.some((model: ModelResponse) => model.name.startsWith(modelInput)))
try {
// call ollama to pull desired model
if (!modelExists)
if (!modelExists) {
interaction.editReply({
content: `**${modelInput}** could not be found. Please wait patiently as I try to retrieve it...`
})
await ollama.pull({ model: modelInput })
}
} catch (error) {
// could not resolve pull or model unfound
interaction.editReply({
content: `Could not pull/locate the **${modelInput}** model within the [Ollama Model Library](https://ollama.com/library).\n\nPlease check the model library and try again.`
content: `Could not retrieve the **${modelInput}** model. You can find models at [Ollama Model Library](https://ollama.com/library).\n\nPlease check the model library and try again.`
})
return
}
@@ -47,11 +60,11 @@ export const PullModel: SlashCommand = {
// successful interaction
if (modelExists)
interaction.editReply({
content: `**${modelInput}** is already in your local model library.`
content: `**${modelInput}** is already available.`
})
else
interaction.editReply({
content: `Successfully added **${modelInput}** into your local model library.`
content: `Successfully added **${modelInput}**.`
})
}
}