-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathapp.py
More file actions
93 lines (83 loc) · 3.07 KB
/
Copy pathapp.py
File metadata and controls
93 lines (83 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from openai import OpenAI
import os
from dotenv import load_dotenv
from rich.console import Console
import time
from rich.panel import Panel
from rich.progress import Progress, SpinnerColumn, TextColumn, TimeElapsedColumn
import base64
# Cargar las variables de entorno desde el archivo .env
load_dotenv()
# Configurar la consola de Rich para mostrar mensajes
console = Console()
# Configurar el cliente de OpenAI con las variables de entorno
client = OpenAI(
base_url=os.getenv("ENDPOINT_URL"),
api_key=os.getenv("API_KEY")
)
# Analiza la imagen usando el endpoint de chat completions
def analyze_image(description, prompt):
# Muestra un spinner de progreso mientras se analiza la imagen
with Progress(SpinnerColumn(), TextColumn("[progress.description]{task.description}"), TimeElapsedColumn(), transient=True, console=console) as progress:
progress.add_task(description=description, total=None)
start_time = time.time()
# Llamada al endpoint de chat completions
response = client.chat.completions.create(
model=os.getenv("MODEL_FOR_VISION"),
messages=prompt
)
end_time = time.time()
elapsed = end_time - start_time
return response.choices[0].message.content, elapsed
# Analizar imagen por URL
prompt_with_url = [
{
"role": "user",
"content": [
{"type": "text", "text": "¿Qué ves en esta imagen?"},
{
"type": "image_url",
"image_url": {
"url": "https://i0.wp.com/www.returngis.net/wp-content/uploads/2025/04/Ollama-con-Prompty.png"
}
}
]
}
]
description_url = "🔍 Analizando la imagen desde URL..."
result_url, time_url = analyze_image(description_url, prompt_with_url)
console.print(
Panel.fit(
f":hourglass_flowing_sand: [green]Tiempo de respuesta:[/green] {time_url:.2f} segundos\n\n"
f":sparkles: [bold yellow]Descripción generada:[/bold yellow]\n"
f"{result_url}",
title="Resultado Imagen desde URL",
border_style="bright_blue"
)
)
# Analizar imagen en base64
with open("/workspaces/hoy-empiezo-con-ia-generativa/images/vision/samples/IMG_2377.png", "rb") as image_file:
base64_image = base64.b64encode(image_file.read()).decode("utf-8")
prompt_with_base64 = [
{
"role": "user",
"content": [
{"type": "text", "text": "¿Qué ves en esta imagen en base64?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
}
]
}
]
description_base64 = "🔍 Analizando imagen en base64..."
result_base64, time_base64 = analyze_image(description_base64, prompt_with_base64)
console.print(
Panel.fit(
f":hourglass_flowing_sand: [green]Tiempo de respuesta:[/green] {time_base64:.2f} segundos\n\n"
f":sparkles: [bold yellow]Descripción generada desde base64:[/bold yellow]\n"
f"{result_base64}",
title="Resultado Imagen en Base64",
border_style="bright_magenta"
)
)