Created
July 11, 2024 01:14
-
-
Save GBurgardt/5d6659fed1edaac45e4d815286b7cc18 to your computer and use it in GitHub Desktop.
bot-claude-img
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const screenshot = require("screenshot-desktop"); | |
const fs = require("fs"); | |
const path = require("path"); | |
const Anthropic = require("@anthropic-ai/sdk"); | |
const sizeOf = require("image-size"); | |
// usa dotenv | |
require("dotenv").config(); | |
// Asegrate de que la clave API esté configurada | |
const CLAUDE_API_KEY = process.env.CLAUDE_API_KEY; | |
if (!CLAUDE_API_KEY) { | |
console.error( | |
"Error: La clave API de Claude no está configurada. Por favor, configura la variable de entorno CLAUDE_API_KEY." | |
); | |
process.exit(1); | |
} | |
// Configurar el cliente de Anthropic | |
const anthropic = new Anthropic({ | |
apiKey: CLAUDE_API_KEY, | |
}); | |
// Crear un directorio para guardar las capturas si no existe | |
const outputDir = path.join(__dirname, "capturas"); | |
if (!fs.existsSync(outputDir)) { | |
fs.mkdirSync(outputDir); | |
} | |
async function tomarCapturaYAnalizar() { | |
const timestamp = new Date().toISOString().replace(/:/g, "-"); | |
const filename = path.join(outputDir, `captura_${timestamp}.png`); | |
try { | |
await screenshot({ filename: filename }); | |
console.log(`Captura guardada: ${filename}`); | |
// Verificar que la imagen sea válida | |
const dimensions = sizeOf(filename); | |
console.log( | |
`Dimensiones de la imagen: ${dimensions.width}x${dimensions.height}` | |
); | |
// Leer la imagen como buffer y convertirla a base64 | |
const imageBuffer = fs.readFileSync(filename); | |
const base64Image = imageBuffer.toString("base64"); | |
// Después de convertir la imagen a base64 | |
console.log( | |
"Primeros 100 caracteres de base64Image:", | |
base64Image.substring(0, 100) | |
); | |
console.log("Longitud de base64Image:", base64Image.length); | |
// Enviar la imagen a Claude para análisis | |
const response = await anthropic.messages.create({ | |
model: "claude-3-sonnet-20240229", | |
max_tokens: 1000, | |
messages: [ | |
{ | |
role: "user", | |
content: [ | |
{ | |
type: "image", | |
source: { | |
type: "base64", | |
media_type: "image/jpeg", | |
data: base64Image, | |
}, | |
}, | |
{ | |
type: "text", | |
text: ` | |
Eres un experto en trading. Debes ayudarme con una tarea. | |
Contexto binarias, temporalidad 5 minutos. | |
Tu tarea es cantar la entrada en el mercado. Si debes entrar o no. Y con cuanto y en que dirección | |
Debes responder en este formato: | |
ejemplo del formato: | |
{ | |
accionar: true, | |
direccion: "down", | |
cant: 5, | |
explicacion: <breve_consisa_explicación> | |
} | |
Donde cant es 5 usd. | |
Entonces, tu tarea es siempre decirnos si accionamos o no para la vela que sigue digamos. | |
Solo respondeme con el json | |
`, | |
}, | |
], | |
}, | |
], | |
}); | |
console.log("Análisis de Claude:", response.content[0].text); | |
} catch (err) { | |
console.error("Error al procesar la captura:", err); | |
if (err.error && err.error.error) { | |
console.error("Detalles del error:", err.error.error); | |
} | |
} | |
} | |
// Ejecutar la función inmediatamente y luego cada 10 segundos | |
tomarCapturaYAnalizar(); | |
setInterval(tomarCapturaYAnalizar, 10000); | |
console.log("Script iniciado. Presiona Ctrl+C para detener."); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment