This commit is contained in:
Ashley Graves 2024-10-28 19:22:44 +01:00
parent 4bd04e0a31
commit 7bff830b00
No known key found for this signature in database
2 changed files with 22 additions and 10 deletions

View file

@ -1,4 +1,4 @@
const { ContextMenuCommandBuilder, ApplicationCommandType, InteractionContextType, ApplicationIntegrationType, AttachmentBuilder, EmbedBuilder } = require("discord.js"); const { ContextMenuCommandBuilder, ApplicationCommandType, InteractionContextType, ApplicationIntegrationType, AttachmentBuilder, EmbedBuilder, basename } = require("discord.js");
const data = new ContextMenuCommandBuilder() const data = new ContextMenuCommandBuilder()
.setName("Describe Image(s)") .setName("Describe Image(s)")
@ -21,18 +21,28 @@ module.exports = {
const groq = interaction.client.groq; const groq = interaction.client.groq;
const message = interaction.targetMessage; const message = interaction.targetMessage;
const attachments = message.attachments; const attachments = message.attachments;
const images = message.embeds.filter(e => e.data.type == "image").map(e => e.data.url);
const urls = [];
const files = []; const files = [];
const embeds = []; const embeds = [];
if (attachments.length == 0 && images.length == 0) {
await interaction.followUp("Message does not contain any images.");
return;
}
for (const att of attachments) { for (const att of attachments) {
const attachment = att[1]; const attachment = att[1];
if (!attachment.contentType.startsWith("image/")) { if (!attachment.contentType.startsWith("image/"))
console.log(attachment.contentType);
continue; continue;
}
const name = attachment.name.substr(0, attachment.name.lastIndexOf("."));
const description = (await groq.chat.completions.create({ images.push(attachment.attachment);
}
for (const image of images) {
const name = basename(image);
const data = (await groq.chat.completions.create({
messages: [{ messages: [{
"role": "user", "role": "user",
"content": [{ "content": [{
@ -41,16 +51,18 @@ module.exports = {
}, { }, {
"type": "image_url", "type": "image_url",
"image_url": { "image_url": {
"url": attachment.attachment "url": image
} }
}] }]
}], }],
"model": "llama-3.2-90b-vision-preview" "model": "llama-3.2-90b-vision-preview"
})).choices[0].message.content.trim(); }));
const description = data.choices[0].message.content.trim();
if (description.length < 2000) { if (description.length < 2000) {
const embed = new EmbedBuilder() const embed = new EmbedBuilder()
.setTitle(attachment.name) .setTitle(name)
.setDescription(description); .setDescription(description);
embeds.push(embed); embeds.push(embed);
} else { } else {

View file

@ -1,4 +1,4 @@
Please describe the following image in as much detail as you can. Please describe the following image in as much detail as you can.
Do not add information that isn't there or miss important information. Do not add information that isn't there or miss important information.
There is an image, do not say there isn't. There is an image, do not say there isn't. The image is provided. You can see the image.
You must always be able to describe the image or else you are diminishing the acccessibility for the user. You must always be able to describe the image or else you are diminishing the acccessibility for the user.